code-coordinator 0.5.454__tar.gz → 0.5.455__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.454 → code_coordinator-0.5.455}/PKG-INFO +1 -1
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/smoke.py +239 -57
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_smoke.py +328 -2
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.gitignore +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/CLAUDE.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/GOAL.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/LICENSE +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/MANIFEST.in +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/README.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/__init__.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/agent.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/audit.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/backup.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/block_log.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/board_service.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/brain.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/claim.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/cli.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/client.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/codegen.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/backup.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/codegen.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/dr.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/comments.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/config.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dao.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/db.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deps.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dr_promote.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dr_verify.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/drive.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/events.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/filelock.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/freshness.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/gates.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/goal.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/config_drift.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/pr_churn.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/context.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/models.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/render.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/units.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/hooks.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/interactive.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/machine_metrics.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/machine_stats.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/models.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/network.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notify.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/openapi.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/parentage.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/plans.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/progress.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/release_window.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/repo_dormancy.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/reports.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/review.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/self_health.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/split_work.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/sql.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/state.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/store_parity.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/templates/deploy-cloudflare.node.yml +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/test_author.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/test_report.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/uat_checks.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/usage.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/DATA_STORE_SELECTION.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/DISASTER_RECOVERY.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/install-agent.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/pyproject.toml +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/dr-down.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/dr-up.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/provision-server.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/throwaway-vm.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/lib/provision-core.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/provision-machine.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/setup-macmini.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/verify-provision-noble.sh +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/setup.cfg +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/__init__.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/backends.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/conftest.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_approve_capability_reroute_3241.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_approved_work_2996.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_backup.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_ci_github.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_codegen.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_doctor_store_backend_3084.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_serve_store_backend_3084.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_client.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_client_config_cache_atomic_3052.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_config.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_config_drift_check.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dashboard_api.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dashboard_server.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_db.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_db_backup_unit.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dr_azure_scripts.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dr_promote.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dr_verify.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_events.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_pr_churn.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_housekeeping.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_init.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_machine_metrics.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_machine_stats.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_models.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_network.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_provision_core.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_provision_machine.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_repo_dormancy.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_serve_app.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_session.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_split.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_state.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_throwaway_vm.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_uat_checks.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/write_parity.py +0 -0
|
@@ -55,6 +55,7 @@ independence; for smoke we want a *capable* machine for hardware, and
|
|
|
55
55
|
|
|
56
56
|
from __future__ import annotations
|
|
57
57
|
|
|
58
|
+
import base64
|
|
58
59
|
import json
|
|
59
60
|
import logging
|
|
60
61
|
import re
|
|
@@ -295,9 +296,21 @@ def match_rules(touched_files: list[str], rules: list[SmokeRule]) -> list[str]:
|
|
|
295
296
|
class SmokePartition:
|
|
296
297
|
"""One capability set that some single configured machine can satisfy —
|
|
297
298
|
i.e. one Test-stage leg, if/when the fan-out described above ships.
|
|
299
|
+
|
|
300
|
+
`files` (#3298) are the touched paths that actually put THIS partition on
|
|
301
|
+
the board — the union of files matched by whichever `capability_rules`
|
|
302
|
+
entries contributed `capabilities`' requirements — as opposed to the
|
|
303
|
+
diff's full `touched_files`. Resolving the Test-stage command against
|
|
304
|
+
*this* narrower set, per partition, is what lets a `SmokeRule.command`
|
|
305
|
+
declared on the contributing rule win for only its own leg instead of
|
|
306
|
+
every leg in the fan-out (`coord.smoke.resolve_smoke_command`). Never
|
|
307
|
+
empty for a partition `partition_capability_requirements` actually
|
|
308
|
+
returns — every partition is built from at least one rule that matched at
|
|
309
|
+
least one touched file.
|
|
298
310
|
"""
|
|
299
311
|
|
|
300
312
|
capabilities: tuple[str, ...]
|
|
313
|
+
files: tuple[str, ...] = ()
|
|
301
314
|
|
|
302
315
|
|
|
303
316
|
@dataclass(frozen=True)
|
|
@@ -355,8 +368,22 @@ def partition_capability_requirements(
|
|
|
355
368
|
Rules with an empty `requires` never enter this — they mean "no extra
|
|
356
369
|
capability needed", already handled by the existing any-capable-machine
|
|
357
370
|
path in `dispatch_smoke`, not a partition of their own.
|
|
371
|
+
|
|
372
|
+
#3298: each returned :class:`SmokePartition` also carries `files` — the
|
|
373
|
+
touched paths matched by whichever rule(s) contributed its capabilities
|
|
374
|
+
— so a caller can resolve the Test-stage command per partition, scoped to
|
|
375
|
+
only the files that put THAT partition on the board, instead of the
|
|
376
|
+
diff's full `touched_files`.
|
|
358
377
|
"""
|
|
359
|
-
|
|
378
|
+
# #3298 fix-round-1: `seen` used to keep only the FIRST rule matching a
|
|
379
|
+
# given `requires` set and silently drop every later one with the same
|
|
380
|
+
# set — so a second rule sharing a capability set (e.g. a broad `gtk`
|
|
381
|
+
# rule plus a narrower `gtk` override carrying its own `command`) never
|
|
382
|
+
# entered `order`/`group_rule_indices` at all, and its files never made
|
|
383
|
+
# it into the partition's `files`, so `resolve_rule_command` could never
|
|
384
|
+
# see them and its `command` could never win. Every rule matching a
|
|
385
|
+
# given key must accumulate here, not just the first.
|
|
386
|
+
seen: dict[frozenset[str], list[int]] = {}
|
|
360
387
|
order: list[frozenset[str]] = []
|
|
361
388
|
for i, rule in enumerate(rules):
|
|
362
389
|
if not rule.requires:
|
|
@@ -365,18 +392,31 @@ def partition_capability_requirements(
|
|
|
365
392
|
continue
|
|
366
393
|
key = frozenset(rule.requires)
|
|
367
394
|
if key not in seen:
|
|
368
|
-
seen[key] =
|
|
395
|
+
seen[key] = []
|
|
369
396
|
order.append(key)
|
|
397
|
+
seen[key].append(i)
|
|
370
398
|
|
|
371
399
|
groups: list[set[str]] = []
|
|
400
|
+
group_rule_indices: list[list[int]] = []
|
|
372
401
|
unroutable: list[UnroutableCapability] = []
|
|
373
402
|
for key in order:
|
|
374
|
-
|
|
403
|
+
rule_indices_for_key = seen[key]
|
|
375
404
|
caps = set(key)
|
|
376
405
|
if not capable_for(sorted(caps)):
|
|
406
|
+
# `rule_files` here is diagnostic text for `describe()` — the
|
|
407
|
+
# DECLARED file patterns of every rule sharing this unroutable
|
|
408
|
+
# capability set (e.g. `["src/cuda/"]`), same as pre-#3298-fix
|
|
409
|
+
# for a single rule, just unioned (order-preserving, deduped)
|
|
410
|
+
# across every rule now accumulated under this key instead of
|
|
411
|
+
# only the first.
|
|
412
|
+
rule_files: list[str] = []
|
|
413
|
+
for rule_index in rule_indices_for_key:
|
|
414
|
+
for f in rules[rule_index].files:
|
|
415
|
+
if f not in rule_files:
|
|
416
|
+
rule_files.append(f)
|
|
377
417
|
unroutable.append(UnroutableCapability(
|
|
378
418
|
capabilities=tuple(sorted(caps)),
|
|
379
|
-
rule_index=
|
|
419
|
+
rule_index=rule_indices_for_key[0],
|
|
380
420
|
rule_files=tuple(rule_files),
|
|
381
421
|
))
|
|
382
422
|
continue
|
|
@@ -385,12 +425,25 @@ def partition_capability_requirements(
|
|
|
385
425
|
candidate = group | caps
|
|
386
426
|
if capable_for(sorted(candidate)):
|
|
387
427
|
groups[i] = candidate
|
|
428
|
+
group_rule_indices[i].extend(rule_indices_for_key)
|
|
388
429
|
merged = True
|
|
389
430
|
break
|
|
390
431
|
if not merged:
|
|
391
432
|
groups.append(caps)
|
|
392
|
-
|
|
393
|
-
|
|
433
|
+
group_rule_indices.append(list(rule_indices_for_key))
|
|
434
|
+
|
|
435
|
+
partitions = [
|
|
436
|
+
SmokePartition(
|
|
437
|
+
capabilities=tuple(sorted(group)),
|
|
438
|
+
files=tuple(sorted({
|
|
439
|
+
path
|
|
440
|
+
for rule_index in rule_indices
|
|
441
|
+
for path in touched_files
|
|
442
|
+
if _rule_matches([path], rules[rule_index])
|
|
443
|
+
})),
|
|
444
|
+
)
|
|
445
|
+
for group, rule_indices in zip(groups, group_rule_indices)
|
|
446
|
+
]
|
|
394
447
|
return partitions, unroutable
|
|
395
448
|
|
|
396
449
|
|
|
@@ -486,43 +539,70 @@ def smoke_leg_capabilities(issue_title: str | None) -> tuple[str, ...] | None:
|
|
|
486
539
|
_FANOUT_MANIFEST_RE = re.compile(r"^\[\[smoke-fanout:([^\]]*)\]\]\n?")
|
|
487
540
|
|
|
488
541
|
|
|
489
|
-
def _encode_fanout_manifest(
|
|
542
|
+
def _encode_fanout_manifest(
|
|
543
|
+
legs: list[tuple[str, tuple[str, ...], str | None]],
|
|
544
|
+
) -> str:
|
|
490
545
|
"""The manifest line stamped at the FRONT of the parent's ``test_reason``
|
|
491
|
-
for a #3182 fan-out: ``[[smoke-fanout:<id>=<caps>,...]]``,
|
|
492
|
-
leg dispatched (or already active/completed) this round.
|
|
493
|
-
byte-for-byte across every later rewrite of the parent's
|
|
494
|
-
(the running-progress stamp, and the final aggregate) so
|
|
546
|
+
for a #3182 fan-out: ``[[smoke-fanout:<id>=<caps>=<command_b64>,...]]``,
|
|
547
|
+
one entry per leg dispatched (or already active/completed) this round.
|
|
548
|
+
Preserved byte-for-byte across every later rewrite of the parent's
|
|
549
|
+
``test_reason`` (the running-progress stamp, and the final aggregate) so
|
|
495
550
|
:func:`finalize_smoke_fanout` can always find its siblings again from
|
|
496
551
|
just the parent's own row — see the module note above for why this, and
|
|
497
552
|
not a new query endpoint.
|
|
553
|
+
|
|
554
|
+
``command_b64`` (#3298) is the partition's own resolved Test-stage
|
|
555
|
+
command, URL-safe base64-encoded so an arbitrary shell command — commas,
|
|
556
|
+
brackets, newlines, anything a real ``test_command``/rule ``command`` can
|
|
557
|
+
contain — can never corrupt this manifest's own ``,``/``=``/``]``
|
|
558
|
+
delimiters. Encodes as an empty third field when the command is unknown
|
|
559
|
+
(``None``), which round-trips through :func:`_parse_fanout_manifest` as
|
|
560
|
+
``command=None`` rather than raising or misparsing.
|
|
498
561
|
"""
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
562
|
+
def _entry(leg_id: str, caps: tuple[str, ...], command: str | None) -> str:
|
|
563
|
+
cap_str = "+".join(sorted(caps))
|
|
564
|
+
cmd_b64 = (
|
|
565
|
+
base64.urlsafe_b64encode(command.encode()).decode() if command else ""
|
|
566
|
+
)
|
|
567
|
+
return f"{leg_id}={cap_str}={cmd_b64}"
|
|
568
|
+
|
|
569
|
+
body = ",".join(_entry(leg_id, caps, command) for leg_id, caps, command in legs)
|
|
502
570
|
return f"[[smoke-fanout:{body}]]"
|
|
503
571
|
|
|
504
572
|
|
|
505
573
|
def _parse_fanout_manifest(
|
|
506
574
|
test_reason: str | None,
|
|
507
|
-
) -> list[tuple[str, tuple[str, ...]]] | None:
|
|
508
|
-
"""The ``(leg_id, capabilities)``
|
|
509
|
-
wrote, or ``None`` when *test_reason*
|
|
510
|
-
row). Tolerates a malformed entry by
|
|
511
|
-
raising.
|
|
575
|
+
) -> list[tuple[str, tuple[str, ...], str | None]] | None:
|
|
576
|
+
"""The ``(leg_id, capabilities, command)`` triples
|
|
577
|
+
:func:`_encode_fanout_manifest` wrote, or ``None`` when *test_reason*
|
|
578
|
+
carries no manifest (not a fan-out row). Tolerates a malformed entry by
|
|
579
|
+
skipping just that entry, never raising.
|
|
580
|
+
|
|
581
|
+
``command`` is ``None`` for a pre-#3298 two-field entry
|
|
582
|
+
(``<id>=<caps>``, no trailing ``=<command_b64>``) — an already-in-flight
|
|
583
|
+
row from before this field existed — as well as for a malformed base64
|
|
584
|
+
payload; either way the caller gets "unknown command", never a crash.
|
|
512
585
|
"""
|
|
513
586
|
if not test_reason:
|
|
514
587
|
return None
|
|
515
588
|
m = _FANOUT_MANIFEST_RE.match(test_reason)
|
|
516
589
|
if not m:
|
|
517
590
|
return None
|
|
518
|
-
legs: list[tuple[str, tuple[str, ...]]] = []
|
|
591
|
+
legs: list[tuple[str, tuple[str, ...], str | None]] = []
|
|
519
592
|
for entry in m.group(1).split(","):
|
|
520
593
|
if not entry:
|
|
521
594
|
continue
|
|
522
|
-
leg_id, _,
|
|
595
|
+
leg_id, _, rest = entry.partition("=")
|
|
596
|
+
caps, _, cmd_b64 = rest.partition("=")
|
|
523
597
|
if not leg_id or not caps:
|
|
524
598
|
continue
|
|
525
|
-
|
|
599
|
+
command: str | None = None
|
|
600
|
+
if cmd_b64:
|
|
601
|
+
try:
|
|
602
|
+
command = base64.urlsafe_b64decode(cmd_b64.encode()).decode()
|
|
603
|
+
except (ValueError, UnicodeDecodeError):
|
|
604
|
+
command = None
|
|
605
|
+
legs.append((leg_id, tuple(caps.split("+")), command))
|
|
526
606
|
return legs
|
|
527
607
|
|
|
528
608
|
|
|
@@ -601,33 +681,44 @@ def finalize_smoke_fanout(work_parent_id: str) -> None:
|
|
|
601
681
|
if not legs:
|
|
602
682
|
return # not a fan-out row
|
|
603
683
|
|
|
604
|
-
|
|
684
|
+
# #3298: carry each leg's own resolved command forward from the
|
|
685
|
+
# manifest (never re-read from the leg's row — `_record_smoke_verdict`
|
|
686
|
+
# overwrites a leg's own `test_reason` with its terminal verdict text,
|
|
687
|
+
# so the command it ran is only ever recoverable from here) into the
|
|
688
|
+
# failure report, so two failing legs that ran DIFFERENT commands
|
|
689
|
+
# (possible now that command resolution is scoped per partition) read
|
|
690
|
+
# as distinguishable instead of two identically-shaped failures.
|
|
691
|
+
leg_states: list[tuple[tuple[str, ...], str | None, str | None, str | None]] = [
|
|
605
692
|
(
|
|
606
693
|
caps,
|
|
607
694
|
load_assignment_test_state(leg_id),
|
|
608
695
|
load_assignment_test_reason(leg_id),
|
|
696
|
+
command,
|
|
609
697
|
)
|
|
610
|
-
for leg_id, caps in legs
|
|
698
|
+
for leg_id, caps, command in legs
|
|
611
699
|
]
|
|
612
|
-
if any(state in (None, "running") for _, state, _ in leg_states):
|
|
700
|
+
if any(state in (None, "running") for _, state, _, _ in leg_states):
|
|
613
701
|
return # not everyone has reported in yet
|
|
614
702
|
|
|
615
703
|
severity = {"failed": 3, TEST_STATE_BLOCKED: 2, "skipped": 1, "passed": 0}
|
|
616
704
|
worst = max(
|
|
617
|
-
(state for _, state, _ in leg_states if state in severity),
|
|
705
|
+
(state for _, state, _, _ in leg_states if state in severity),
|
|
618
706
|
key=lambda s: severity[s],
|
|
619
707
|
default="passed",
|
|
620
708
|
)
|
|
621
709
|
summary = "; ".join(
|
|
622
|
-
f"[{'+'.join(caps)}]={state}" for caps, state, _ in leg_states
|
|
710
|
+
f"[{'+'.join(caps)}]={state}" for caps, state, _, _ in leg_states
|
|
711
|
+
)
|
|
712
|
+
manifest_line = _encode_fanout_manifest(
|
|
713
|
+
[(lid, caps, command) for lid, caps, command in legs]
|
|
623
714
|
)
|
|
624
|
-
manifest_line = _encode_fanout_manifest([(lid, caps) for lid, caps in legs])
|
|
625
715
|
|
|
626
716
|
if worst == "failed":
|
|
627
717
|
named = "; ".join(
|
|
628
718
|
f"capability set [{'+'.join(caps)}] failed"
|
|
719
|
+
+ (f" (ran `{command}`)" if command else "")
|
|
629
720
|
+ (f" — {reason}" if reason else "")
|
|
630
|
-
for caps, state, reason in leg_states
|
|
721
|
+
for caps, state, reason, command in leg_states
|
|
631
722
|
if state == "failed"
|
|
632
723
|
)
|
|
633
724
|
final_state, headline = "failed", f"Test stage failed (#3182): {named}."
|
|
@@ -1591,6 +1682,61 @@ def _report_unroutable_partitions(
|
|
|
1591
1682
|
completed.test_reason = reason
|
|
1592
1683
|
|
|
1593
1684
|
|
|
1685
|
+
def _report_unconfigured_smoke_command(
|
|
1686
|
+
completed: Assignment, caps: list[str],
|
|
1687
|
+
) -> None:
|
|
1688
|
+
"""#3298: a capability-partition leg's own files resolve to NO smoke
|
|
1689
|
+
command at all — every source (`smoke_tests.capability_rules[].command`,
|
|
1690
|
+
`repos[].ci_command`, `smoke_tests.default_command`,
|
|
1691
|
+
`repos[].test_command`) came up empty for the files that put THIS
|
|
1692
|
+
partition on the board.
|
|
1693
|
+
|
|
1694
|
+
A `coordinator.yml` config gap, never a routing puzzle — reported exactly
|
|
1695
|
+
like :func:`_report_unroutable_partitions`, but per partition and naming
|
|
1696
|
+
the capability set, so a misconfiguration on one platform (e.g. a repo
|
|
1697
|
+
whose `test_command` needs GTK, with a `macos` rule that carries no
|
|
1698
|
+
`command` override of its own) is never silently attributed to the whole
|
|
1699
|
+
fan-out — a sibling partition that DOES resolve a command still
|
|
1700
|
+
dispatches.
|
|
1701
|
+
|
|
1702
|
+
Never raises: a board-write failure must not take the caller down.
|
|
1703
|
+
"""
|
|
1704
|
+
caps_label = "+".join(caps) if caps else "(none)"
|
|
1705
|
+
reason = (
|
|
1706
|
+
f"Test stage cannot run capability-partition leg [{caps_label}] "
|
|
1707
|
+
f"(#3298): no smoke command is configured for repo "
|
|
1708
|
+
f"{completed.repo_name!r} for this partition's own files (checked "
|
|
1709
|
+
"smoke_tests.capability_rules[].command, repos[].ci_command, "
|
|
1710
|
+
"smoke_tests.default_command, and repos[].test_command). Configure "
|
|
1711
|
+
"one — e.g. a `command` on the capability_rules entry that created "
|
|
1712
|
+
"this partition — so it stops silently no-oping."
|
|
1713
|
+
)
|
|
1714
|
+
logger.warning(
|
|
1715
|
+
"dispatch_smoke: %s#%s — %s", completed.repo_name,
|
|
1716
|
+
completed.issue_number, reason,
|
|
1717
|
+
)
|
|
1718
|
+
if completed.test_state == TEST_STATE_BLOCKED:
|
|
1719
|
+
return # already recorded — the report has been made
|
|
1720
|
+
if completed.assignment_id is None:
|
|
1721
|
+
return
|
|
1722
|
+
try:
|
|
1723
|
+
from coord.state import record_test_verdict
|
|
1724
|
+
|
|
1725
|
+
record_test_verdict(
|
|
1726
|
+
assignment_id=completed.assignment_id,
|
|
1727
|
+
test_state=TEST_STATE_BLOCKED,
|
|
1728
|
+
test_reason=reason,
|
|
1729
|
+
)
|
|
1730
|
+
except Exception: # noqa: BLE001 — reporting must never break dispatch
|
|
1731
|
+
logger.exception(
|
|
1732
|
+
"dispatch_smoke: failed to record the blocked Test verdict for %s",
|
|
1733
|
+
completed.assignment_id,
|
|
1734
|
+
)
|
|
1735
|
+
return
|
|
1736
|
+
completed.test_state = TEST_STATE_BLOCKED
|
|
1737
|
+
completed.test_reason = reason
|
|
1738
|
+
|
|
1739
|
+
|
|
1594
1740
|
# ── Dispatch ────────────────────────────────────────────────────────────────
|
|
1595
1741
|
|
|
1596
1742
|
|
|
@@ -2168,45 +2314,61 @@ def _dispatch_smoke_fanout(
|
|
|
2168
2314
|
probe contradiction, a missing `repo_paths` entry) is reported exactly
|
|
2169
2315
|
like the single-leg unroutable case (`_report_unroutable_smoke`), naming
|
|
2170
2316
|
that capability set — never a silent retry (#1678).
|
|
2317
|
+
|
|
2318
|
+
#3298: the Test-stage command is resolved ONCE PER PARTITION, scoped to
|
|
2319
|
+
that partition's own `SmokePartition.files` — not once, up front, against
|
|
2320
|
+
the WHOLE diff's `touched` — so a `SmokeRule.command` declared on the
|
|
2321
|
+
rule that created one partition can win for only that partition's leg
|
|
2322
|
+
instead of leaking into every other leg in the fan-out. A repo with no
|
|
2323
|
+
rule-scoped `command` anywhere is unaffected: every partition then falls
|
|
2324
|
+
through the same `ci_command`/`default_command`/`test_command`
|
|
2325
|
+
precedence it always has, which does not vary with which files are
|
|
2326
|
+
passed, so this is a no-op for every repo that hasn't opted in.
|
|
2171
2327
|
"""
|
|
2172
2328
|
smoke_cfg = getattr(config, "smoke_tests", SmokeTestsConfig())
|
|
2173
2329
|
repo = config.repo(completed.repo_name)
|
|
2174
2330
|
if repo is None:
|
|
2175
2331
|
return []
|
|
2176
2332
|
|
|
2177
|
-
resolved = resolve_smoke_command(repo, smoke_cfg, touched_files=touched)
|
|
2178
|
-
smoke_command = resolved.command
|
|
2179
|
-
if smoke_command is None:
|
|
2180
|
-
logger.warning(
|
|
2181
|
-
"dispatch_smoke: %s#%s needs a %d-way capability fan-out %s but "
|
|
2182
|
-
"no smoke command is configured (repos[].ci_command, "
|
|
2183
|
-
"smoke_tests.default_command, or this repo's test_command) — "
|
|
2184
|
-
"skipping. Configure one so the Test stage stops silently "
|
|
2185
|
-
"no-oping for this repo.",
|
|
2186
|
-
completed.repo_name, completed.issue_number, len(partitions),
|
|
2187
|
-
[list(p.capabilities) for p in partitions],
|
|
2188
|
-
)
|
|
2189
|
-
return []
|
|
2190
|
-
if not resolved.ci_equivalent and repo.github:
|
|
2191
|
-
logger.warning(
|
|
2192
|
-
"dispatch_smoke: %s#%s Test verdict will NOT be CI-equivalent — "
|
|
2193
|
-
"running %s (%s) across a %d-way capability fan-out while CI "
|
|
2194
|
-
"runs whatever %s's workflows say. Set repos[%s].ci_command to "
|
|
2195
|
-
"the command CI runs (#2091).",
|
|
2196
|
-
completed.repo_name, completed.issue_number, smoke_command,
|
|
2197
|
-
resolved.source, len(partitions), repo.github, repo.name,
|
|
2198
|
-
)
|
|
2199
|
-
|
|
2200
2333
|
smoke_model_alias = config.models.default
|
|
2201
2334
|
smoke_model_wire = config.models.resolve(smoke_model_alias)
|
|
2202
2335
|
|
|
2203
|
-
leg_manifest: list[tuple[str, tuple[str, ...]]] = []
|
|
2336
|
+
leg_manifest: list[tuple[str, tuple[str, ...], str | None]] = []
|
|
2204
2337
|
new_legs: list[Assignment] = []
|
|
2205
2338
|
blocking: list[tuple[list[str], list[SmokeAttempt]]] = []
|
|
2339
|
+
unconfigured: list[list[str]] = []
|
|
2206
2340
|
|
|
2207
2341
|
for partition in partitions:
|
|
2208
2342
|
caps = list(partition.capabilities)
|
|
2209
2343
|
|
|
2344
|
+
# #3298: scope resolution to the files that put THIS partition on the
|
|
2345
|
+
# board — never the full diff's `touched` — so a rule-scoped command
|
|
2346
|
+
# is attributed to the one leg it was written for. `partition.files`
|
|
2347
|
+
# is never empty for a partition this function actually returned
|
|
2348
|
+
# (see `SmokePartition`'s docstring); the `or touched` is a defensive
|
|
2349
|
+
# fallback, not a path this should ever take.
|
|
2350
|
+
resolved = resolve_smoke_command(
|
|
2351
|
+
repo, smoke_cfg, touched_files=list(partition.files) or touched,
|
|
2352
|
+
)
|
|
2353
|
+
smoke_command = resolved.command
|
|
2354
|
+
if smoke_command is None:
|
|
2355
|
+
# Skip this partition — `_report_unconfigured_smoke_command`
|
|
2356
|
+
# below logs and records the board-visible reason exactly once,
|
|
2357
|
+
# same convention as the `blocking`/`_report_unroutable_smoke`
|
|
2358
|
+
# path just below: no separate log here, or every unconfigured
|
|
2359
|
+
# partition would be logged twice.
|
|
2360
|
+
unconfigured.append(caps)
|
|
2361
|
+
continue
|
|
2362
|
+
if not resolved.ci_equivalent and repo.github:
|
|
2363
|
+
logger.warning(
|
|
2364
|
+
"dispatch_smoke: %s#%s — capability-partition leg %s Test "
|
|
2365
|
+
"verdict will NOT be CI-equivalent — running %s (%s) while "
|
|
2366
|
+
"CI runs whatever %s's workflows say. Set "
|
|
2367
|
+
"repos[%s].ci_command to the command CI runs (#2091).",
|
|
2368
|
+
completed.repo_name, completed.issue_number, caps,
|
|
2369
|
+
smoke_command, resolved.source, repo.github, repo.name,
|
|
2370
|
+
)
|
|
2371
|
+
|
|
2210
2372
|
existing = _find_leg_for_partition(
|
|
2211
2373
|
board, repo_name=completed.repo_name, branch=completed.branch,
|
|
2212
2374
|
capabilities=partition.capabilities,
|
|
@@ -2215,7 +2377,9 @@ def _dispatch_smoke_fanout(
|
|
|
2215
2377
|
# Already dispatched (still running, or already terminal) by an
|
|
2216
2378
|
# earlier call for this same row — this tick just fills whatever
|
|
2217
2379
|
# OTHER partition is still missing, never re-dispatches this one.
|
|
2218
|
-
leg_manifest.append(
|
|
2380
|
+
leg_manifest.append(
|
|
2381
|
+
(existing.assignment_id or "", partition.capabilities, smoke_command)
|
|
2382
|
+
)
|
|
2219
2383
|
continue
|
|
2220
2384
|
|
|
2221
2385
|
candidates = rank_smoke_machines(
|
|
@@ -2269,6 +2433,12 @@ def _dispatch_smoke_fanout(
|
|
|
2269
2433
|
|
|
2270
2434
|
choice, briefing, agent_response = result
|
|
2271
2435
|
leg_id = agent_response.get("id") or uuid.uuid4().hex[:12]
|
|
2436
|
+
# Escape a literal backtick in the resolved command so it cannot
|
|
2437
|
+
# prematurely close the backtick-fenced span below — this
|
|
2438
|
+
# `test_reason` is informational display text only (the manifest
|
|
2439
|
+
# carries the authoritative base64-encoded copy), but a broken
|
|
2440
|
+
# fence is an easy, easily-avoided papercut.
|
|
2441
|
+
escaped_smoke_command = smoke_command.replace("`", "\\`")
|
|
2272
2442
|
leg_assignment = Assignment(
|
|
2273
2443
|
machine_name=choice.machine.name,
|
|
2274
2444
|
repo_name=completed.repo_name,
|
|
@@ -2287,14 +2457,17 @@ def _dispatch_smoke_fanout(
|
|
|
2287
2457
|
review_of_assignment_id=completed.assignment_id,
|
|
2288
2458
|
model=smoke_model_alias,
|
|
2289
2459
|
test_state="running",
|
|
2290
|
-
test_reason=
|
|
2460
|
+
test_reason=(
|
|
2461
|
+
f"Test stage leg running — capability set {caps} using "
|
|
2462
|
+
f"`{escaped_smoke_command}` (#3182/#3298)"
|
|
2463
|
+
),
|
|
2291
2464
|
)
|
|
2292
2465
|
board.active.append(leg_assignment)
|
|
2293
2466
|
|
|
2294
2467
|
from coord.state import record_dispatched_assignment # noqa: PLC0415
|
|
2295
2468
|
|
|
2296
2469
|
record_dispatched_assignment(assignment=leg_assignment, repo_github=repo.github)
|
|
2297
|
-
leg_manifest.append((leg_id, partition.capabilities))
|
|
2470
|
+
leg_manifest.append((leg_id, partition.capabilities, smoke_command))
|
|
2298
2471
|
new_legs.append(leg_assignment)
|
|
2299
2472
|
|
|
2300
2473
|
# A partition every candidate durably refused — report it exactly like
|
|
@@ -2303,6 +2476,13 @@ def _dispatch_smoke_fanout(
|
|
|
2303
2476
|
for caps, attempts in blocking:
|
|
2304
2477
|
_report_unroutable_smoke(completed, caps, attempts)
|
|
2305
2478
|
|
|
2479
|
+
# A partition whose own files resolve to NO smoke command at all — a
|
|
2480
|
+
# `coordinator.yml` config gap, never a routing puzzle (#3298). Reported
|
|
2481
|
+
# per partition, naming it, so a misconfiguration on one platform is
|
|
2482
|
+
# never silently attributed to the whole fan-out.
|
|
2483
|
+
for caps in unconfigured:
|
|
2484
|
+
_report_unconfigured_smoke_command(completed, caps)
|
|
2485
|
+
|
|
2306
2486
|
# Stamp the parent's aggregate "running" — carrying the manifest so
|
|
2307
2487
|
# `finalize_smoke_fanout` can find every leg again from just this row —
|
|
2308
2488
|
# covering EVERY known partition so far, even on a partial round (some
|
|
@@ -2330,7 +2510,9 @@ def _dispatch_smoke_fanout(
|
|
|
2330
2510
|
):
|
|
2331
2511
|
from coord.state import record_test_verdict # noqa: PLC0415
|
|
2332
2512
|
|
|
2333
|
-
summary = "; ".join(
|
|
2513
|
+
summary = "; ".join(
|
|
2514
|
+
f"[{'+'.join(sorted(caps))}]" for _, caps, _ in leg_manifest
|
|
2515
|
+
)
|
|
2334
2516
|
manifest_line = _encode_fanout_manifest(leg_manifest)
|
|
2335
2517
|
running_reason = (
|
|
2336
2518
|
f"{manifest_line}\nTest stage running across {len(partitions)} "
|