code-coordinator 0.5.523__tar.gz → 0.5.525__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.523 → code_coordinator-0.5.525}/PKG-INFO +1 -1
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/ci_fix.py +85 -1
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/ci_github.py +97 -17
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/config.py +49 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/confirm_test.py +17 -1
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/gates.py +8 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notify.py +140 -2
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/smoke.py +240 -9
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/state.py +2 -1
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_ci_fix.py +179 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_config.py +72 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_confirm_test.py +29 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_gates.py +14 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notify.py +249 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_smoke.py +314 -1
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.gitignore +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/CLAUDE.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/GOAL.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/LICENSE +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/MANIFEST.in +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/README.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/__init__.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/agent.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/audit.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/backup.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/block_log.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/board_service.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/brain.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/claim.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/claude_setup_token.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/cli.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/client.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/codegen.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/backup.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/ci.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/codegen.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/dr.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/comments.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dao.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/db.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deps.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dispatch_liveness.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dr_promote.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dr_verify.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/drive.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/events.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/failure_classifier.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/filelock.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/freshness.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/goal.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/config_drift.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/local_machine_identity.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/pr_churn.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/context.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/models.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/render.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/units.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/hooks.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/interactive.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/invariant_alarms.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/machine_fault.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/machine_metrics.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/machine_stats.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/models.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/network.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/openapi.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/parentage.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/plans.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/progress.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/release_window.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/repo_dormancy.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/reports.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/restart_cmd.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/review.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/self_health.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/split_work.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/sql.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/store_parity.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/templates/deploy-cloudflare.node.yml +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/test_author.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/test_report.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/uat_checks.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/usage.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/DATA_STORE_SELECTION.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/DISASTER_RECOVERY.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/install-agent.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/pyproject.toml +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/dr-down.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/dr-up.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/provision-server.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/throwaway-vm.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/lib/provision-core.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/provision-machine.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/setup-macmini.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/verify-provision-noble.sh +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/setup.cfg +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/__init__.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/backends.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/conftest.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_approve_capability_reroute_3241.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_approved_work_2996.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_backup.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_ci_github.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_claude_setup_token.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_ci.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_codegen.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_doctor_store_backend_3084.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_issues.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_serve_store_backend_3084.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_invariant_alarms.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_machine_fault.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_retried_3340.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_supervisor_3366.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_client.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_client_config_cache_atomic_3052.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_config_drift_check.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_config_effective.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dashboard_api.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dashboard_server.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_db.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_db_backup_unit.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dispatch_liveness.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dispatch_workers.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dr_azure_scripts.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dr_promote.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dr_verify.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_machine_fault.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_queue_max_parallel_config.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_events.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_failure_classifier.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_fix_escalation_classifier.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_pr_churn.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_housekeeping.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_init.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_interactive.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_invariant_alarms.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_machine_fault.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_machine_metrics.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_machine_stats.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_models.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_network.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_provision_core.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_provision_machine.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_cordon_drain_stall_3336.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_repo_dormancy.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_repo_max_parallel_3423.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_restart_cmd.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_retry_escalation_classify_3360.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_serve_app.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_session.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_smoke_fanout_manifest_3333.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_split.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_state.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_throwaway_vm.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_uat_checks.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/write_parity.py +0 -0
|
@@ -37,6 +37,7 @@ import logging
|
|
|
37
37
|
|
|
38
38
|
import httpx
|
|
39
39
|
|
|
40
|
+
from coord import github_ops
|
|
40
41
|
from coord.ci_store import CIFailureDetail
|
|
41
42
|
from coord.config import Config
|
|
42
43
|
from coord.merge_queue import QueuedMerge, _chain_work_ids
|
|
@@ -144,12 +145,87 @@ def _format_ci_failure_detail(detail: CIFailureDetail) -> list[str]:
|
|
|
144
145
|
return lines
|
|
145
146
|
|
|
146
147
|
|
|
148
|
+
# #3456: cap on the issue body threaded into a ci-fix briefing. Large
|
|
149
|
+
# enough that a typical issue description plus an operator's follow-up
|
|
150
|
+
# diagnosis both fit without truncation in the common case — only a
|
|
151
|
+
# genuinely long body (or a long back-and-forth of appended notes) hits
|
|
152
|
+
# the cap at all.
|
|
153
|
+
ISSUE_BODY_MAX_CHARS = 6000
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def _bound_issue_body(body: str) -> tuple[str, bool]:
|
|
157
|
+
"""Truncate *body* to the last :data:`ISSUE_BODY_MAX_CHARS` characters
|
|
158
|
+
when it exceeds that cap (#3456).
|
|
159
|
+
|
|
160
|
+
Keeps the TAIL, not the head: an operator's diagnosis on a CI-fix
|
|
161
|
+
streak is written INTO the issue body after the failure is understood
|
|
162
|
+
— i.e. appended below the original description (see the issue's own
|
|
163
|
+
evidence: "After the root cause was written into the issue body,
|
|
164
|
+
requeueing would have routed the next attempt through the same ci-fix
|
|
165
|
+
path"). Keeping the tail is what makes sure that operator-added
|
|
166
|
+
content survives a cut; the cost is that the original description
|
|
167
|
+
(often already echoed by the issue title anyway) is what gets dropped
|
|
168
|
+
for a body long enough to need cutting at all.
|
|
169
|
+
|
|
170
|
+
Returns ``(text, truncated)`` — mirrors
|
|
171
|
+
:func:`coord.ci_github._bound_log_excerpt`'s contract: *truncated* is
|
|
172
|
+
``True`` iff the cut actually removed content, so the caller can make
|
|
173
|
+
the cut visible in the briefing text rather than silently handing over
|
|
174
|
+
a partial body.
|
|
175
|
+
"""
|
|
176
|
+
if len(body) <= ISSUE_BODY_MAX_CHARS:
|
|
177
|
+
return body, False
|
|
178
|
+
return body[-ISSUE_BODY_MAX_CHARS:], True
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
def _format_issue_body(issue_body: str) -> list[str]:
|
|
182
|
+
"""Render *issue_body* into briefing lines (#3456) — see
|
|
183
|
+
:func:`_bound_issue_body` for the truncation contract.
|
|
184
|
+
"""
|
|
185
|
+
body, truncated = _bound_issue_body(issue_body)
|
|
186
|
+
lines: list[str] = ["## Issue body", ""]
|
|
187
|
+
if truncated:
|
|
188
|
+
lines.append(
|
|
189
|
+
f"(truncated to the last {ISSUE_BODY_MAX_CHARS} characters — "
|
|
190
|
+
"operator notes are typically appended below the original "
|
|
191
|
+
"description, so keeping the tail keeps those over the part "
|
|
192
|
+
"already echoed by the issue title)"
|
|
193
|
+
)
|
|
194
|
+
lines.append("")
|
|
195
|
+
lines.append(body)
|
|
196
|
+
lines.append("")
|
|
197
|
+
return lines
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
def _fetch_issue_body(entry: QueuedMerge) -> str:
|
|
201
|
+
"""Best-effort fetch of *entry*'s issue body for the ci-fix briefing
|
|
202
|
+
(#3456) — the same body a Work-stage dispatch already auto-includes
|
|
203
|
+
(``coord.commands.dispatch``'s auto-briefing, ``coord.commands.
|
|
204
|
+
dispatch_workers``' smoke briefing) but a ci-fix dispatch never did:
|
|
205
|
+
any diagnosis an operator records on the issue (e.g. after reading the
|
|
206
|
+
real CI logs by hand) was invisible to the worker most likely to need
|
|
207
|
+
it, since workers can't run ``gh`` themselves to read it any other way.
|
|
208
|
+
|
|
209
|
+
Fails soft to ``""`` on any read failure (``gh`` missing, rate-limited,
|
|
210
|
+
a network blip, a malformed response) — same posture as
|
|
211
|
+
:func:`coord.ci_github.build_ci_failure_detail`: this is enrichment,
|
|
212
|
+
never a dispatch precondition, and a body fetch failure must never
|
|
213
|
+
block or delay the actual fix dispatch.
|
|
214
|
+
"""
|
|
215
|
+
try:
|
|
216
|
+
issue_data = github_ops.get_issue(entry.repo_github, entry.issue_number)
|
|
217
|
+
except Exception: # noqa: BLE001 — best-effort, see docstring
|
|
218
|
+
return ""
|
|
219
|
+
return str(issue_data.get("body") or "")
|
|
220
|
+
|
|
221
|
+
|
|
147
222
|
def build_ci_fix_briefing(
|
|
148
223
|
*,
|
|
149
224
|
entry: QueuedMerge,
|
|
150
225
|
checks_summary: str,
|
|
151
226
|
attempt: int,
|
|
152
227
|
detail: CIFailureDetail | None = None,
|
|
228
|
+
issue_body: str | None = None,
|
|
153
229
|
) -> str:
|
|
154
230
|
"""Assemble the CI-fix worker's briefing. Pure function — testable.
|
|
155
231
|
|
|
@@ -159,6 +235,11 @@ def build_ci_fix_briefing(
|
|
|
159
235
|
empty of anything beyond the check name (see :func:`_detail_has_content`),
|
|
160
236
|
the briefing is byte-identical to before #3114, still carrying
|
|
161
237
|
``checks_summary``.
|
|
238
|
+
|
|
239
|
+
*issue_body* (#3456) is the issue's current body, fetched by
|
|
240
|
+
:func:`_fetch_issue_body` at dispatch time — optional and additive,
|
|
241
|
+
same shape as *detail*: ``None`` or blank leaves the briefing
|
|
242
|
+
byte-identical to before #3456.
|
|
162
243
|
"""
|
|
163
244
|
lines: list[str] = [
|
|
164
245
|
f"# CI failure fix: {entry.repo_github} branch `{entry.branch}`",
|
|
@@ -172,6 +253,8 @@ def build_ci_fix_briefing(
|
|
|
172
253
|
f" {checks_summary}",
|
|
173
254
|
"",
|
|
174
255
|
]
|
|
256
|
+
if issue_body is not None and issue_body.strip():
|
|
257
|
+
lines.extend(_format_issue_body(issue_body))
|
|
175
258
|
if detail is not None and _detail_has_content(detail):
|
|
176
259
|
lines.extend(_format_ci_failure_detail(detail))
|
|
177
260
|
lines += [
|
|
@@ -353,9 +436,10 @@ def dispatch_ci_fix(
|
|
|
353
436
|
return None
|
|
354
437
|
|
|
355
438
|
summary = checks_summary or entry.error or "CI checks failed"
|
|
439
|
+
issue_body = _fetch_issue_body(entry)
|
|
356
440
|
briefing = build_ci_fix_briefing(
|
|
357
441
|
entry=entry, checks_summary=summary, attempt=entry.ci_fix_dispatches + 1,
|
|
358
|
-
detail=detail,
|
|
442
|
+
detail=detail, issue_body=issue_body,
|
|
359
443
|
)
|
|
360
444
|
|
|
361
445
|
from coord.auto_loop import _dispatch_fix # noqa: PLC0415
|
|
@@ -120,19 +120,50 @@ _RUST_ERROR_RE = re.compile(r"\berror(\[E\d+\])?:")
|
|
|
120
120
|
_RUST_LOCATION_RE = re.compile(r"-->")
|
|
121
121
|
_RUST_WARNING_RE = re.compile(r"\bwarning:")
|
|
122
122
|
|
|
123
|
+
# #3456: GitHub Actions appends this EXACT line to every failing step's log,
|
|
124
|
+
# regardless of what actually failed — it is the annotation `_ERROR_
|
|
125
|
+
# ANNOTATION_RE` would otherwise happily match as tier-1 signal, and on a
|
|
126
|
+
# job whose real failure produces no OTHER `##[error]` line (e.g. a `cargo
|
|
127
|
+
# test` failure — rustc's own test-harness panic output carries no `##[
|
|
128
|
+
# error]` prefix at all), this generic wrapper line was the ONLY thing
|
|
129
|
+
# selected: "exit code 1", not the failing test. Excluded from the
|
|
130
|
+
# `annotation` tier entirely so the more specific `rust_test_failure` tier
|
|
131
|
+
# below (or, failing that, `no_diagnostics_matched`) wins instead.
|
|
132
|
+
_EXIT_CODE_ANNOTATION_RE = re.compile(r"##\[error\]Process completed with exit code \d+\.?\s*$")
|
|
133
|
+
|
|
134
|
+
# #3456: a rust test-harness failure never carries a `##[error]` prefix, so
|
|
135
|
+
# none of it was reachable by any tier before this — the harness prints a
|
|
136
|
+
# per-test `---- <test path> stdout ----` header immediately followed by the
|
|
137
|
+
# `panicked at ...` message, then (once every test has run) a `failures:`
|
|
138
|
+
# roll-up naming every failing test, then a final `test result: FAILED. ...`
|
|
139
|
+
# summary line. All four are treated as one priority tier: whichever of
|
|
140
|
+
# them shows up is unambiguously more useful than the generic exit-code
|
|
141
|
+
# annotation above.
|
|
142
|
+
_RUST_TEST_STDOUT_HEADER_RE = re.compile(r"^-+\s.*\sstdout\s-+\s*$")
|
|
143
|
+
_RUST_PANICKED_RE = re.compile(r"panicked at")
|
|
144
|
+
_RUST_TEST_RESULT_RE = re.compile(r"\btest result: FAILED\b")
|
|
145
|
+
_RUST_FAILURES_HEADER_RE = re.compile(r"^failures:\s*$")
|
|
146
|
+
|
|
123
147
|
# How many lines past a matched rust-diagnostic line to look for its `-->`
|
|
124
148
|
# location before giving up — rustc always emits it on the very next
|
|
125
149
|
# non-blank line; a small window tolerates the odd blank line without
|
|
126
150
|
# accidentally stealing a `-->` that belongs to a LATER diagnostic.
|
|
127
151
|
_RUST_LOCATION_LOOKAHEAD = 4
|
|
128
152
|
|
|
153
|
+
# How many lines past a `---- <test> stdout ----` header to sweep into the
|
|
154
|
+
# same unit — enough to capture the `thread '...' panicked at ...:LINE:COL:`
|
|
155
|
+
# line plus a short assertion message, without running so far that a SECOND
|
|
156
|
+
# test's header (or unrelated harness noise) gets swept in too.
|
|
157
|
+
_RUST_TEST_FAILURE_LOOKAHEAD = 6
|
|
158
|
+
|
|
129
159
|
|
|
130
160
|
def _select_diagnostic_units(lines: list[str]) -> tuple[
|
|
131
|
-
list[list[str]], list[list[str]], list[list[str]]
|
|
161
|
+
list[list[str]], list[list[str]], list[list[str]], list[list[str]]
|
|
132
162
|
]:
|
|
133
|
-
"""Classify *lines* into (annotation, rust_diagnostic,
|
|
134
|
-
lists, each unit a small list of original line strings
|
|
135
|
-
budget truncation never splits an `error:`/`-->` pair
|
|
163
|
+
"""Classify *lines* into (annotation, rust_test_failure, rust_diagnostic,
|
|
164
|
+
warning) unit lists, each unit a small list of original line strings
|
|
165
|
+
kept atomic so budget truncation never splits an `error:`/`-->` pair —
|
|
166
|
+
or a rust test panic header/message pair — apart (#3245, #3456).
|
|
136
167
|
|
|
137
168
|
Each source line is claimed by at most one bucket, checked in priority
|
|
138
169
|
order, so a line matching a higher-priority pattern is never
|
|
@@ -142,10 +173,47 @@ def _select_diagnostic_units(lines: list[str]) -> tuple[
|
|
|
142
173
|
|
|
143
174
|
annotation: list[list[str]] = []
|
|
144
175
|
for i, line in enumerate(lines):
|
|
176
|
+
# #3456: the generic "step failed" wrapper line is deliberately
|
|
177
|
+
# never claimed here (see `_EXIT_CODE_ANNOTATION_RE`'s comment) —
|
|
178
|
+
# left unclaimed (not even added to `claimed`) since nothing else
|
|
179
|
+
# matches it anyway.
|
|
180
|
+
if _EXIT_CODE_ANNOTATION_RE.search(line):
|
|
181
|
+
continue
|
|
145
182
|
if _ERROR_ANNOTATION_RE.search(line):
|
|
146
183
|
annotation.append([line])
|
|
147
184
|
claimed.add(i)
|
|
148
185
|
|
|
186
|
+
# #3456: rust test-harness failures — a stdout header sweeps in the
|
|
187
|
+
# panic message that follows it; a bare `panicked at`/`test result:
|
|
188
|
+
# FAILED`/`failures:` line (no preceding header, e.g. a `cargo run`
|
|
189
|
+
# panic outside the test harness) stands alone as its own unit.
|
|
190
|
+
rust_test_failure: list[list[str]] = []
|
|
191
|
+
for i, line in enumerate(lines):
|
|
192
|
+
if i in claimed:
|
|
193
|
+
continue
|
|
194
|
+
if _RUST_TEST_STDOUT_HEADER_RE.match(line.strip()):
|
|
195
|
+
claimed.add(i)
|
|
196
|
+
unit = [line]
|
|
197
|
+
end = min(i + 1 + _RUST_TEST_FAILURE_LOOKAHEAD, len(lines))
|
|
198
|
+
for j in range(i + 1, end):
|
|
199
|
+
if j in claimed:
|
|
200
|
+
break
|
|
201
|
+
candidate = lines[j]
|
|
202
|
+
if not candidate.strip() or _RUST_TEST_STDOUT_HEADER_RE.match(candidate.strip()):
|
|
203
|
+
# Blank line or the next test's header — stop before
|
|
204
|
+
# sweeping in unrelated content.
|
|
205
|
+
break
|
|
206
|
+
unit.append(candidate)
|
|
207
|
+
claimed.add(j)
|
|
208
|
+
rust_test_failure.append(unit)
|
|
209
|
+
elif (
|
|
210
|
+
_RUST_PANICKED_RE.search(line)
|
|
211
|
+
or _RUST_TEST_RESULT_RE.search(line)
|
|
212
|
+
or _RUST_FAILURES_HEADER_RE.match(line.strip())
|
|
213
|
+
):
|
|
214
|
+
claimed.add(i)
|
|
215
|
+
rust_test_failure.append([line])
|
|
216
|
+
|
|
149
217
|
rust_diag: list[list[str]] = []
|
|
150
218
|
for i, line in enumerate(lines):
|
|
151
219
|
if i in claimed or not _RUST_ERROR_RE.search(line):
|
|
@@ -173,7 +241,7 @@ def _select_diagnostic_units(lines: list[str]) -> tuple[
|
|
|
173
241
|
claimed.add(i)
|
|
174
242
|
warning.append([line])
|
|
175
243
|
|
|
176
|
-
return annotation, rust_diag, warning
|
|
244
|
+
return annotation, rust_test_failure, rust_diag, warning
|
|
177
245
|
|
|
178
246
|
|
|
179
247
|
def _extract_relevant_log_lines(text: str) -> tuple[str, bool, bool]:
|
|
@@ -189,30 +257,42 @@ def _extract_relevant_log_lines(text: str) -> tuple[str, bool, bool]:
|
|
|
189
257
|
Extraction is by relevance, in priority order, matching the issue's fix
|
|
190
258
|
shape:
|
|
191
259
|
|
|
192
|
-
1. ``##[error]`` GitHub Actions annotation lines
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
260
|
+
1. ``##[error]`` GitHub Actions annotation lines — EXCEPT the generic
|
|
261
|
+
``Process completed with exit code N.`` wrapper GitHub Actions
|
|
262
|
+
appends to every failing step regardless of cause (#3456): it
|
|
263
|
+
carries zero diagnostic value, and on a job whose real failure
|
|
264
|
+
never emits any OTHER ``##[error]`` line (a rust test panic, say),
|
|
265
|
+
it used to be the ONLY thing this function ever surfaced.
|
|
266
|
+
2. Rust test-harness failures (#3456) — a ``---- <test> stdout ----``
|
|
267
|
+
header (with the ``panicked at ...`` message that follows it), a
|
|
268
|
+
bare ``panicked at`` line, a ``failures:`` roll-up, or the final
|
|
269
|
+
``test result: FAILED`` summary line
|
|
270
|
+
3. Rust compiler diagnostics — ``error[E....]:``/``error:`` paired with
|
|
271
|
+
the ``-->`` file:line that follows
|
|
272
|
+
4. ``warning:`` lines, only if budget remains after 1-3
|
|
196
273
|
|
|
197
274
|
Everything else — including the runner's own echo of a script step's
|
|
198
|
-
source and post-job cleanup
|
|
199
|
-
only ever match one of these
|
|
200
|
-
coincidence.
|
|
275
|
+
source and post-job cleanup, and the excluded exit-code wrapper line —
|
|
276
|
+
is never a candidate, because it can only ever match one of these
|
|
277
|
+
patterns by (extremely unlikely) coincidence.
|
|
201
278
|
|
|
202
279
|
Returns ``(excerpt, truncated, matched)``:
|
|
203
280
|
|
|
204
281
|
- *matched* is ``False`` when nothing in any tier matched anywhere in
|
|
205
282
|
*text* — the caller renders an explicit "no diagnostics" note rather
|
|
206
|
-
than a misleadingly-empty excerpt.
|
|
283
|
+
than a misleadingly-empty excerpt. Note this can now be ``False`` for
|
|
284
|
+
a log whose ONLY `##[error]` line was the excluded exit-code wrapper —
|
|
285
|
+
correctly so, since that line alone told the caller nothing a
|
|
286
|
+
"no diagnostics matched" note doesn't already convey just as well.
|
|
207
287
|
- *truncated* is ``True`` when the matched units together exceed
|
|
208
288
|
:data:`CI_FIX_LOG_MAX_LINES`/:data:`CI_FIX_LOG_MAX_BYTES` and lower-
|
|
209
|
-
priority units (warnings first, then any tier
|
|
210
|
-
dropped to fit — same "make the cut visible" contract as
|
|
289
|
+
priority units (warnings first, then any earlier-tier overflow) had
|
|
290
|
+
to be dropped to fit — same "make the cut visible" contract as
|
|
211
291
|
:func:`_bound_log_excerpt`.
|
|
212
292
|
"""
|
|
213
293
|
lines = text.splitlines()
|
|
214
|
-
annotation, rust_diag, warning = _select_diagnostic_units(lines)
|
|
215
|
-
units = annotation + rust_diag + warning
|
|
294
|
+
annotation, rust_test_failure, rust_diag, warning = _select_diagnostic_units(lines)
|
|
295
|
+
units = annotation + rust_test_failure + rust_diag + warning
|
|
216
296
|
if not units:
|
|
217
297
|
return "", False, False
|
|
218
298
|
|
|
@@ -307,12 +307,34 @@ class SmokeTestsConfig:
|
|
|
307
307
|
`default_command` is the shell command the smoke agent runs (e.g.
|
|
308
308
|
`make smoke` or `pytest tests/smoke`). Per-repo overrides flow through
|
|
309
309
|
`Repo.test_command` already; this is the fallback when none is set.
|
|
310
|
+
|
|
311
|
+
`native_execution_capabilities` (#3455) lists which bare capabilities
|
|
312
|
+
(e.g. `"windows"`) merely mean "some machine can build/cross-compile
|
|
313
|
+
for this" and do NOT by themselves prove a Test leg runs on that OS
|
|
314
|
+
natively. `dell64` declared `windows` while its coord agent ran inside
|
|
315
|
+
WSL (Linux); a #[cfg(target_os = "windows")] test compiled out and the
|
|
316
|
+
Test stage reported `pass` for a failure GitHub's `windows-latest`
|
|
317
|
+
runner caught every time (quadraui#1077). A machine must ALSO declare
|
|
318
|
+
`coord.config.native_execution_capability(cap)` (e.g. `windows-native`)
|
|
319
|
+
to certify it runs *that* capability's suite natively — see
|
|
320
|
+
`coord.smoke.unverified_native_capabilities`, consulted at THREE points
|
|
321
|
+
so the gap can't be closed by prompt-cooperation alone: routing
|
|
322
|
+
(`coord.smoke.rank_smoke_machines` prefers a native-verified candidate
|
|
323
|
+
over a bare one when both exist), dispatch (the briefing tells the
|
|
324
|
+
worker to caveat its own marker), and verdict-recording
|
|
325
|
+
(`coord.notify._record_smoke_verdict`'s PASS branches independently
|
|
326
|
+
recompute this and record `test_confirmation="native_unverified"`
|
|
327
|
+
regardless of what the worker's marker text says). Defaults to
|
|
328
|
+
`["windows"]`, the one capability the incident this exists for actually
|
|
329
|
+
involved; add more here (e.g. a future `"macos"` cross-build path)
|
|
330
|
+
without any code change.
|
|
310
331
|
"""
|
|
311
332
|
|
|
312
333
|
auto_queue: bool = False
|
|
313
334
|
default_command: str | None = None
|
|
314
335
|
timeout_seconds: int = 600
|
|
315
336
|
capability_rules: list[SmokeRule] = field(default_factory=list)
|
|
337
|
+
native_execution_capabilities: list[str] = field(default_factory=lambda: ["windows"])
|
|
316
338
|
|
|
317
339
|
|
|
318
340
|
@dataclass
|
|
@@ -1904,6 +1926,25 @@ def provider_capability(provider_type: str) -> str:
|
|
|
1904
1926
|
return f"provider:{provider_type}"
|
|
1905
1927
|
|
|
1906
1928
|
|
|
1929
|
+
def native_execution_capability(capability: str) -> str:
|
|
1930
|
+
"""The ``capabilities:`` string a machine must ALSO declare, alongside
|
|
1931
|
+
*capability* itself, to certify it runs *capability*'s tests on a
|
|
1932
|
+
genuinely native host rather than merely building/cross-compiling for
|
|
1933
|
+
it (#3455).
|
|
1934
|
+
|
|
1935
|
+
``native_execution_capability("windows") == "windows-native"``. Same
|
|
1936
|
+
config-only-declaration shape as :func:`provider_capability` — a
|
|
1937
|
+
machine that lists ``windows`` in ``capabilities:`` can build for
|
|
1938
|
+
Windows (a WSL/Linux agent satisfies that today), but only one that
|
|
1939
|
+
ALSO lists ``windows-native`` has told the coordinator its Test-stage
|
|
1940
|
+
runs actually execute there. Single source of truth for the naming
|
|
1941
|
+
convention: `coord.smoke.unverified_native_capabilities` is the only
|
|
1942
|
+
caller, so the two can never disagree about the string (#2096, "one
|
|
1943
|
+
question, one answer").
|
|
1944
|
+
"""
|
|
1945
|
+
return f"{capability}-native"
|
|
1946
|
+
|
|
1947
|
+
|
|
1907
1948
|
def model_plausible_for_provider_type(model: str, provider_type: str) -> bool:
|
|
1908
1949
|
"""Namespace-shape sanity check: could *model* plausibly belong to
|
|
1909
1950
|
*provider_type* (#1798)?
|
|
@@ -3498,6 +3539,14 @@ def _parse_smoke_tests(raw: Any) -> SmokeTestsConfig:
|
|
|
3498
3539
|
raise ConfigError("smoke_tests.timeout_seconds must be a positive integer")
|
|
3499
3540
|
cfg.timeout_seconds = value
|
|
3500
3541
|
|
|
3542
|
+
if "native_execution_capabilities" in raw:
|
|
3543
|
+
value = raw["native_execution_capabilities"]
|
|
3544
|
+
if not isinstance(value, list) or not all(isinstance(c, str) for c in value):
|
|
3545
|
+
raise ConfigError(
|
|
3546
|
+
"smoke_tests.native_execution_capabilities must be a list of strings"
|
|
3547
|
+
)
|
|
3548
|
+
cfg.native_execution_capabilities = value
|
|
3549
|
+
|
|
3501
3550
|
rules_raw = raw.get("capability_rules", []) or []
|
|
3502
3551
|
if not isinstance(rules_raw, list):
|
|
3503
3552
|
raise ConfigError("smoke_tests.capability_rules must be a list")
|
|
@@ -314,8 +314,21 @@ INCONCLUSIVE_KINDS = frozenset({
|
|
|
314
314
|
# * ``TEST_CONFIRMATION_BASELINE_RED`` — `ConfirmationResult.baseline_red`
|
|
315
315
|
# (#2170): the suite failed identically on the merge-base, so nothing was
|
|
316
316
|
# learned about the BRANCH specifically, but a real run did happen.
|
|
317
|
+
# * ``TEST_CONFIRMATION_NATIVE_UNVERIFIED`` (#3455) — the claimed pass ran on
|
|
318
|
+
# a machine that declares only the bare/build side of a capability this
|
|
319
|
+
# leg required (`coord.smoke.SmokeTestsConfig.native_execution_
|
|
320
|
+
# capabilities`, e.g. `"windows"`), not the paired `coord.config.
|
|
321
|
+
# native_execution_capability` proof it runs that suite on genuinely native
|
|
322
|
+
# hardware — a WSL-hosted `windows` machine being the canonical case
|
|
323
|
+
# (`dell64` / quadraui#1077). Distinct from `UNCONFIRMED`: a confirmation
|
|
324
|
+
# run may well have executed and even agreed with the claim, but "agreed"
|
|
325
|
+
# here still means "on a non-native host", so platform-conditional code the
|
|
326
|
+
# real target OS would exercise never ran anywhere in this leg. Recorded
|
|
327
|
+
# by `coord.notify._record_smoke_verdict`'s PASS branches regardless of
|
|
328
|
+
# what the worker's own `SMOKE:` marker text says — see `coord.smoke.
|
|
329
|
+
# native_unverified_for_verdict`.
|
|
317
330
|
#
|
|
318
|
-
# ``None`` (the column default) is a
|
|
331
|
+
# ``None`` (the column default) is a sixth, implicit state: no confirmation
|
|
319
332
|
# question was ever asked about this write at all — a headless smoke
|
|
320
333
|
# FAILURE, a human `coord test --passed` write that has not yet been reaped
|
|
321
334
|
# by a notify pass, a mute-leg park, ``TEST_STATE_BLOCKED``, ... None of
|
|
@@ -326,6 +339,7 @@ TEST_CONFIRMATION_CONFIRMED = "confirmed"
|
|
|
326
339
|
TEST_CONFIRMATION_UNCONFIRMED = "unconfirmed"
|
|
327
340
|
TEST_CONFIRMATION_REFUTED = "refuted"
|
|
328
341
|
TEST_CONFIRMATION_BASELINE_RED = "baseline_red"
|
|
342
|
+
TEST_CONFIRMATION_NATIVE_UNVERIFIED = "native_unverified"
|
|
329
343
|
|
|
330
344
|
#: Every value `test_confirmation` may hold — for validation / display sites
|
|
331
345
|
#: that want to assert exhaustiveness rather than silently falling through.
|
|
@@ -334,6 +348,7 @@ TEST_CONFIRMATION_VALUES = frozenset({
|
|
|
334
348
|
TEST_CONFIRMATION_UNCONFIRMED,
|
|
335
349
|
TEST_CONFIRMATION_REFUTED,
|
|
336
350
|
TEST_CONFIRMATION_BASELINE_RED,
|
|
351
|
+
TEST_CONFIRMATION_NATIVE_UNVERIFIED,
|
|
337
352
|
})
|
|
338
353
|
|
|
339
354
|
#: #3378: the canonical prefix a ``test_reason`` carries when a ``skipped``
|
|
@@ -1464,6 +1479,7 @@ __all__ = [
|
|
|
1464
1479
|
"STALE_WORKTREE_MAX_AGE_HOURS",
|
|
1465
1480
|
"TEST_CONFIRMATION_BASELINE_RED",
|
|
1466
1481
|
"TEST_CONFIRMATION_CONFIRMED",
|
|
1482
|
+
"TEST_CONFIRMATION_NATIVE_UNVERIFIED",
|
|
1467
1483
|
"TEST_CONFIRMATION_REFUTED",
|
|
1468
1484
|
"TEST_CONFIRMATION_UNCONFIRMED",
|
|
1469
1485
|
"TEST_CONFIRMATION_VALUES",
|
|
@@ -47,6 +47,7 @@ from typing import TYPE_CHECKING
|
|
|
47
47
|
|
|
48
48
|
from coord.confirm_test import (
|
|
49
49
|
TEST_CONFIRMATION_BASELINE_RED,
|
|
50
|
+
TEST_CONFIRMATION_NATIVE_UNVERIFIED,
|
|
50
51
|
TEST_CONFIRMATION_UNCONFIRMED,
|
|
51
52
|
)
|
|
52
53
|
from coord.models import WORK_LIKE_TYPES, effective_issue_number
|
|
@@ -1065,6 +1066,13 @@ def format_gate_report(report: GateReport) -> str:
|
|
|
1065
1066
|
suffix = " (UNCONFIRMED — suite never ran)"
|
|
1066
1067
|
elif confirmation == TEST_CONFIRMATION_BASELINE_RED:
|
|
1067
1068
|
suffix = " (baseline-red — branch not at fault, #2170)"
|
|
1069
|
+
elif confirmation == TEST_CONFIRMATION_NATIVE_UNVERIFIED:
|
|
1070
|
+
# #3455: this leg ran on a machine that declares only the
|
|
1071
|
+
# bare/build side of a required capability (e.g. a
|
|
1072
|
+
# WSL-hosted `windows` machine) — a plain "passed" here
|
|
1073
|
+
# would read exactly like a genuinely native-hardware
|
|
1074
|
+
# green, which this is not.
|
|
1075
|
+
suffix = " (NOT NATIVELY VERIFIED — #3455)"
|
|
1068
1076
|
lines.append(
|
|
1069
1077
|
" test : passed"
|
|
1070
1078
|
+ (f" (recorded on {test.assignment_id})" if test.assignment_id else "")
|
|
@@ -2358,12 +2358,114 @@ def _run_pass_confirmation(transition: Transition, entry: dict):
|
|
|
2358
2358
|
record_inconclusive_confirmation(transition.repo_name, result.kind)
|
|
2359
2359
|
|
|
2360
2360
|
|
|
2361
|
-
def
|
|
2361
|
+
def _native_unverified_capabilities(transition: Transition, entry: dict) -> list[str]:
|
|
2362
|
+
"""#3455: which of this smoke leg's required capabilities the machine
|
|
2363
|
+
that ran it declares only the bare/build side of, not the paired
|
|
2364
|
+
native-execution proof — recomputed HERE, independently of whatever the
|
|
2365
|
+
worker's own ``SMOKE:`` marker text says, so a claimed pass can be
|
|
2366
|
+
downgraded even when the worker never prints the caveat
|
|
2367
|
+
`coord.smoke.build_smoke_briefing` asks for (a purely advisory,
|
|
2368
|
+
worker-cooperation-dependent fix would leave that gap wide open — see
|
|
2369
|
+
the #3455 review).
|
|
2370
|
+
|
|
2371
|
+
Best-effort and fail-open, matching every other diagnostic in this
|
|
2372
|
+
module (`_run_pass_confirmation` et al.): a config load failure, an
|
|
2373
|
+
unknown repo/machine, or a PR/diff lookup failure returns ``[]`` — this
|
|
2374
|
+
must never turn "couldn't tell" into a false downgrade, and must never
|
|
2375
|
+
abandon the caller's verdict-recording transition over a network blip.
|
|
2376
|
+
"""
|
|
2377
|
+
from coord.config import load as _load_config # noqa: PLC0415
|
|
2378
|
+
from coord.smoke import ( # noqa: PLC0415
|
|
2379
|
+
_fetch_touched_files,
|
|
2380
|
+
native_unverified_for_verdict,
|
|
2381
|
+
)
|
|
2382
|
+
|
|
2383
|
+
try:
|
|
2384
|
+
config = _load_config()
|
|
2385
|
+
except Exception as exc: # noqa: BLE001
|
|
2386
|
+
log.debug(
|
|
2387
|
+
"smoke %s: could not load config for the #3455 native-"
|
|
2388
|
+
"verification check (%s) — skipping it.",
|
|
2389
|
+
transition.assignment_id, exc,
|
|
2390
|
+
)
|
|
2391
|
+
return []
|
|
2392
|
+
|
|
2393
|
+
repo = config.repo(transition.repo_name)
|
|
2394
|
+
machine = next(
|
|
2395
|
+
(m for m in config.machines if m.name == transition.machine_name), None
|
|
2396
|
+
)
|
|
2397
|
+
if repo is None or machine is None:
|
|
2398
|
+
return []
|
|
2399
|
+
|
|
2400
|
+
branch = entry.get("branch")
|
|
2401
|
+
if not branch:
|
|
2402
|
+
return []
|
|
2403
|
+
|
|
2404
|
+
try:
|
|
2405
|
+
touched_files = _fetch_touched_files(repo.github, branch)
|
|
2406
|
+
except Exception as exc: # noqa: BLE001
|
|
2407
|
+
log.debug(
|
|
2408
|
+
"smoke %s: could not fetch touched files for the #3455 native-"
|
|
2409
|
+
"verification check (%s) — skipping it.",
|
|
2410
|
+
transition.assignment_id, exc,
|
|
2411
|
+
)
|
|
2412
|
+
return []
|
|
2413
|
+
|
|
2414
|
+
return native_unverified_for_verdict(
|
|
2415
|
+
repo=repo, machine=machine, smoke_cfg=config.smoke_tests,
|
|
2416
|
+
touched_files=touched_files,
|
|
2417
|
+
)
|
|
2418
|
+
|
|
2419
|
+
|
|
2420
|
+
def _downgrade_for_native_unverified(
|
|
2421
|
+
state: str,
|
|
2422
|
+
reason: str,
|
|
2423
|
+
confirmation: str,
|
|
2424
|
+
native_unverified: list[str] | None,
|
|
2425
|
+
) -> tuple[str, str, str]:
|
|
2426
|
+
"""#3455: a claimed pass on a leg whose machine declares only the bare
|
|
2427
|
+
(build/cross-compile) side of a required capability — never the paired
|
|
2428
|
+
native-execution proof (`coord.smoke.native_unverified_for_verdict`) —
|
|
2429
|
+
must not read as a plain confirmed/unconfirmed pass. This is what
|
|
2430
|
+
actually closes the loop the #3455 review found open: it fires
|
|
2431
|
+
regardless of what the worker's own ``SMOKE:`` marker text says, so a
|
|
2432
|
+
worker that never prints the caveat `coord.smoke.build_smoke_briefing`
|
|
2433
|
+
asks for still gets a genuinely distinct, machine-readable
|
|
2434
|
+
``test_confirmation`` on the row.
|
|
2435
|
+
|
|
2436
|
+
Only applies to a ``state == "passed"`` result — a real ``failed``,
|
|
2437
|
+
the #2579 ``TEST_STATE_CONTESTED``, or a ``baseline_red`` skip already
|
|
2438
|
+
carry more urgent, more specific information and must never be
|
|
2439
|
+
overwritten by this.
|
|
2440
|
+
"""
|
|
2441
|
+
if state != "passed" or not native_unverified:
|
|
2442
|
+
return state, reason, confirmation
|
|
2443
|
+
from coord.confirm_test import ( # noqa: PLC0415
|
|
2444
|
+
TEST_CONFIRMATION_NATIVE_UNVERIFIED,
|
|
2445
|
+
)
|
|
2446
|
+
|
|
2447
|
+
caps = ", ".join(native_unverified)
|
|
2448
|
+
return (
|
|
2449
|
+
state,
|
|
2450
|
+
f"{reason} — NOT NATIVELY VERIFIED for {caps} (#3455): this leg ran "
|
|
2451
|
+
"on a machine that declares the bare capability but not native "
|
|
2452
|
+
"execution for it, so a platform-conditional failure specific to "
|
|
2453
|
+
f"real {caps} hardware would not have shown up here.",
|
|
2454
|
+
TEST_CONFIRMATION_NATIVE_UNVERIFIED,
|
|
2455
|
+
)
|
|
2456
|
+
|
|
2457
|
+
|
|
2458
|
+
def _confirmed_pass_verdict_core(
|
|
2362
2459
|
transition: Transition, entry: dict, parent_id: str, *, claim_reason: str,
|
|
2363
2460
|
) -> tuple[str, str, str]:
|
|
2364
2461
|
"""#2464: the ``(test_state, test_reason, test_confirmation)`` to record
|
|
2365
2462
|
for a *claimed* pass.
|
|
2366
2463
|
|
|
2464
|
+
Callers should use the public :func:`_confirmed_pass_verdict` wrapper,
|
|
2465
|
+
not this directly — it additionally applies the #3455 native-
|
|
2466
|
+
verification downgrade (:func:`_downgrade_for_native_unverified`) this
|
|
2467
|
+
core function knows nothing about.
|
|
2468
|
+
|
|
2367
2469
|
The Test stage's pass claim — whether it arrived as a ``SMOKE: pass``
|
|
2368
2470
|
marker or as the worker calling ``coord test --passed`` on itself (#2217) —
|
|
2369
2471
|
is a self-report by the thing being graded. This turns it into an
|
|
@@ -2544,6 +2646,38 @@ def _confirmed_pass_verdict(
|
|
|
2544
2646
|
)
|
|
2545
2647
|
|
|
2546
2648
|
|
|
2649
|
+
def _confirmed_pass_verdict(
|
|
2650
|
+
transition: Transition,
|
|
2651
|
+
entry: dict,
|
|
2652
|
+
parent_id: str,
|
|
2653
|
+
*,
|
|
2654
|
+
claim_reason: str,
|
|
2655
|
+
native_unverified: list[str] | None = None,
|
|
2656
|
+
) -> tuple[str, str, str]:
|
|
2657
|
+
"""#2464/#3455: the ``(test_state, test_reason, test_confirmation)`` to
|
|
2658
|
+
record for a *claimed* pass — :func:`_confirmed_pass_verdict_core`'s
|
|
2659
|
+
out-of-band confirmation, with the #3455 native-verification downgrade
|
|
2660
|
+
(:func:`_downgrade_for_native_unverified`) applied on top.
|
|
2661
|
+
|
|
2662
|
+
*native_unverified* — non-empty means this leg's machine declares only
|
|
2663
|
+
the bare/build side of one or more of its required capabilities, not
|
|
2664
|
+
the paired native-execution proof (`coord.smoke.native_unverified_for_
|
|
2665
|
+
verdict`). This downgrade is unconditional on the worker's own
|
|
2666
|
+
``SMOKE:`` marker text: it fires purely from the machine/capability
|
|
2667
|
+
facts, so a claimed pass this leg cannot actually back with native
|
|
2668
|
+
hardware never records as a plain ``confirmed``/``unconfirmed`` pass —
|
|
2669
|
+
see the #3455 review that made this the mandatory second half of the
|
|
2670
|
+
fix (the briefing-text caveat alone changes nothing this repo's own
|
|
2671
|
+
gates/merge-queue code ever reads back).
|
|
2672
|
+
"""
|
|
2673
|
+
state, reason, confirmation = _confirmed_pass_verdict_core(
|
|
2674
|
+
transition, entry, parent_id, claim_reason=claim_reason,
|
|
2675
|
+
)
|
|
2676
|
+
return _downgrade_for_native_unverified(
|
|
2677
|
+
state, reason, confirmation, native_unverified,
|
|
2678
|
+
)
|
|
2679
|
+
|
|
2680
|
+
|
|
2547
2681
|
def _mechanical_mute_verdict(
|
|
2548
2682
|
transition: Transition, entry: dict, parent_id: str,
|
|
2549
2683
|
) -> tuple[str, str, str] | None:
|
|
@@ -2725,6 +2859,7 @@ def _record_smoke_verdict(
|
|
|
2725
2859
|
state, reason, confirmation = _confirmed_pass_verdict(
|
|
2726
2860
|
transition, entry, parent_id,
|
|
2727
2861
|
claim_reason="worker self-recorded via `coord test` (#2217)",
|
|
2862
|
+
native_unverified=_native_unverified_capabilities(transition, entry),
|
|
2728
2863
|
)
|
|
2729
2864
|
record_test_verdict(
|
|
2730
2865
|
assignment_id=parent_id,
|
|
@@ -2814,6 +2949,7 @@ def _record_smoke_verdict(
|
|
|
2814
2949
|
state, reason, confirmation = _confirmed_pass_verdict(
|
|
2815
2950
|
transition, entry, parent_id,
|
|
2816
2951
|
claim_reason="headless smoke reported SMOKE: pass",
|
|
2952
|
+
native_unverified=_native_unverified_capabilities(transition, entry),
|
|
2817
2953
|
)
|
|
2818
2954
|
record_test_verdict(
|
|
2819
2955
|
assignment_id=parent_id,
|
|
@@ -2842,7 +2978,9 @@ def _record_smoke_verdict(
|
|
|
2842
2978
|
# away, with no leg spent and no tally incremented.
|
|
2843
2979
|
mechanical = _mechanical_mute_verdict(transition, entry, parent_id)
|
|
2844
2980
|
if mechanical is not None:
|
|
2845
|
-
state, reason, confirmation =
|
|
2981
|
+
state, reason, confirmation = _downgrade_for_native_unverified(
|
|
2982
|
+
*mechanical, _native_unverified_capabilities(transition, entry),
|
|
2983
|
+
)
|
|
2846
2984
|
record_test_verdict(
|
|
2847
2985
|
assignment_id=parent_id,
|
|
2848
2986
|
test_state=state,
|