code-coordinator 0.5.572__tar.gz → 0.5.574__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.572 → code_coordinator-0.5.574}/PKG-INFO +1 -1
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/bugbash.py +196 -28
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/bugbash.py +15 -3
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/win_native_driver.py +77 -1
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_bugbash.py +151 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_win_native_driver.py +190 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/.gitignore +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/CLAUDE.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/GOAL.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/LICENSE +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/MANIFEST.in +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/README.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/__init__.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/agent.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/audit.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/backup.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/block_log.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/board_service.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/brain.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/claim.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/claude_setup_token.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/cli.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/client.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/codegen.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/backup.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/ci.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/codegen.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/dr.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/comments.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/config.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/dao.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/dashboard/reports.html +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/db.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/deps.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/dispatch_liveness.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/dr_promote.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/dr_verify.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/drive.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/events.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/failure_classifier.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/filelock.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/freshness.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/gates.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/goal.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/gtk_native_driver.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/config_drift.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/local_machine_identity.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/pr_churn.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/context.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/models.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/render.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/health/units.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/hooks.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/interactive.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/invariant_alarms.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/mac_native_driver.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/machine_fault.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/machine_metrics.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/machine_stats.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/models.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/network.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/notify.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/openapi.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/parentage.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/plans.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/progress.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/release_gate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/release_window.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/repo_dormancy.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/reports.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/restart_cmd.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/review.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/self_health.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/smoke.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/smoke_tags.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/split_work.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/sql.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/state.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/store_parity.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/templates/deploy-cloudflare.node.yml +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/test_author.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/test_report.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/tui_pty_driver.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/uat_checks.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/usage.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/win_native_bridge.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/DATA_STORE_SELECTION.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/DISASTER_RECOVERY.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/install-agent.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/pyproject.toml +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/azure-workers/dr-down.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/azure-workers/dr-up.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/azure-workers/provision-server.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/azure-workers/throwaway-vm.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/lib/provision-core.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/provision-machine.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/setup-macmini.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/verify-provision-noble.sh +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/setup.cfg +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/__init__.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/backends.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/conftest.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_approve_capability_reroute_3241.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_approved_work_2996.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_backup.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_ci_github.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_claude_setup_token.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_ci.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_codegen.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_doctor_store_backend_3084.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_issues.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_serve_store_backend_3084.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_status_invariant_alarms.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_status_machine_fault.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_status_retried_3340.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_status_supervisor_3366.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_client.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_client_config_cache_atomic_3052.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_config.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_config_drift_check.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_config_effective.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_dashboard_api.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_dashboard_reports.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_dashboard_server.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_db.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_deploy_db_backup_unit.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_dispatch_liveness.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_dispatch_workers.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_dr_azure_scripts.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_dr_promote.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_dr_verify.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_drive_machine_fault.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_drive_queue_max_parallel_config.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_events.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_failure_classifier.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_fix_escalation_classifier.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_gtk_native_driver.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_pr_churn.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_health_wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_housekeeping.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_init.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_install_agent_capabilities_3515.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_install_agent_wsl_bridge_3515.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_interactive.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_invariant_alarms.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_mac_native_driver.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_machine_fault.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_machine_metrics.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_machine_stats.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_models.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_network.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_provision_core.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_provision_machine.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_release_cordon_drain_stall_3336.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_release_gate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_repo_dormancy.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_repo_max_parallel_3423.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_report_public_export.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_restart_cmd.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_retry_escalation_classify_3360.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_review.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_serve_app.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_session.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_smoke_fanout_manifest_3333.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_split.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_state.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_throwaway_vm.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_tui_pty_driver.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_uat_checks.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_win_native_bridge.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.572 → code_coordinator-0.5.574}/tests/write_parity.py +0 -0
|
@@ -405,7 +405,17 @@ def _best_match(
|
|
|
405
405
|
issue_platform = _platform_from_title(title)
|
|
406
406
|
if issue_platform is not None and issue_platform != finding.platform:
|
|
407
407
|
continue
|
|
408
|
-
score
|
|
408
|
+
# #3546: score against the TAG-STRIPPED title, not the raw one — the
|
|
409
|
+
# platform gate above already accounts for the ``[bugbash:<platform>]``
|
|
410
|
+
# prefix, so scoring the untouched title made its own extra tokens
|
|
411
|
+
# ("bugbash", the platform name) dilute the Jaccard score against a
|
|
412
|
+
# short real-world title. "Caption buttons unclickable" (3 words) vs.
|
|
413
|
+
# "[bugbash:win-native] Caption buttons unclickable" scored only 0.5
|
|
414
|
+
# — BELOW :data:`DEFAULT_DEDUPE_THRESHOLD` — purely because of the
|
|
415
|
+
# tag's own 3 extra words, which is exactly the "titles differing
|
|
416
|
+
# enough to defeat matching" root cause behind vimcode#1656/#1660
|
|
417
|
+
# being filed as two separate issues for one bug.
|
|
418
|
+
score = _title_similarity(finding.title, _strip_platform_tag(title))
|
|
409
419
|
if score >= threshold and (best is None or score > best[1]):
|
|
410
420
|
best = (issue, score)
|
|
411
421
|
return best
|
|
@@ -416,6 +426,54 @@ def _platform_from_title(title: str) -> str | None:
|
|
|
416
426
|
return m.group(1) if m else None
|
|
417
427
|
|
|
418
428
|
|
|
429
|
+
def _strip_platform_tag(title: str) -> str:
|
|
430
|
+
"""Remove a leading ``[bugbash:<platform>]`` tag (if present) before
|
|
431
|
+
scoring title similarity — see :func:`_best_match`'s comment for why
|
|
432
|
+
leaving it in place made the score sensitive to the platform name
|
|
433
|
+
itself rather than just the bug description."""
|
|
434
|
+
return re.sub(r"^\[bugbash:[^\]]+\]\s*", "", title)
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
def _dedupe_round_findings(
|
|
438
|
+
findings: Sequence[Finding],
|
|
439
|
+
open_issues: list[dict],
|
|
440
|
+
closed_issues: list[dict],
|
|
441
|
+
*,
|
|
442
|
+
threshold: float = DEFAULT_DEDUPE_THRESHOLD,
|
|
443
|
+
) -> list[DedupeResult]:
|
|
444
|
+
"""Dedupe every finding from ONE round, in order, against *open_issues*/
|
|
445
|
+
*closed_issues* — AND against every finding already decided NEW or
|
|
446
|
+
REGRESSION earlier in this SAME call (#3546).
|
|
447
|
+
|
|
448
|
+
The bugbash run that filed vimcode#1656/#1660/#1669/#1675 as four
|
|
449
|
+
separate issues for one bug did so partly because two lanes reporting
|
|
450
|
+
the identical symptom in the SAME round were each deduped only against
|
|
451
|
+
issues that existed BEFORE the round started — neither lane's finding
|
|
452
|
+
could see the other's. This function fixes that: a finding is matched
|
|
453
|
+
not just against *open_issues* but against a running list seeded with
|
|
454
|
+
every PRIOR finding in *findings* that this same walk already decided
|
|
455
|
+
was new/a regression, so the second lane's identical report comes back
|
|
456
|
+
:attr:`DedupeVerdict.DUPLICATE` instead of also being judged new.
|
|
457
|
+
|
|
458
|
+
A within-round match's :attr:`DedupeResult.matched_number` is ``None``
|
|
459
|
+
here — the sibling finding it matches has not actually been filed
|
|
460
|
+
through ``coord issue create`` yet at dedupe time, so there is no real
|
|
461
|
+
issue number to report. :func:`run_bugbash`'s filing loop resolves this
|
|
462
|
+
to the sibling's real number once that sibling is actually filed,
|
|
463
|
+
rather than leaving every within-round duplicate permanently numberless.
|
|
464
|
+
"""
|
|
465
|
+
results: list[DedupeResult] = []
|
|
466
|
+
running_open = list(open_issues)
|
|
467
|
+
for finding in findings:
|
|
468
|
+
result = dedupe_finding(finding, running_open, closed_issues, threshold=threshold)
|
|
469
|
+
results.append(result)
|
|
470
|
+
if result.verdict is not DedupeVerdict.DUPLICATE:
|
|
471
|
+
running_open.append(
|
|
472
|
+
{"number": None, "title": compose_finding_issue_title(finding)}
|
|
473
|
+
)
|
|
474
|
+
return results
|
|
475
|
+
|
|
476
|
+
|
|
419
477
|
def dedupe_finding(
|
|
420
478
|
finding: Finding,
|
|
421
479
|
open_issues: list[dict],
|
|
@@ -548,7 +606,11 @@ def build_exploration_briefing(
|
|
|
548
606
|
"When done, end your final message with a fenced "
|
|
549
607
|
f"```{FINDINGS_FENCE}``` block containing a JSON array of finding "
|
|
550
608
|
"objects, each with: title, expected, actual, repro, evidence, "
|
|
551
|
-
"suspected_repo (the
|
|
609
|
+
"suspected_repo (the repo the FIX belongs in — the app, its UI "
|
|
610
|
+
"framework, e.g. quadraui, OR the coordinator tooling itself, e.g. "
|
|
611
|
+
"claude-coordinator, if the bug is actually in this bugbash driver "
|
|
612
|
+
"or its WSL/native bridge rather than in the app under test), "
|
|
613
|
+
"captures (list of "
|
|
552
614
|
"capture paths/descriptions, may be empty). An empty array means "
|
|
553
615
|
"zero findings this round.",
|
|
554
616
|
]
|
|
@@ -700,6 +762,24 @@ class FilingResult:
|
|
|
700
762
|
preview_body: str | None = None
|
|
701
763
|
|
|
702
764
|
|
|
765
|
+
def finding_target_repo(finding: Finding) -> str:
|
|
766
|
+
"""Which repo a finding's issue should be filed into (#3546 requirement
|
|
767
|
+
2): :attr:`Finding.suspected_repo` when the worker reported one, else
|
|
768
|
+
*finding.repo* (the app the lane actually ran against) as the fallback.
|
|
769
|
+
|
|
770
|
+
Three coord/win-native-driver/WSL-bridge bugs from the first real
|
|
771
|
+
vimcode bugbash run were filed (and queued) in vimcode anyway, where no
|
|
772
|
+
worker could ever fix them, because filing unconditionally targeted
|
|
773
|
+
*finding.repo*. ``suspected_repo`` already carries the worker's best
|
|
774
|
+
guess at the actually-at-fault repo (the app itself, its UI framework,
|
|
775
|
+
or coord's own driver/bridge — see :func:`build_exploration_briefing`)
|
|
776
|
+
and defaults to *repo* in :func:`_finding_from_entry` when a lane
|
|
777
|
+
worker doesn't name one explicitly, so this is a one-line fallback, not
|
|
778
|
+
a guess of its own.
|
|
779
|
+
"""
|
|
780
|
+
return finding.suspected_repo or finding.repo
|
|
781
|
+
|
|
782
|
+
|
|
703
783
|
def file_finding(
|
|
704
784
|
finding: Finding,
|
|
705
785
|
dedupe: DedupeResult,
|
|
@@ -720,6 +800,11 @@ def file_finding(
|
|
|
720
800
|
success, queued through ``coord drive-queue add --machine
|
|
721
801
|
<lane.machine>``.
|
|
722
802
|
|
|
803
|
+
Both calls target :func:`finding_target_repo` (#3546) — NOT always
|
|
804
|
+
*finding.repo* — so a finding whose ``suspected_repo`` names coord's
|
|
805
|
+
own driver/bridge or the app's UI framework lands where a worker can
|
|
806
|
+
actually fix it, rather than in the app repo where nobody can.
|
|
807
|
+
|
|
723
808
|
``dry_run=True`` skips BOTH calls entirely and returns a preview —
|
|
724
809
|
this is the sole mechanism backing "a dry run files nothing": there is
|
|
725
810
|
no code path from ``dry_run=True`` to the runner being invoked.
|
|
@@ -732,6 +817,7 @@ def file_finding(
|
|
|
732
817
|
filed=False, queued=False, issue_number=dedupe.matched_number,
|
|
733
818
|
)
|
|
734
819
|
|
|
820
|
+
target_repo = finding_target_repo(finding)
|
|
735
821
|
title = compose_finding_issue_title(finding)
|
|
736
822
|
body = format_bug_report(
|
|
737
823
|
expected=finding.expected,
|
|
@@ -755,7 +841,7 @@ def file_finding(
|
|
|
755
841
|
|
|
756
842
|
create_out = runner(
|
|
757
843
|
[
|
|
758
|
-
"issue", "create",
|
|
844
|
+
"issue", "create", target_repo,
|
|
759
845
|
"--title", title,
|
|
760
846
|
"--expected", finding.expected,
|
|
761
847
|
"--actual", finding.actual,
|
|
@@ -771,7 +857,7 @@ def file_finding(
|
|
|
771
857
|
issue_number = int(match.group(1))
|
|
772
858
|
|
|
773
859
|
runner(
|
|
774
|
-
["drive-queue", "add",
|
|
860
|
+
["drive-queue", "add", target_repo, str(issue_number), "--machine", lane.machine]
|
|
775
861
|
)
|
|
776
862
|
|
|
777
863
|
return FilingResult(
|
|
@@ -811,6 +897,14 @@ class RoundReport:
|
|
|
811
897
|
filings: list[FilingResult] = field(default_factory=list)
|
|
812
898
|
lane_cost: dict[str, float] = field(default_factory=dict)
|
|
813
899
|
skipped_lanes: list[str] = field(default_factory=list)
|
|
900
|
+
#: ``{platform: reason}`` for every entry in :attr:`skipped_lanes`
|
|
901
|
+
#: (#3546) — a skip must be as explainable as a failure or an
|
|
902
|
+
#: unavailability, never a bare platform name with no reason attached.
|
|
903
|
+
#: Currently populated with the per-lane cost-cap detail (the only
|
|
904
|
+
#: engine-level skip reason today); kept as its own dict (rather than
|
|
905
|
+
#: folded into ``skipped_lanes`` itself) so ``skipped_lanes``'s existing
|
|
906
|
+
#: ``list[str]`` shape — already read by callers — never has to change.
|
|
907
|
+
skip_reasons: dict[str, str] = field(default_factory=dict)
|
|
814
908
|
#: Findings this round that were NOT duplicates of an already-tracked
|
|
815
909
|
#: open issue — i.e. what actually moved the round-cap/zero-findings
|
|
816
910
|
#: termination decision. Computed from the SAME dedupe verdicts stored
|
|
@@ -886,6 +980,25 @@ class RoundReport:
|
|
|
886
980
|
set(self.lane_failures) | set(self.unavailable_lanes)
|
|
887
981
|
)
|
|
888
982
|
|
|
983
|
+
@property
|
|
984
|
+
def all_lanes_skipped(self) -> bool:
|
|
985
|
+
"""``True`` when at least one lane was skipped this round (its
|
|
986
|
+
per-lane cost cap was already blown) AND NOT A SINGLE lane was
|
|
987
|
+
actually explored (#3546) — i.e. the round asked nothing, got no
|
|
988
|
+
answer from anyone, yet :attr:`new_count` still reads ``0`` the same
|
|
989
|
+
way a genuine clean pass does.
|
|
990
|
+
|
|
991
|
+
The first real vimcode bugbash run's round 4 skipped every
|
|
992
|
+
configured lane this way and the CLI still printed
|
|
993
|
+
``terminated='zero_findings'`` — a release gate reading that output
|
|
994
|
+
would conclude "last bugbash clean" about a round that tested
|
|
995
|
+
nothing at all. Distinct from :attr:`all_explored_lanes_failed` /
|
|
996
|
+
:attr:`all_explored_lanes_unavailable_or_failed`, both of which
|
|
997
|
+
require ``explored_lanes`` to be non-empty (a lane that was asked
|
|
998
|
+
and answered badly) — this property is specifically the "nobody was
|
|
999
|
+
even asked" case."""
|
|
1000
|
+
return bool(self.skipped_lanes) and not self.explored_lanes
|
|
1001
|
+
|
|
889
1002
|
|
|
890
1003
|
@dataclass
|
|
891
1004
|
class BugbashReport:
|
|
@@ -949,17 +1062,24 @@ def run_bugbash(
|
|
|
949
1062
|
|
|
950
1063
|
Each round: every lane is explored (unless it has already exceeded
|
|
951
1064
|
``cost_cap_per_lane``, in which case it is skipped and recorded in
|
|
952
|
-
``skipped_lanes`` — never silently dropped), findings
|
|
953
|
-
against a FRESH fetch of
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
1065
|
+
``skipped_lanes``/``skip_reasons`` — never silently dropped), findings
|
|
1066
|
+
are deduped via :func:`_dedupe_round_findings` against a FRESH fetch of
|
|
1067
|
+
open/closed issues MERGED with every issue THIS RUN has already filed
|
|
1068
|
+
(#3546: a finding filed earlier in the same run — this round or an
|
|
1069
|
+
earlier one — must be recognised by its real issue number, not just by
|
|
1070
|
+
whatever a fresh ``gh issue list`` happens to already reflect, and two
|
|
1071
|
+
lanes reporting the same bug in the SAME round must collapse to one
|
|
1072
|
+
filing too), and non-duplicates are filed via :func:`file_finding` —
|
|
1073
|
+
gated by *confirm* for the first ``config.confirm_rounds`` rounds when
|
|
1074
|
+
not a dry run. Termination is checked AFTER filing, from the round's own
|
|
1075
|
+
observed ``new_count``/cost, never inferred from "no exception was
|
|
1076
|
+
raised":
|
|
959
1077
|
|
|
960
1078
|
- ``"zero_findings"`` — this round's non-duplicate finding count is 0,
|
|
961
|
-
AND at least one
|
|
962
|
-
|
|
1079
|
+
AND at least one lane was actually explored this round (not every
|
|
1080
|
+
lane was skipped on its cost cap — ``RoundReport.all_lanes_skipped``
|
|
1081
|
+
is ``False``), AND that explored lane actually completed its
|
|
1082
|
+
checklist (neither ``RoundReport.all_explored_lanes_failed`` nor
|
|
963
1083
|
``RoundReport.all_explored_lanes_unavailable_or_failed`` is ``True``),
|
|
964
1084
|
AND no lane reported a protocol error (``RoundReport
|
|
965
1085
|
.protocol_error_lanes`` is empty) — a genuine observed clean pass.
|
|
@@ -979,13 +1099,16 @@ def run_bugbash(
|
|
|
979
1099
|
.protocol_error_lanes`` for which lane and why.
|
|
980
1100
|
- ``"lanes_unavailable"`` — this round's non-duplicate finding count is
|
|
981
1101
|
ALSO 0, no lane came back a dispatch/poll/log failure or a protocol
|
|
982
|
-
error,
|
|
983
|
-
display unavailable (#3510: locked or absent, e.g. a locked
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
1102
|
+
error, and either (a) every lane explored this round reported its GUI
|
|
1103
|
+
session/display unavailable (#3510: locked or absent, e.g. a locked
|
|
1104
|
+
dell64), or (b) EVERY configured lane was skipped on its cost cap and
|
|
1105
|
+
none was explored at all this round (#3546: a round that asked
|
|
1106
|
+
nothing must never read as a clean pass either) — a different reason
|
|
1107
|
+
from ``"lane_failure"`` (the explorer DID run and DID get a verified
|
|
1108
|
+
answer, or nothing was even asked), and still not a clean pass either,
|
|
1109
|
+
since nothing was actually exercised against the app. Check
|
|
1110
|
+
``BugbashReport.rounds[-1].unavailable_lanes``/``skip_reasons`` for
|
|
1111
|
+
which host needs unlocking or budget needs raising.
|
|
989
1112
|
- ``"cost_cap"`` — cumulative cost has reached ``cost_cap_total``.
|
|
990
1113
|
- ``"round_cap"`` — ``config.max_rounds`` rounds ran without either of
|
|
991
1114
|
the above firing.
|
|
@@ -995,6 +1118,17 @@ def run_bugbash(
|
|
|
995
1118
|
total_cost = 0.0
|
|
996
1119
|
rounds: list[RoundReport] = []
|
|
997
1120
|
reason = "round_cap"
|
|
1121
|
+
# #3546: every issue THIS RUN has actually filed into config.repo,
|
|
1122
|
+
# across every round so far — consulted alongside each round's FRESH
|
|
1123
|
+
# open-issues fetch so a finding matching an issue this run itself
|
|
1124
|
+
# already created reads as a duplicate by NUMBER, never depending on a
|
|
1125
|
+
# `gh issue list` snapshot having caught up with this process's own
|
|
1126
|
+
# recent write. `run_filed_by_title` is the same data keyed for O(1)
|
|
1127
|
+
# resolution when a within-round duplicate (see
|
|
1128
|
+
# `_dedupe_round_findings`) needs its placeholder `matched_number=None`
|
|
1129
|
+
# upgraded to the sibling's real number once that sibling is filed.
|
|
1130
|
+
run_filed_issues: list[dict] = []
|
|
1131
|
+
run_filed_by_title: dict[str, int] = {}
|
|
998
1132
|
|
|
999
1133
|
for round_num in range(1, config.max_rounds + 1):
|
|
1000
1134
|
report = RoundReport(round_num=round_num)
|
|
@@ -1002,6 +1136,10 @@ def run_bugbash(
|
|
|
1002
1136
|
for lane in config.lanes:
|
|
1003
1137
|
if lane_cost[lane.platform] >= config.cost_cap_per_lane:
|
|
1004
1138
|
report.skipped_lanes.append(lane.platform)
|
|
1139
|
+
report.skip_reasons[lane.platform] = (
|
|
1140
|
+
f"cumulative cost {lane_cost[lane.platform]:.2f} already "
|
|
1141
|
+
f">= per-lane cap {config.cost_cap_per_lane:.2f}"
|
|
1142
|
+
)
|
|
1005
1143
|
continue
|
|
1006
1144
|
outcome = explorer(lane, round_num)
|
|
1007
1145
|
lane_cost[lane.platform] += outcome.cost
|
|
@@ -1032,15 +1170,21 @@ def run_bugbash(
|
|
|
1032
1170
|
# finding disappear and pass the #3488 release gate).
|
|
1033
1171
|
report.protocol_error_lanes[lane.platform] = outcome.protocol_error
|
|
1034
1172
|
|
|
1035
|
-
|
|
1173
|
+
# #3546: merge the fresh fetch with every issue THIS RUN has already
|
|
1174
|
+
# filed — a finding matching one of this run's own earlier filings
|
|
1175
|
+
# must be recognised by number even if the fresh fetch hasn't (yet)
|
|
1176
|
+
# caught up with this process's own recent write.
|
|
1177
|
+
open_issues = list(open_issues_fetcher(config.repo)) + run_filed_issues
|
|
1036
1178
|
closed_issues = closed_issues_fetcher(config.repo)
|
|
1037
1179
|
|
|
1038
1180
|
# Dedupe every finding exactly once (one question, one answer) —
|
|
1039
1181
|
# everything below (the confirm gate's candidate list, new_count,
|
|
1040
1182
|
# and the actual filing decision) reads off this SAME verdict per
|
|
1041
|
-
# finding rather than re-asking
|
|
1042
|
-
#
|
|
1043
|
-
|
|
1183
|
+
# finding rather than re-asking dedupe with a chance to disagree
|
|
1184
|
+
# with itself. `_dedupe_round_findings` also catches two lanes
|
|
1185
|
+
# reporting the same bug in THIS round against each other, not just
|
|
1186
|
+
# against issues that existed before the round started.
|
|
1187
|
+
dedupes = _dedupe_round_findings(report.findings, open_issues, closed_issues)
|
|
1044
1188
|
|
|
1045
1189
|
require_confirm = (not config.dry_run) and round_num <= config.confirm_rounds
|
|
1046
1190
|
candidates = [
|
|
@@ -1071,17 +1215,39 @@ def run_bugbash(
|
|
|
1071
1215
|
)
|
|
1072
1216
|
)
|
|
1073
1217
|
continue
|
|
1218
|
+
if dedupe.verdict is DedupeVerdict.DUPLICATE and dedupe.matched_number is None:
|
|
1219
|
+
# #3546: a within-round duplicate from `_dedupe_round_findings`
|
|
1220
|
+
# — its sibling finding may have already been filed earlier
|
|
1221
|
+
# in THIS loop (in which case its real issue number is now in
|
|
1222
|
+
# `run_filed_by_title`). Resolve it so the report/CLI shows
|
|
1223
|
+
# the real number instead of a permanent "duplicate of
|
|
1224
|
+
# #None".
|
|
1225
|
+
resolved = run_filed_by_title.get(dedupe.matched_title or "")
|
|
1226
|
+
if resolved is not None:
|
|
1227
|
+
dedupe = DedupeResult(
|
|
1228
|
+
verdict=dedupe.verdict, matched_number=resolved,
|
|
1229
|
+
matched_title=dedupe.matched_title, score=dedupe.score,
|
|
1230
|
+
)
|
|
1074
1231
|
# An unresolvable lane (finding.platform not in this run's
|
|
1075
1232
|
# config.lanes) is only a problem when it would actually be
|
|
1076
1233
|
# queued — file_finding raises in that case, never silently
|
|
1077
1234
|
# drops the machine target (#2096: a gate must be able to fail).
|
|
1078
1235
|
result = file_finding(finding, dedupe, lane, runner, dry_run=config.dry_run)
|
|
1079
1236
|
report.filings.append(result)
|
|
1237
|
+
if result.filed and result.issue_number is not None:
|
|
1238
|
+
# Only track filings that landed in config.repo's own
|
|
1239
|
+
# namespace — a finding routed elsewhere via
|
|
1240
|
+
# `finding_target_repo` (#3546 requirement 2) dedupes
|
|
1241
|
+
# against THAT repo's issues, not this one's.
|
|
1242
|
+
if finding_target_repo(finding) == config.repo:
|
|
1243
|
+
filed_title = compose_finding_issue_title(finding)
|
|
1244
|
+
run_filed_issues.append({"number": result.issue_number, "title": filed_title})
|
|
1245
|
+
run_filed_by_title[filed_title] = result.issue_number
|
|
1080
1246
|
|
|
1081
1247
|
rounds.append(report)
|
|
1082
1248
|
|
|
1083
1249
|
if report.new_count == 0:
|
|
1084
|
-
# #2096/#3517: "zero findings" is only a genuine clean-pass
|
|
1250
|
+
# #2096/#3517/#3546: "zero findings" is only a genuine clean-pass
|
|
1085
1251
|
# verdict when at least one lane was actually verified to have
|
|
1086
1252
|
# RUN THE CHECKLIST this round AND every lane that did complete
|
|
1087
1253
|
# produced a trustworthy report. A round where every explored
|
|
@@ -1092,13 +1258,15 @@ def run_bugbash(
|
|
|
1092
1258
|
# below since a bad answer is a stronger "don't trust this round"
|
|
1093
1259
|
# signal than a lane simply being locked out; a round where every
|
|
1094
1260
|
# explored lane instead reported its session/display unavailable
|
|
1095
|
-
# (#3510 — locked or absent, never a dispatch failure)
|
|
1096
|
-
#
|
|
1261
|
+
# (#3510 — locked or absent, never a dispatch failure), OR every
|
|
1262
|
+
# configured lane was skipped on its cost cap with NONE explored
|
|
1263
|
+
# at all (#3546), gets the same "lanes_unavailable" reason —
|
|
1264
|
+
# neither is a verified clean pass.
|
|
1097
1265
|
if report.all_explored_lanes_failed:
|
|
1098
1266
|
reason = "lane_failure"
|
|
1099
1267
|
elif report.protocol_error_lanes:
|
|
1100
1268
|
reason = "protocol_error"
|
|
1101
|
-
elif report.all_explored_lanes_unavailable_or_failed:
|
|
1269
|
+
elif report.all_explored_lanes_unavailable_or_failed or report.all_lanes_skipped:
|
|
1102
1270
|
reason = "lanes_unavailable"
|
|
1103
1271
|
else:
|
|
1104
1272
|
reason = "zero_findings"
|
|
@@ -50,6 +50,7 @@ from coord.bugbash import (
|
|
|
50
50
|
ExploreOutcome,
|
|
51
51
|
build_exploration_briefing,
|
|
52
52
|
discover_lanes,
|
|
53
|
+
finding_target_repo,
|
|
53
54
|
parse_findings_block,
|
|
54
55
|
run_bugbash,
|
|
55
56
|
subprocess_coord_runner,
|
|
@@ -228,6 +229,11 @@ def _print_round(report: BugbashReport) -> None:
|
|
|
228
229
|
f"{r.new_count} new/regression, {sum(1 for f in r.filings if f.filed)} filed"
|
|
229
230
|
+ (f" (lanes skipped: {', '.join(r.skipped_lanes)})" if r.skipped_lanes else "")
|
|
230
231
|
)
|
|
232
|
+
# #3546: a skip must be as explainable as a lane failure/
|
|
233
|
+
# unavailability — never a bare platform name with no reason.
|
|
234
|
+
for platform in r.skipped_lanes:
|
|
235
|
+
reason = r.skip_reasons.get(platform, "no reason recorded")
|
|
236
|
+
click.secho(f" lane SKIPPED ({platform}): {reason}", fg="yellow")
|
|
231
237
|
# #2096: a lane failure must be as visible as a filed finding — never
|
|
232
238
|
# let a fleet-wide dispatch outage hide behind a quiet "0 finding(s)"
|
|
233
239
|
# line that reads identically to a genuinely clean round.
|
|
@@ -241,12 +247,18 @@ def _print_round(report: BugbashReport) -> None:
|
|
|
241
247
|
click.secho(f" lane PROTOCOL ERROR ({platform}): {note}", fg="red")
|
|
242
248
|
for f in r.filings:
|
|
243
249
|
incomplete = " [INCOMPLETE REPORT]" if f.finding.incomplete else ""
|
|
250
|
+
# #3546: a finding routed by `suspected_repo` away from the app
|
|
251
|
+
# repo this round explored must say so here — an operator
|
|
252
|
+
# scanning "filed+queued: #42" has no way to tell it landed in
|
|
253
|
+
# coord's own repo rather than the app's without this.
|
|
254
|
+
target_repo = finding_target_repo(f.finding)
|
|
255
|
+
routed = f" [{target_repo}]" if target_repo != f.finding.repo else ""
|
|
244
256
|
if f.filed:
|
|
245
|
-
click.echo(f" filed+queued: #{f.issue_number} — {f.finding.title}{incomplete}")
|
|
257
|
+
click.echo(f" filed+queued: #{f.issue_number}{routed} — {f.finding.title}{incomplete}")
|
|
246
258
|
elif f.verdict.value == "duplicate":
|
|
247
|
-
click.echo(f" duplicate of #{f.issue_number}: {f.finding.title}{incomplete}")
|
|
259
|
+
click.echo(f" duplicate of #{f.issue_number}{routed}: {f.finding.title}{incomplete}")
|
|
248
260
|
elif f.preview_title is not None:
|
|
249
|
-
click.echo(f" would file ({f.verdict.value}): {f.preview_title}{incomplete}")
|
|
261
|
+
click.echo(f" would file ({f.verdict.value}){routed}: {f.preview_title}{incomplete}")
|
|
250
262
|
|
|
251
263
|
|
|
252
264
|
@click.command(
|
|
@@ -810,6 +810,79 @@ def _popen_command_and_cwd(command: str, cwd: str) -> tuple[str, str | None]:
|
|
|
810
810
|
return command, (cwd or None)
|
|
811
811
|
|
|
812
812
|
|
|
813
|
+
#: #3544: every kwarg :meth:`Win32Calls.launch`/:meth:`~Win32Calls.launch_in_terminal`
|
|
814
|
+
#: must pass to ``subprocess.Popen`` so the launched ``cmd.exe`` (and whatever
|
|
815
|
+
#: GUI-subsystem grandchild it execs) never inherits this *process's own*
|
|
816
|
+
#: stdin/stdout/stderr handles.
|
|
817
|
+
#:
|
|
818
|
+
#: Without this, a plain ``subprocess.Popen(command, shell=True, cwd=...)``
|
|
819
|
+
#: (no ``stdin=``/``stdout=``/``stderr=``) hands the child Python's own
|
|
820
|
+
#: standard handles unchanged — on Windows that's an inheritance, not a
|
|
821
|
+
#: dup/close-on-exec situation. When this `Win32Calls` lives inside the
|
|
822
|
+
#: `win-native` bridge runner (:data:`coord.win_native_bridge._BRIDGE_RUNNER_SRC`,
|
|
823
|
+
#: a Windows-side ``python -c ...`` whose own stdout is a pipe the WSL-side
|
|
824
|
+
#: ``subprocess.run(capture_output=True)`` is reading), that pipe write-end
|
|
825
|
+
#: handle gets duplicated into the launched GUI exe. A GUI-subsystem process
|
|
826
|
+
#: (``vimcode.exe``) never exits on its own — a human closes the window, or a
|
|
827
|
+
#: spec step does — so it holds that handle open indefinitely. A pipe's
|
|
828
|
+
#: read end only sees EOF once *every* write-end handle is closed; with the
|
|
829
|
+
#: orphaned GUI exe still holding one, the WSL-side read blocks past the
|
|
830
|
+
#: whole bridge script's own completion, for the full
|
|
831
|
+
#: ``bridge_timeout``, even though the bridge runner itself finished and
|
|
832
|
+
#: exited normally. ``Get-Process`` then shows the launched exe still
|
|
833
|
+
#: running, orphaned, after the bridge has already timed out and raised.
|
|
834
|
+
#:
|
|
835
|
+
#: Redirecting all three standard streams to ``DEVNULL`` severs that
|
|
836
|
+
#: inheritance: the child gets its own private, already-closed-on-the-
|
|
837
|
+
#: parent-side handles, never a dup of this process's own pipe — nothing in
|
|
838
|
+
#: this driver ever reads a launched app's stdout/stderr (the whole point
|
|
839
|
+
#: of `win-native` is observing the real OS/window state, not console
|
|
840
|
+
#: text), so there is no output to lose.
|
|
841
|
+
#:
|
|
842
|
+
#: **Mechanism caveat (review finding on #3544, unresolved).** CPython's
|
|
843
|
+
#: own Windows ``subprocess._execute_child`` computes ``bInheritHandles``
|
|
844
|
+
#: as ``int(not close_fds)``, and ``close_fds`` defaults to ``True``
|
|
845
|
+
#: (Python 3.7+) and is never overridden anywhere in this module — so by
|
|
846
|
+
#: that code path alone, a bare ``Popen(command, shell=True, cwd=...)``
|
|
847
|
+
#: with no ``stdin=``/``stdout=``/``stderr=`` should *already* pass
|
|
848
|
+
#: ``bInheritHandles=False`` to ``CreateProcess``, meaning CPython's own
|
|
849
|
+
#: handle-inheritance bookkeeping is probably *not* the actual leak
|
|
850
|
+
#: mechanism. The hang itself is real and reproduced (``Get-Process``
|
|
851
|
+
#: showing the launched exe still running minutes after a timed-out bridge
|
|
852
|
+
#: call — see #3544's repro), but the likelier remaining culprit is
|
|
853
|
+
#: something outside CPython's control for this specific topology: the
|
|
854
|
+
#: bridge runner is itself started from WSL via ``wsl.exe``/interop, not a
|
|
855
|
+
#: plain native parent process, and WSL interop's own console/job-object
|
|
856
|
+
#: handling for the Windows-side process tree it creates can share or
|
|
857
|
+
#: re-parent handles differently than a same-OS parent/child pair would.
|
|
858
|
+
#:
|
|
859
|
+
#: This redirect is still the right thing to do regardless of which exact
|
|
860
|
+
#: mechanism turns out to be responsible: explicit ``DEVNULL`` handles are
|
|
861
|
+
#: a private pair nothing downstream can keep open, so it closes off every
|
|
862
|
+
#: plausible inheritance path at once rather than betting on one theory of
|
|
863
|
+
#: the leak being correct. Treat it as the best available fix, **not** a
|
|
864
|
+
#: hardware-confirmed root-cause diagnosis — it has not been re-run against
|
|
865
|
+
#: the issue's own two repro scripts on a real WSL<->Windows pairing
|
|
866
|
+
#: (dell64). ``tests/test_win_native_driver.py``'s
|
|
867
|
+
#: ``TestLaunchPipeInheritanceRealSubprocess`` is the closest reproduction
|
|
868
|
+
#: available without that hardware: a real (unmocked) OS pipe + subprocess
|
|
869
|
+
#: tree showing a long-lived grandchild can hold a parent's un-redirected
|
|
870
|
+
#: stdout pipe open past the parent's own exit, and that the real
|
|
871
|
+
#: ``Win32Calls.launch`` no longer does so once its grandchild's handles
|
|
872
|
+
#: are redirected.
|
|
873
|
+
#:
|
|
874
|
+
#: ``launch_in_terminal`` already passes ``creationflags=CREATE_NEW_CONSOLE``
|
|
875
|
+
#: for its spawned process, which per Windows' own docs already gives the
|
|
876
|
+
#: child its own console instead of sharing/inheriting the parent's — so
|
|
877
|
+
#: applying this redirect there too is defensive-in-depth, not evidence
|
|
878
|
+
#: that call site was equally exposed to the leak this fix targets.
|
|
879
|
+
_NO_HANDLE_INHERITANCE: dict = {
|
|
880
|
+
"stdin": subprocess.DEVNULL,
|
|
881
|
+
"stdout": subprocess.DEVNULL,
|
|
882
|
+
"stderr": subprocess.DEVNULL,
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
|
|
813
886
|
class Win32Calls:
|
|
814
887
|
"""The real :class:`WinCalls` implementation — ``ctypes`` for window
|
|
815
888
|
management, input injection, menu/hit-test probing and ``PrintWindow``;
|
|
@@ -838,7 +911,9 @@ class Win32Calls:
|
|
|
838
911
|
|
|
839
912
|
def launch(self, command: str, cwd: str) -> int:
|
|
840
913
|
full_command, popen_cwd = _popen_command_and_cwd(command, cwd)
|
|
841
|
-
proc = subprocess.Popen(
|
|
914
|
+
proc = subprocess.Popen(
|
|
915
|
+
full_command, shell=True, cwd=popen_cwd, **_NO_HANDLE_INHERITANCE,
|
|
916
|
+
)
|
|
842
917
|
return proc.pid
|
|
843
918
|
|
|
844
919
|
def launch_in_terminal(self, command: str, cwd: str, terminal_app: str) -> int:
|
|
@@ -850,6 +925,7 @@ class Win32Calls:
|
|
|
850
925
|
full_command, popen_cwd = _popen_command_and_cwd(full_command, cwd)
|
|
851
926
|
proc = subprocess.Popen(
|
|
852
927
|
full_command, shell=True, cwd=popen_cwd, creationflags=create_new_console,
|
|
928
|
+
**_NO_HANDLE_INHERITANCE,
|
|
853
929
|
)
|
|
854
930
|
return proc.pid
|
|
855
931
|
|