code-coordinator 0.5.223__tar.gz → 0.5.225__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.223 → code_coordinator-0.5.225}/PKG-INFO +1 -1
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/confirm_test.py +67 -2
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notify.py +34 -3
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/coord-test-runner.sh +26 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_confirm_test.py +129 -3
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_coord_test_runner_baseline.py +77 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notify.py +1 -1
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.gitignore +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/CLAUDE.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/GOAL.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/LICENSE +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/MANIFEST.in +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/README.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/__init__.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/agent.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/audit.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/block_log.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/board_service.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/brain.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/claim.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/cli.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/client.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/comments.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/config.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dao.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/db.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deps.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/drive.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/events.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/filelock.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/freshness.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/gates.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/goal.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/context.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/models.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/render.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/units.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/hooks.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/interactive.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/models.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/network.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/openapi.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/parentage.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/plans.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/progress.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/release_window.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/reports.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/review.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/self_health.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/smoke.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/split_work.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/state.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/test_author.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/test_report.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/usage.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/install-agent.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/pyproject.toml +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/setup.cfg +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/__init__.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-67/contract.md +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-67/manifest.yml +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/conftest.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_config.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_db.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_events.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_init.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_models.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_network.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_session.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_split.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_state.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/approved.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -333,6 +333,45 @@ class ConfirmationResult:
|
|
|
333
333
|
return self.kind in INCONCLUSIVE_KINDS
|
|
334
334
|
|
|
335
335
|
|
|
336
|
+
def write_confirmation_output(assignment_id: str, result: ConfirmationResult) -> Path | None:
|
|
337
|
+
"""Persist a confirmation run's captured output tail for the fix briefing (#2563).
|
|
338
|
+
|
|
339
|
+
``coord fix`` (:mod:`coord.commands.plan_followup`) already prefers
|
|
340
|
+
``COORD_DIR/test_output/<assignment_id>.txt`` over every other evidence
|
|
341
|
+
source when it composes an escalated fix worker's briefing — `coord test
|
|
342
|
+
--fail --output` (:mod:`coord.commands.test_gate`) has written it there
|
|
343
|
+
since #1337. Before this function existed, a #2464 refutation captured
|
|
344
|
+
``result.output`` (already bounded to a tail by :func:`_tail` in
|
|
345
|
+
:func:`_classify_failure` / :func:`_timeout_output`) and then only ever
|
|
346
|
+
handed it to ``log.warning`` — the fix worker got a one-line reason and no
|
|
347
|
+
failing test names, no tracebacks, and had to re-derive the diagnosis the
|
|
348
|
+
daemon already held in memory.
|
|
349
|
+
|
|
350
|
+
*assignment_id* is the parent **work** row's id (the one the fix leg is
|
|
351
|
+
spawned from), not the confirming smoke transition's id — same key
|
|
352
|
+
:func:`coord.commands.plan_followup.fix` reads back by.
|
|
353
|
+
|
|
354
|
+
A no-op, returning ``None``, when there is nothing to write (``KIND_OK``
|
|
355
|
+
and ``KIND_SETUP`` both carry an empty ``.output`` — the former because
|
|
356
|
+
nothing failed, the latter because no command ever ran) or when the write
|
|
357
|
+
itself fails (a read-only ``COORD_DIR``, a full disk, ...); this must
|
|
358
|
+
never break verdict recording, which is why the caller in
|
|
359
|
+
:mod:`coord.notify` treats it as best-effort.
|
|
360
|
+
"""
|
|
361
|
+
if not result.output:
|
|
362
|
+
return None
|
|
363
|
+
from coord.state import COORD_DIR # noqa: PLC0415
|
|
364
|
+
|
|
365
|
+
try:
|
|
366
|
+
test_output_dir = COORD_DIR / "test_output"
|
|
367
|
+
test_output_dir.mkdir(parents=True, exist_ok=True)
|
|
368
|
+
stored = test_output_dir / f"{assignment_id}.txt"
|
|
369
|
+
stored.write_text(result.output)
|
|
370
|
+
except OSError:
|
|
371
|
+
return None
|
|
372
|
+
return stored
|
|
373
|
+
|
|
374
|
+
|
|
336
375
|
def confirmation_enabled(config=None) -> bool:
|
|
337
376
|
"""Whether Test-stage PASS claims get independently confirmed.
|
|
338
377
|
|
|
@@ -488,6 +527,29 @@ def unmet_confirmation_capabilities(
|
|
|
488
527
|
return [cap for cap in match_rules(touched, rules) if cap not in have]
|
|
489
528
|
|
|
490
529
|
|
|
530
|
+
def _timeout_output(exc: subprocess.TimeoutExpired) -> str:
|
|
531
|
+
"""Partial stdout/stderr captured before a confirmation command timed out.
|
|
532
|
+
|
|
533
|
+
``subprocess.run(..., capture_output=True, timeout=...)`` fills ``.stdout``
|
|
534
|
+
/ ``.stderr`` in on `TimeoutExpired` — the child had already written
|
|
535
|
+
*something* by the deadline — but the two `except subprocess.TimeoutExpired`
|
|
536
|
+
arms in :func:`confirm_branch` discarded it entirely, so a TIMEOUT verdict
|
|
537
|
+
carried strictly less evidence than BASELINE_RED/SIGNAL did even though the
|
|
538
|
+
same partial output was sitting right there on the exception (#2563).
|
|
539
|
+
Guards for ``None``/bytes since a test's stand-in *runner* seam may raise a
|
|
540
|
+
bare ``TimeoutExpired(cmd, timeout)`` with neither attribute set.
|
|
541
|
+
"""
|
|
542
|
+
out = getattr(exc, "stdout", None) or ""
|
|
543
|
+
err = getattr(exc, "stderr", None) or ""
|
|
544
|
+
if isinstance(out, bytes):
|
|
545
|
+
out = out.decode("utf-8", errors="replace")
|
|
546
|
+
if isinstance(err, bytes):
|
|
547
|
+
err = err.decode("utf-8", errors="replace")
|
|
548
|
+
if not out and not err:
|
|
549
|
+
return ""
|
|
550
|
+
return _tail(out + "\n" + err)
|
|
551
|
+
|
|
552
|
+
|
|
491
553
|
def _classify_failure(
|
|
492
554
|
stage: str, returncode: int, output: str, worktree: Path, command: str,
|
|
493
555
|
) -> ConfirmationResult:
|
|
@@ -741,7 +803,7 @@ def confirm_branch(
|
|
|
741
803
|
echo(f" confirming build: {build_command}")
|
|
742
804
|
try:
|
|
743
805
|
built = run_cmd(build_command, wt_path, _left())
|
|
744
|
-
except subprocess.TimeoutExpired:
|
|
806
|
+
except subprocess.TimeoutExpired as exc:
|
|
745
807
|
return ConfirmationResult(
|
|
746
808
|
kind=KIND_TIMEOUT,
|
|
747
809
|
reason=(
|
|
@@ -749,6 +811,7 @@ def confirm_branch(
|
|
|
749
811
|
"suite that did not finish says nothing about the "
|
|
750
812
|
"branch"
|
|
751
813
|
),
|
|
814
|
+
output=_timeout_output(exc),
|
|
752
815
|
command=build_command,
|
|
753
816
|
worktree=wt_path,
|
|
754
817
|
)
|
|
@@ -780,13 +843,14 @@ def confirm_branch(
|
|
|
780
843
|
echo(f" confirming tests: {test_command}")
|
|
781
844
|
try:
|
|
782
845
|
tested = run_cmd(test_command, wt_path, _left())
|
|
783
|
-
except subprocess.TimeoutExpired:
|
|
846
|
+
except subprocess.TimeoutExpired as exc:
|
|
784
847
|
return ConfirmationResult(
|
|
785
848
|
kind=KIND_TIMEOUT,
|
|
786
849
|
reason=(
|
|
787
850
|
f"confirmation suite timed out after {timeout}s — a "
|
|
788
851
|
"suite that did not finish says nothing about the branch"
|
|
789
852
|
),
|
|
853
|
+
output=_timeout_output(exc),
|
|
790
854
|
command=test_command,
|
|
791
855
|
worktree=wt_path,
|
|
792
856
|
)
|
|
@@ -835,4 +899,5 @@ __all__ = [
|
|
|
835
899
|
"notify_client_timeout_seconds",
|
|
836
900
|
"spend_confirmation_budget",
|
|
837
901
|
"unmet_confirmation_capabilities",
|
|
902
|
+
"write_confirmation_output",
|
|
838
903
|
]
|
|
@@ -2011,7 +2011,7 @@ def _run_pass_confirmation(transition: Transition, entry: dict):
|
|
|
2011
2011
|
|
|
2012
2012
|
|
|
2013
2013
|
def _confirmed_pass_verdict(
|
|
2014
|
-
transition: Transition, entry: dict, *, claim_reason: str,
|
|
2014
|
+
transition: Transition, entry: dict, parent_id: str, *, claim_reason: str,
|
|
2015
2015
|
) -> tuple[str, str]:
|
|
2016
2016
|
"""#2464: the ``(test_state, test_reason)`` to record for a *claimed* pass.
|
|
2017
2017
|
|
|
@@ -2033,7 +2033,19 @@ def _confirmed_pass_verdict(
|
|
|
2033
2033
|
#2464, with ``UNCONFIRMED`` in the reason so the row says plainly that
|
|
2034
2034
|
nobody checked. See :mod:`coord.confirm_test` on why a missing toolchain,
|
|
2035
2035
|
a missing checkout or a timeout must never read as a failing branch.
|
|
2036
|
+
|
|
2037
|
+
#2563: whatever output the run captured — failing node ids, the
|
|
2038
|
+
assertion, tracebacks — is also persisted to *parent_id*'s
|
|
2039
|
+
``test_output/<id>.txt`` (:func:`coord.confirm_test.write_confirmation_output`)
|
|
2040
|
+
before this returns, so the escalated fix worker's briefing
|
|
2041
|
+
(`coord/commands/plan_followup.py`, which already reads that file ahead of
|
|
2042
|
+
every other evidence source) quotes the real failure instead of the
|
|
2043
|
+
one-line *reason* alone. ``test_reason`` on the row stays exactly that
|
|
2044
|
+
one-line summary — #1337 deliberately keeps unbounded free text out of the
|
|
2045
|
+
board upsert, and this does not undo that; the file is the long form.
|
|
2036
2046
|
"""
|
|
2047
|
+
from coord.confirm_test import write_confirmation_output # noqa: PLC0415
|
|
2048
|
+
|
|
2037
2049
|
result = _run_pass_confirmation(transition, entry)
|
|
2038
2050
|
|
|
2039
2051
|
if result is None:
|
|
@@ -2044,6 +2056,24 @@ def _confirmed_pass_verdict(
|
|
|
2044
2056
|
"(#2464).",
|
|
2045
2057
|
)
|
|
2046
2058
|
|
|
2059
|
+
# Best-effort and unconditional on *kind*: REFUTED/BASELINE-RED/TIMEOUT/
|
|
2060
|
+
# INFRA/SIGNAL all carry a captured tail (`ConfirmationResult.output`) worth
|
|
2061
|
+
# keeping around; CONFIRMED and setup-stage inconclusives carry none, so
|
|
2062
|
+
# this is simply a no-op for them (`write_confirmation_output` checks
|
|
2063
|
+
# `.output` itself, and swallows `OSError`). Wrapped again here — this
|
|
2064
|
+
# runs inside the reap loop, and this whole module's standing rule is that
|
|
2065
|
+
# nothing in it may abandon a transition; a write failure must degrade to
|
|
2066
|
+
# "no file", never to a dropped verdict.
|
|
2067
|
+
try:
|
|
2068
|
+
write_confirmation_output(parent_id, result)
|
|
2069
|
+
except Exception as exc: # noqa: BLE001
|
|
2070
|
+
log.warning(
|
|
2071
|
+
"smoke %s: could not persist confirmation output for parent %s "
|
|
2072
|
+
"(%s) — the fix briefing will fall back to the one-line reason "
|
|
2073
|
+
"(#2563).",
|
|
2074
|
+
transition.assignment_id, parent_id, exc,
|
|
2075
|
+
)
|
|
2076
|
+
|
|
2047
2077
|
if result.refuted:
|
|
2048
2078
|
log.warning(
|
|
2049
2079
|
"smoke %s: REFUTED the pass claim for %s — %s\n%s",
|
|
@@ -2153,7 +2183,7 @@ def _record_smoke_verdict(
|
|
|
2153
2183
|
# claim would leave no trace it ever happened — including on the
|
|
2154
2184
|
# next reap of the same already-passed parent.
|
|
2155
2185
|
state, reason = _confirmed_pass_verdict(
|
|
2156
|
-
transition, entry,
|
|
2186
|
+
transition, entry, parent_id,
|
|
2157
2187
|
claim_reason="worker self-recorded via `coord test` (#2217)",
|
|
2158
2188
|
)
|
|
2159
2189
|
record_test_verdict(
|
|
@@ -2228,7 +2258,8 @@ def _record_smoke_verdict(
|
|
|
2228
2258
|
# never finished polling (#2272/#2301). Confirm it against a real run
|
|
2229
2259
|
# before it becomes a merge-gate-satisfying verdict.
|
|
2230
2260
|
state, reason = _confirmed_pass_verdict(
|
|
2231
|
-
transition, entry,
|
|
2261
|
+
transition, entry, parent_id,
|
|
2262
|
+
claim_reason="headless smoke reported SMOKE: pass",
|
|
2232
2263
|
)
|
|
2233
2264
|
record_test_verdict(
|
|
2234
2265
|
assignment_id=parent_id,
|
|
@@ -829,6 +829,32 @@ run_python() {
|
|
|
829
829
|
return $?
|
|
830
830
|
fi
|
|
831
831
|
|
|
832
|
+
# #2562: the isolation re-run above is not all-or-nothing evidence — its
|
|
833
|
+
# own `FAILED ` lines say EXACTLY which node ids survived. Rebuild
|
|
834
|
+
# $failed from those before doing anything else: a test that dropped out
|
|
835
|
+
# PASSED in isolation and is by definition the flake case this whole
|
|
836
|
+
# block exists to catch. Handing the ORIGINAL (unpruned) set to the
|
|
837
|
+
# baseline comparison below is the bug this closes — one genuine failure
|
|
838
|
+
# was keeping a flake in the set, and the baseline comparison is itself
|
|
839
|
+
# all-or-nothing (#2170's unanimity), so the flake alone could suppress a
|
|
840
|
+
# correct BASELINE-RED downgrade.
|
|
841
|
+
local still_failed
|
|
842
|
+
still_failed="$(grep '^FAILED ' "$rerun" | awk '{print $2}' | sort -u || true)"
|
|
843
|
+
if [[ -z "$still_failed" ]]; then
|
|
844
|
+
# Non-zero exit but no parseable FAILED lines — e.g. a collection/
|
|
845
|
+
# import error on the isolated re-run. Nothing to prune against;
|
|
846
|
+
# fall back to the original set rather than claim a pruning that
|
|
847
|
+
# did not happen.
|
|
848
|
+
still_failed="$failed"
|
|
849
|
+
fi
|
|
850
|
+
local pruned_count; pruned_count="$(printf '%s\n' "$still_failed" | grep -c . || true)"
|
|
851
|
+
if [[ "$pruned_count" -lt "$count" ]]; then
|
|
852
|
+
log "$((count - pruned_count)) of $count failing test(s) passed in isolation — treating as flakes, comparing the remaining $pruned_count against the baseline"
|
|
853
|
+
FLAKES+=("python:$((count - pruned_count))")
|
|
854
|
+
fi
|
|
855
|
+
failed="$still_failed"
|
|
856
|
+
count="$pruned_count"
|
|
857
|
+
|
|
832
858
|
# Not a flake. Before calling it the branch's fault, ask the question the
|
|
833
859
|
# Test gate is actually asked: is this worse than $BASE_REF on THIS machine?
|
|
834
860
|
# (#2170 — see the baseline section above for why this only ever downgrades
|
|
@@ -299,6 +299,30 @@ class TestConfirmBranch:
|
|
|
299
299
|
assert result.refuted is False
|
|
300
300
|
assert result.inconclusive is True
|
|
301
301
|
|
|
302
|
+
def test_timeout_captures_the_partial_output_before_the_kill(
|
|
303
|
+
self, checkout: Path
|
|
304
|
+
) -> None:
|
|
305
|
+
"""#2563: a timed-out suite still says SOMETHING — whatever it had
|
|
306
|
+
printed by the deadline. `subprocess.run(capture_output=True,
|
|
307
|
+
timeout=...)` fills `TimeoutExpired.stdout`/`.stderr` in on the way
|
|
308
|
+
out; before this, `confirm_branch` discarded both and a TIMEOUT
|
|
309
|
+
verdict carried strictly less evidence than a real failure did.
|
|
310
|
+
"""
|
|
311
|
+
runner = _ScriptedRunner(
|
|
312
|
+
default=subprocess.TimeoutExpired(
|
|
313
|
+
cmd="run-the-suite", timeout=1,
|
|
314
|
+
output="tests/test_x.py::test_a PASSED\ntests/test_x.py::test_b ",
|
|
315
|
+
stderr="Traceback (hung mid-test)",
|
|
316
|
+
)
|
|
317
|
+
)
|
|
318
|
+
result = ct.confirm_branch(
|
|
319
|
+
"api", BRANCH, _StubConfig(repo_path=str(checkout)), runner=runner,
|
|
320
|
+
)
|
|
321
|
+
|
|
322
|
+
assert result.kind == KIND_TIMEOUT, result.reason
|
|
323
|
+
assert "test_a PASSED" in result.output
|
|
324
|
+
assert "Traceback (hung mid-test)" in result.output
|
|
325
|
+
|
|
302
326
|
def test_signal_killed_suite_is_inconclusive_not_a_refutation(
|
|
303
327
|
self, checkout: Path
|
|
304
328
|
) -> None:
|
|
@@ -592,6 +616,54 @@ class TestConfirmationEnabled:
|
|
|
592
616
|
assert ct.confirmation_enabled(object()) is True
|
|
593
617
|
|
|
594
618
|
|
|
619
|
+
class TestWriteConfirmationOutput:
|
|
620
|
+
"""#2563: the missing write — a confirmation's captured tail must reach
|
|
621
|
+
``COORD_DIR/test_output/<assignment_id>.txt``, the same file `coord fix`
|
|
622
|
+
(`coord/commands/plan_followup.py`) already prefers over every other
|
|
623
|
+
evidence source when composing an escalated fix worker's briefing.
|
|
624
|
+
"""
|
|
625
|
+
|
|
626
|
+
def test_writes_the_output_tail_keyed_by_assignment_id(
|
|
627
|
+
self, isolated_coord_dir: Path
|
|
628
|
+
) -> None:
|
|
629
|
+
result = ct.ConfirmationResult(
|
|
630
|
+
kind=KIND_SUITE,
|
|
631
|
+
reason="the independently-run suite command FAILED (exit 1)",
|
|
632
|
+
output="tests/test_x.py::test_a FAILED\nE assert 0 == 1",
|
|
633
|
+
returncode=1,
|
|
634
|
+
)
|
|
635
|
+
|
|
636
|
+
stored = ct.write_confirmation_output("work-1", result)
|
|
637
|
+
|
|
638
|
+
expected = isolated_coord_dir / "test_output" / "work-1.txt"
|
|
639
|
+
assert stored == expected
|
|
640
|
+
assert expected.read_text() == result.output
|
|
641
|
+
|
|
642
|
+
def test_no_op_when_the_result_carries_no_output(
|
|
643
|
+
self, isolated_coord_dir: Path
|
|
644
|
+
) -> None:
|
|
645
|
+
"""`KIND_OK` (confirmed) and setup-stage inconclusives carry an empty
|
|
646
|
+
`.output` — nothing to persist, and nothing should be written."""
|
|
647
|
+
result = ct.ConfirmationResult(kind=KIND_OK, reason="passed", output="")
|
|
648
|
+
|
|
649
|
+
stored = ct.write_confirmation_output("work-1", result)
|
|
650
|
+
|
|
651
|
+
assert stored is None
|
|
652
|
+
assert not (isolated_coord_dir / "test_output").exists()
|
|
653
|
+
|
|
654
|
+
def test_a_write_failure_returns_none_rather_than_raising(
|
|
655
|
+
self, isolated_coord_dir: Path
|
|
656
|
+
) -> None:
|
|
657
|
+
"""This runs inside the reap path (`coord.notify`) — a read-only
|
|
658
|
+
`COORD_DIR`, a full disk, or any other `OSError` must degrade to "no
|
|
659
|
+
file", never abandon the verdict it is attached to."""
|
|
660
|
+
# A file sitting where the directory needs to go makes `mkdir` raise.
|
|
661
|
+
(isolated_coord_dir / "test_output").write_text("not a directory")
|
|
662
|
+
result = ct.ConfirmationResult(kind=KIND_SUITE, reason="x", output="boom")
|
|
663
|
+
|
|
664
|
+
assert ct.write_confirmation_output("work-1", result) is None
|
|
665
|
+
|
|
666
|
+
|
|
595
667
|
# ── the wiring: end to end through post_transition ───────────────────────────
|
|
596
668
|
|
|
597
669
|
|
|
@@ -714,6 +786,51 @@ class TestSmokeVerdictIsConfirmed:
|
|
|
714
786
|
f"guessing: {row['test_reason']!r}"
|
|
715
787
|
)
|
|
716
788
|
|
|
789
|
+
def test_refutation_leaves_the_captured_tail_for_the_fix_briefing(
|
|
790
|
+
self, coord_db, tmp_path: Path, isolated_coord_dir: Path
|
|
791
|
+
) -> None:
|
|
792
|
+
"""#2563: before this, `result.output` reached `log.warning` and
|
|
793
|
+
nowhere else — the escalated fix worker got a one-line reason and no
|
|
794
|
+
failing test names, no tracebacks. `coord fix`
|
|
795
|
+
(`coord/commands/plan_followup.py:962`) reads
|
|
796
|
+
`COORD_DIR/test_output/<parent_work_id>.txt` ahead of every other
|
|
797
|
+
evidence source, so that is where the captured tail must land — keyed
|
|
798
|
+
by the WORK row's id (`work-1`), not the confirming smoke
|
|
799
|
+
transition's (`smoke-1`), since that is the assignment a fix leg is
|
|
800
|
+
spawned from.
|
|
801
|
+
"""
|
|
802
|
+
self._record_work()
|
|
803
|
+
self._record_smoke()
|
|
804
|
+
transition, record, entry = self._transition(tmp_path, "SMOKE: pass")
|
|
805
|
+
captured_output = (
|
|
806
|
+
"tests/test_drive.py::test_a_dead_end_exit_code_reaches_the_"
|
|
807
|
+
"drive_exited_audit_row FAILED\n"
|
|
808
|
+
"tests/test_drive.py:2581: in "
|
|
809
|
+
"test_a_dead_end_exit_code_reaches_the_drive_exited_audit_row\n"
|
|
810
|
+
" assert len(escalations) == 1\n"
|
|
811
|
+
"E assert 0 == 1"
|
|
812
|
+
)
|
|
813
|
+
|
|
814
|
+
self._reap(
|
|
815
|
+
transition, record, entry,
|
|
816
|
+
ct.ConfirmationResult(
|
|
817
|
+
kind=KIND_SUITE,
|
|
818
|
+
reason="the independently-run suite command FAILED (exit 1)",
|
|
819
|
+
output=captured_output,
|
|
820
|
+
returncode=1,
|
|
821
|
+
),
|
|
822
|
+
)
|
|
823
|
+
|
|
824
|
+
stored = isolated_coord_dir / "test_output" / "work-1.txt"
|
|
825
|
+
assert stored.exists(), (
|
|
826
|
+
"a refuted pass claim must leave the captured tail at "
|
|
827
|
+
f"{stored} for `coord fix` to read"
|
|
828
|
+
)
|
|
829
|
+
assert stored.read_text() == captured_output
|
|
830
|
+
# And nothing lands under the smoke leg's OWN id — `coord fix` is
|
|
831
|
+
# dispatched against the work row, not the smoke transition.
|
|
832
|
+
assert not (isolated_coord_dir / "test_output" / "smoke-1.txt").exists()
|
|
833
|
+
|
|
717
834
|
def test_self_recorded_pass_is_overturned_by_a_failing_real_run(
|
|
718
835
|
self, coord_db, tmp_path: Path
|
|
719
836
|
) -> None:
|
|
@@ -850,9 +967,14 @@ class TestSmokeVerdictIsConfirmed:
|
|
|
850
967
|
)
|
|
851
968
|
|
|
852
969
|
def test_baseline_red_confirmation_records_skipped(
|
|
853
|
-
self, coord_db, tmp_path: Path
|
|
970
|
+
self, coord_db, tmp_path: Path, isolated_coord_dir: Path
|
|
854
971
|
) -> None:
|
|
855
|
-
"""#2170's convention: not the branch's fault, so no fix round burns.
|
|
972
|
+
"""#2170's convention: not the branch's fault, so no fix round burns.
|
|
973
|
+
|
|
974
|
+
#2563: a `skipped` verdict whose evidence is unreadable is only
|
|
975
|
+
marginally better than a bare one — the baseline-red tail gets the
|
|
976
|
+
same test_output-file treatment as a REFUTED one.
|
|
977
|
+
"""
|
|
856
978
|
self._record_work()
|
|
857
979
|
self._record_smoke()
|
|
858
980
|
transition, record, entry = self._transition(tmp_path, "SMOKE: pass")
|
|
@@ -860,7 +982,9 @@ class TestSmokeVerdictIsConfirmed:
|
|
|
860
982
|
self._reap(
|
|
861
983
|
transition, record, entry,
|
|
862
984
|
ct.ConfirmationResult(
|
|
863
|
-
kind=KIND_BASELINE_RED,
|
|
985
|
+
kind=KIND_BASELINE_RED,
|
|
986
|
+
reason="every failure reproduces on the base",
|
|
987
|
+
output="tests/test_x.py::test_a FAILED (also red on main)",
|
|
864
988
|
),
|
|
865
989
|
)
|
|
866
990
|
|
|
@@ -868,6 +992,8 @@ class TestSmokeVerdictIsConfirmed:
|
|
|
868
992
|
assert row["test_state"] == "skipped", (
|
|
869
993
|
f"expected 'skipped' for a red baseline, got {row['test_state']!r}"
|
|
870
994
|
)
|
|
995
|
+
stored = isolated_coord_dir / "test_output" / "work-1.txt"
|
|
996
|
+
assert stored.read_text() == "tests/test_x.py::test_a FAILED (also red on main)"
|
|
871
997
|
|
|
872
998
|
def test_a_fail_marker_does_not_spend_a_confirmation_run(
|
|
873
999
|
self, coord_db, tmp_path: Path
|
{code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_coord_test_runner_baseline.py
RENAMED
|
@@ -97,6 +97,15 @@ if [[ "$1" == "-m" && "$2" == "pytest" ]]; then
|
|
|
97
97
|
printf '%s passed\n' "2"
|
|
98
98
|
exit 0
|
|
99
99
|
fi
|
|
100
|
+
# #2562: a PARTIAL isolation re-run — one node id genuinely still
|
|
101
|
+
# fails, the rest passed. Distinct from FAKE_RERUN_PASSES (all pass,
|
|
102
|
+
# exit 0) and from the "no override" default (everything in
|
|
103
|
+
# FAKE_BRANCH_FAILED fails again, as if isolation changed nothing).
|
|
104
|
+
if [[ "$_targeted" -eq 1 && -n "${FAKE_RERUN_STILL_FAILING:-}" ]]; then
|
|
105
|
+
_emit_failed "$FAKE_RERUN_STILL_FAILING"
|
|
106
|
+
printf '1 failed, 1 passed\n'
|
|
107
|
+
exit 1
|
|
108
|
+
fi
|
|
100
109
|
_emit_failed "${FAKE_BRANCH_FAILED:-}"
|
|
101
110
|
printf '2 failed\n'
|
|
102
111
|
exit 1
|
|
@@ -393,6 +402,74 @@ def test_a_flake_is_still_a_flake_and_never_consults_the_baseline(repo: Path) ->
|
|
|
393
402
|
assert "baseline:" not in result.stdout + result.stderr
|
|
394
403
|
|
|
395
404
|
|
|
405
|
+
# ── #2562: partial-flake pruning feeds baseline comparison ──────────────────
|
|
406
|
+
#
|
|
407
|
+
# The all-or-nothing bug: `pytest $failed` re-ran the whole failing set
|
|
408
|
+
# together, so ONE genuine failure alongside a flake kept the flake in
|
|
409
|
+
# `$failed` — and that poisoned set then went to `python_baseline_is_red`,
|
|
410
|
+
# itself unanimity-gated, where the flake (which passes on the baseline same
|
|
411
|
+
# as everywhere else) short-circuited a correct BASELINE-RED downgrade. The
|
|
412
|
+
# fix rebuilds `$failed` from the isolation re-run's own `FAILED ` lines
|
|
413
|
+
# before doing anything else with it.
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
def test_mixed_flake_and_genuine_prunes_to_baseline_red(repo: Path) -> None:
|
|
417
|
+
"""{genuine, flake} prunes to {genuine}, and BASELINE-RED fires on just
|
|
418
|
+
that remainder — the exact CC#2556 shape from the issue: a real flake
|
|
419
|
+
sitting next to a test that fails identically on the merge-base must not
|
|
420
|
+
suppress the downgrade.
|
|
421
|
+
"""
|
|
422
|
+
result = _run(
|
|
423
|
+
repo,
|
|
424
|
+
# Isolation re-run: test_one still fails, test_two (the flake) passed
|
|
425
|
+
# and dropped out.
|
|
426
|
+
FAKE_RERUN_STILL_FAILING="tests/test_ambient.py::test_one",
|
|
427
|
+
# Baseline reproduces the one that's left.
|
|
428
|
+
FAKE_BASELINE_FAILED="tests/test_ambient.py::test_one",
|
|
429
|
+
)
|
|
430
|
+
|
|
431
|
+
assert result.returncode == 4, (result.returncode, result.stdout, result.stderr)
|
|
432
|
+
assert "RESULT: BASELINE-RED (python)" in result.stdout
|
|
433
|
+
assert "1 of 2 failing test(s) passed in isolation" in result.stdout
|
|
434
|
+
assert "comparing the remaining 1 against the baseline" in result.stdout
|
|
435
|
+
assert "BASELINE-RED(python): all 1 failing test(s) fail identically" in result.stdout
|
|
436
|
+
# The pruned flake must not appear as part of the (now genuine-only) set.
|
|
437
|
+
assert "tests/test_ambient.py::test_one" in result.stdout
|
|
438
|
+
assert "RESULT: FAIL" not in result.stdout
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
def test_mixed_flake_and_genuine_prunes_to_a_smaller_genuine_fail(repo: Path) -> None:
|
|
442
|
+
"""Same pruning, but the remainder is NOT baseline-red: still a FAIL, but
|
|
443
|
+
for the pruned count and node id only — the reported list must match
|
|
444
|
+
what actually failed on the isolation re-run, not the original set.
|
|
445
|
+
"""
|
|
446
|
+
result = _run(
|
|
447
|
+
repo,
|
|
448
|
+
FAKE_RERUN_STILL_FAILING="tests/test_ambient.py::test_one",
|
|
449
|
+
# FAKE_BASELINE_FAILED unset ⇒ baseline is green for test_one too.
|
|
450
|
+
)
|
|
451
|
+
|
|
452
|
+
assert result.returncode == 1
|
|
453
|
+
assert "RESULT: FAIL (python)" in result.stdout
|
|
454
|
+
assert "BASELINE-RED" not in result.stdout
|
|
455
|
+
assert "1 of 2 failing test(s) passed in isolation" in result.stdout
|
|
456
|
+
assert "FAIL(python): 1 test(s) fail on re-run — genuine" in result.stdout
|
|
457
|
+
assert "tests/test_ambient.py::test_one" in result.stdout
|
|
458
|
+
assert "tests/test_ambient.py::test_two" not in (
|
|
459
|
+
result.stdout.split("FAIL(python): 1 test(s) fail on re-run — genuine")[1]
|
|
460
|
+
)
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
def test_all_genuine_failing_set_is_unaffected_by_pruning(repo: Path) -> None:
|
|
464
|
+
"""Both failures still fail in isolation ⇒ nothing pruned, and behaviour
|
|
465
|
+
matches the pre-#2562 baseline-red path exactly (no pruning log line)."""
|
|
466
|
+
result = _run(repo, FAKE_BASELINE_FAILED=BRANCH_FAILED)
|
|
467
|
+
|
|
468
|
+
assert result.returncode == 4
|
|
469
|
+
assert "RESULT: BASELINE-RED (python)" in result.stdout
|
|
470
|
+
assert "passed in isolation" not in result.stdout
|
|
471
|
+
|
|
472
|
+
|
|
396
473
|
# ── #2180 review fix: the Test stage must agree with CI on tests/acceptance ─
|
|
397
474
|
#
|
|
398
475
|
# Before this fix, `--ignore=tests/acceptance` dropped the sealed cli-pytest
|
|
@@ -2689,7 +2689,7 @@ class TestConfirmedPassVerdictSignalKill:
|
|
|
2689
2689
|
"coord.notify._run_pass_confirmation", return_value=killed,
|
|
2690
2690
|
):
|
|
2691
2691
|
state, reason = _confirmed_pass_verdict(
|
|
2692
|
-
self._transition(), entry, claim_reason="SMOKE: pass",
|
|
2692
|
+
self._transition(), entry, "work-1", claim_reason="SMOKE: pass",
|
|
2693
2693
|
)
|
|
2694
2694
|
|
|
2695
2695
|
assert state == "passed", (
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/requires.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
File without changes
|
{code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|