code-coordinator 0.5.222__tar.gz → 0.5.223__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.222 → code_coordinator-0.5.223}/PKG-INFO +1 -1
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/code_coordinator.egg-info/SOURCES.txt +1 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/code_coordinator.egg-info/scm_file_list.json +1 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.222 → code_coordinator-0.5.223/coord}/deploy/coord-notify.service +16 -0
- {code_coordinator-0.5.222/coord → code_coordinator-0.5.223}/deploy/coord-notify.service +16 -0
- code_coordinator-0.5.223/tests/test_deploy_notify_unit.py +119 -0
- code_coordinator-0.5.223/tests/test_packaged_deploy_units.py +179 -0
- code_coordinator-0.5.222/tests/test_packaged_deploy_units.py +0 -89
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/.gitignore +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/CLAUDE.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/GOAL.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/LICENSE +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/MANIFEST.in +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/README.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/__init__.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/agent.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/audit.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/block_log.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/board_service.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/brain.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/claim.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/cli.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/client.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/comments.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/config.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/dao.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/db.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/deps.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/drive.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/events.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/filelock.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/freshness.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/gates.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/goal.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/context.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/models.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/render.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/health/units.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/hooks.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/interactive.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/models.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/network.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/notify.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/openapi.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/parentage.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/plans.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/progress.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/release_window.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/reports.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/review.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/self_health.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/smoke.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/split_work.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/state.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/test_author.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/test_report.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/usage.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/install-agent.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/pyproject.toml +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/setup.cfg +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/__init__.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-67/contract.md +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-67/manifest.yml +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/conftest.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_config.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_db.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_events.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_init.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_models.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_network.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_review.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_session.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_split.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_state.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/approved.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.222 → code_coordinator-0.5.223}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -483,6 +483,7 @@ tests/test_deploy_coord_web_dist.py
|
|
|
483
483
|
tests/test_deploy_coord_web_rollback.py
|
|
484
484
|
tests/test_deploy_drive_queue_unit.py
|
|
485
485
|
tests/test_deploy_manifest.py
|
|
486
|
+
tests/test_deploy_notify_unit.py
|
|
486
487
|
tests/test_deploy_units_lane.py
|
|
487
488
|
tests/test_deploy_web_unit.py
|
|
488
489
|
tests/test_deps.py
|
{code_coordinator-0.5.222 → code_coordinator-0.5.223}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -553,6 +553,7 @@
|
|
|
553
553
|
"tests/test_deploy_coord_web_rollback.py",
|
|
554
554
|
"tests/test_deploy_drive_queue_unit.py",
|
|
555
555
|
"tests/test_deploy_manifest.py",
|
|
556
|
+
"tests/test_deploy_notify_unit.py",
|
|
556
557
|
"tests/test_deploy_units_lane.py",
|
|
557
558
|
"tests/test_deploy_web_unit.py",
|
|
558
559
|
"tests/test_deps.py",
|
|
@@ -48,6 +48,22 @@ Wants=network-online.target
|
|
|
48
48
|
|
|
49
49
|
[Service]
|
|
50
50
|
Type=oneshot
|
|
51
|
+
# #2561: this unit carried NO Environment=PATH= at all, so every subprocess
|
|
52
|
+
# `coord notify` spawns — the #2464 out-of-band confirmation pass
|
|
53
|
+
# (coord/confirm_test.py) re-running the repo's real build+test, and any
|
|
54
|
+
# `coord_argv()` (coord/drive.py) escalation resolving `shutil.which("coord")`
|
|
55
|
+
# — ran under systemd's bare user-manager PATH
|
|
56
|
+
# (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:
|
|
57
|
+
# /usr/local/games:/snap/bin), which does NOT contain ~/.local/bin (where the
|
|
58
|
+
# pinned `coord` shim lives) or ~/.cargo/bin (where rustup puts `cargo`). That
|
|
59
|
+
# let this daemon's confirmation runs resolve a *different* toolchain than a
|
|
60
|
+
# dev shell or coord-serve.service would for the identical command — and cost
|
|
61
|
+
# a real dispatch when it refuted a genuinely clean CC#2556 branch over a
|
|
62
|
+
# PATH-dependent test assertion having nothing to do with the diff under
|
|
63
|
+
# review. Byte-identical to coord-serve.service's line (same host, same role
|
|
64
|
+
# family, same #1831/#1117 reasoning — see that unit's comment for why each
|
|
65
|
+
# entry is there and why the ordering matters).
|
|
66
|
+
Environment=PATH=%h/.cargo/bin:%h/.local/bin:%h/src/code-coordinator/.venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
|
|
51
67
|
ExecStart=%h/.coord-venv/bin/coord notify --config %h/.coord/coordinator.yml
|
|
52
68
|
# #2464: sized off `coord.confirm_test.notify_client_timeout_seconds()` — the
|
|
53
69
|
# HTTP timeout the CLI gives its `/notify` POST — plus slack, because this is
|
|
@@ -48,6 +48,22 @@ Wants=network-online.target
|
|
|
48
48
|
|
|
49
49
|
[Service]
|
|
50
50
|
Type=oneshot
|
|
51
|
+
# #2561: this unit carried NO Environment=PATH= at all, so every subprocess
|
|
52
|
+
# `coord notify` spawns — the #2464 out-of-band confirmation pass
|
|
53
|
+
# (coord/confirm_test.py) re-running the repo's real build+test, and any
|
|
54
|
+
# `coord_argv()` (coord/drive.py) escalation resolving `shutil.which("coord")`
|
|
55
|
+
# — ran under systemd's bare user-manager PATH
|
|
56
|
+
# (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:
|
|
57
|
+
# /usr/local/games:/snap/bin), which does NOT contain ~/.local/bin (where the
|
|
58
|
+
# pinned `coord` shim lives) or ~/.cargo/bin (where rustup puts `cargo`). That
|
|
59
|
+
# let this daemon's confirmation runs resolve a *different* toolchain than a
|
|
60
|
+
# dev shell or coord-serve.service would for the identical command — and cost
|
|
61
|
+
# a real dispatch when it refuted a genuinely clean CC#2556 branch over a
|
|
62
|
+
# PATH-dependent test assertion having nothing to do with the diff under
|
|
63
|
+
# review. Byte-identical to coord-serve.service's line (same host, same role
|
|
64
|
+
# family, same #1831/#1117 reasoning — see that unit's comment for why each
|
|
65
|
+
# entry is there and why the ordering matters).
|
|
66
|
+
Environment=PATH=%h/.cargo/bin:%h/.local/bin:%h/src/code-coordinator/.venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
|
|
51
67
|
ExecStart=%h/.coord-venv/bin/coord notify --config %h/.coord/coordinator.yml
|
|
52
68
|
# #2464: sized off `coord.confirm_test.notify_client_timeout_seconds()` — the
|
|
53
69
|
# HTTP timeout the CLI gives its `/notify` POST — plus slack, because this is
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"""Regression guard for `deploy/coord-notify.service` (#2561 `Environment=PATH`).
|
|
2
|
+
|
|
3
|
+
Mirrors `tests/test_deploy_drive_queue_unit.py`'s `Environment=PATH=` section
|
|
4
|
+
for `coord-notify.service`'s own #2561 fix: this unit carried NO
|
|
5
|
+
`Environment=PATH=` at all, so every subprocess it spawns —
|
|
6
|
+
`coord_argv()`-resolved escalation dispatch, and the #2464 out-of-band
|
|
7
|
+
confirmation pass (`coord.confirm_test`) re-running the repo's own build/test
|
|
8
|
+
commands — ran under systemd's bare user-manager PATH instead of the pinned
|
|
9
|
+
release. That silent divergence refuted a genuinely clean branch (CC#2556)
|
|
10
|
+
over a PATH-dependent test assertion having nothing to do with the diff under
|
|
11
|
+
review. See `deploy/coord-notify.service`'s own header comment for the full
|
|
12
|
+
story, and `deploy/coord-serve.service`'s for why each PATH entry is there —
|
|
13
|
+
this unit's line is byte-identical to that one's (same host, same daemon
|
|
14
|
+
family), unlike `coord-drive-queue.service`'s bespoke #2314 ordering.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
import configparser
|
|
20
|
+
from pathlib import Path
|
|
21
|
+
|
|
22
|
+
REPO_ROOT = Path(__file__).resolve().parent.parent
|
|
23
|
+
UNIT_PATH = REPO_ROOT / "deploy" / "coord-notify.service"
|
|
24
|
+
SERVE_UNIT_PATH = REPO_ROOT / "deploy" / "coord-serve.service"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _parse_unit(path: Path) -> configparser.RawConfigParser:
|
|
28
|
+
# RawConfigParser (not ConfigParser): systemd's `%h`/`%%` specifiers
|
|
29
|
+
# collide with configparser's default `%`-interpolation syntax and raise
|
|
30
|
+
# otherwise (e.g. the `ExecStart=` line below).
|
|
31
|
+
cp = configparser.RawConfigParser(strict=False)
|
|
32
|
+
cp.read(path)
|
|
33
|
+
return cp
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _unit_path_entries(path: Path) -> list[str]:
|
|
37
|
+
"""*path*'s `Environment=PATH=` value, split into entries.
|
|
38
|
+
|
|
39
|
+
Asserts its presence first: an absent directive is the exact #2561
|
|
40
|
+
regression (the unit then silently inherits the user manager's default),
|
|
41
|
+
and a bare KeyError from configparser would not say so.
|
|
42
|
+
"""
|
|
43
|
+
unit = _parse_unit(path)
|
|
44
|
+
assert unit.has_option("Service", "Environment"), (
|
|
45
|
+
f"{path.name} declares no Environment=PATH= — it will inherit the "
|
|
46
|
+
"systemd user manager's default PATH, which has neither "
|
|
47
|
+
"~/.local/bin (the pinned `coord` shim) nor ~/.cargo/bin, so every "
|
|
48
|
+
"coord_argv()-resolved subprocess it spawns silently resolves a "
|
|
49
|
+
"different toolchain than a dev shell would (#2561)."
|
|
50
|
+
)
|
|
51
|
+
value = unit.get("Service", "Environment")
|
|
52
|
+
assert value.startswith("PATH="), value
|
|
53
|
+
return value[len("PATH=") :].split(":")
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def test_still_a_oneshot_unit() -> None:
|
|
57
|
+
"""The fix's reasoning (systemd's default PATH, not a login shell's)
|
|
58
|
+
assumes `Type=oneshot`. If this ever changes, re-derive rather than
|
|
59
|
+
silently carry the assumption forward."""
|
|
60
|
+
unit = _parse_unit(UNIT_PATH)
|
|
61
|
+
assert unit.get("Service", "Type") == "oneshot"
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def test_local_bin_is_on_the_path() -> None:
|
|
65
|
+
"""The actual #2561 fix. `~/.local/bin/coord` is the pinned-release
|
|
66
|
+
shim (a symlink onto `~/.coord-venv/bin/coord`); without it on PATH,
|
|
67
|
+
`coord_argv()`'s `shutil.which("coord")` falls back to
|
|
68
|
+
`[sys.executable, "-m", "coord.cli"]`, a different argv shape that
|
|
69
|
+
downstream code (and tests asserting on it) do not expect."""
|
|
70
|
+
assert "%h/.local/bin" in _unit_path_entries(UNIT_PATH)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def test_cargo_bin_is_on_the_path() -> None:
|
|
74
|
+
"""rustup installs `cargo` at ~/.cargo/bin and nowhere else — the #2464
|
|
75
|
+
confirmation pass this unit runs re-executes the repo's own
|
|
76
|
+
`build_command`/`test_command`, which is `cargo build`/`cargo test` for a
|
|
77
|
+
`tui/**`-touching branch."""
|
|
78
|
+
assert "%h/.cargo/bin" in _unit_path_entries(UNIT_PATH)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def test_path_is_a_superset_of_the_systemd_user_default() -> None:
|
|
82
|
+
"""Declaring an explicit PATH *replaces* the inherited one, so anything
|
|
83
|
+
this unit reaches today via the user manager's default must be carried
|
|
84
|
+
over explicitly or the fix trades one silent breakage for another."""
|
|
85
|
+
entries = set(_unit_path_entries(UNIT_PATH))
|
|
86
|
+
# `systemctl --user show-environment` default, minus the games dirs.
|
|
87
|
+
inherited = [
|
|
88
|
+
"/usr/local/sbin", "/usr/local/bin", "/usr/sbin", "/usr/bin",
|
|
89
|
+
"/sbin", "/bin", "/snap/bin",
|
|
90
|
+
]
|
|
91
|
+
missing = [e for e in inherited if e not in entries]
|
|
92
|
+
assert not missing, f"PATH drops inherited entries: {missing}"
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def test_path_has_no_editable_checkout_shadow() -> None:
|
|
96
|
+
"""Enforce #1831's rule with #1831's own detector rather than by eye: no
|
|
97
|
+
`.venv/bin` entry may precede ~/.local/bin or ~/.coord-venv/bin, or the
|
|
98
|
+
`unit_drift` health check goes CRIT on this unit the moment it installs."""
|
|
99
|
+
from coord.health.checks.unit_drift import find_path_shadow
|
|
100
|
+
|
|
101
|
+
assert find_path_shadow(UNIT_PATH.read_text()) is None
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def test_path_matches_coord_serve_byte_for_byte() -> None:
|
|
105
|
+
"""#2561 asked for byte-identity with `coord-serve.service`'s line —
|
|
106
|
+
same host, same daemon family, same #1831/#1117 reasoning for each entry.
|
|
107
|
+
Unlike `coord-drive-queue.service` (a deliberately different, #2314-driven
|
|
108
|
+
ordering), there is no reason for this unit's PATH to diverge from
|
|
109
|
+
`coord-serve.service`'s."""
|
|
110
|
+
assert _unit_path_entries(UNIT_PATH) == _unit_path_entries(SERVE_UNIT_PATH)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def test_path_comment_names_the_issue() -> None:
|
|
114
|
+
"""Same rationale as `test_deploy_drive_queue_unit.py`'s comment guard —
|
|
115
|
+
the reasoning for why this line must never be dropped stays attached to
|
|
116
|
+
it."""
|
|
117
|
+
text = UNIT_PATH.read_text()
|
|
118
|
+
assert "#2561" in text
|
|
119
|
+
assert "Environment=PATH=" in text
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"""`coord/deploy/` must stay byte-identical to the repo-root `deploy/` (#1927).
|
|
2
|
+
|
|
3
|
+
The unit-drift check (`coord/health/checks/unit_drift.py`) diffs each host's
|
|
4
|
+
installed systemd unit against the units *packaged with the installed
|
|
5
|
+
release*. Those live under `coord/deploy/` so they ship in the wheel — a
|
|
6
|
+
reference that cannot drift with the host's git checkout.
|
|
7
|
+
|
|
8
|
+
The reviewed source of truth is still the repo-root `deploy/`: it is what
|
|
9
|
+
every unit header, doc and provisioning script names, and what the other
|
|
10
|
+
`tests/test_deploy_*.py` modules read. The packaged copy is exactly that,
|
|
11
|
+
copied. This module is what stops the copy from going stale — the failure
|
|
12
|
+
mode is silent and nasty, because a stale packaged unit would make the
|
|
13
|
+
release *look* verified while comparing against the wrong file.
|
|
14
|
+
|
|
15
|
+
Nothing here needs a fleet, a config or a clock: it is a repo-layout
|
|
16
|
+
assertion.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
from __future__ import annotations
|
|
20
|
+
|
|
21
|
+
import re
|
|
22
|
+
from pathlib import Path
|
|
23
|
+
|
|
24
|
+
import pytest
|
|
25
|
+
|
|
26
|
+
REPO_ROOT = Path(__file__).resolve().parent.parent
|
|
27
|
+
SOURCE_DIR = REPO_ROOT / "deploy"
|
|
28
|
+
PACKAGED_DIR = REPO_ROOT / "coord" / "deploy"
|
|
29
|
+
|
|
30
|
+
UNIT_GLOBS = ("*.service", "*.timer")
|
|
31
|
+
|
|
32
|
+
# #2561: units whose ExecStart runs a `coord` subcommand that itself launches
|
|
33
|
+
# FURTHER `coord` subprocesses via `coord_argv()` (coord/drive.py) —
|
|
34
|
+
# `shutil.which("coord")`, i.e. resolved from *this unit's own* PATH, not a
|
|
35
|
+
# login shell's. `coord-notify.service` runs the #2464 out-of-band
|
|
36
|
+
# confirmation pass and escalation dispatch; `coord-drive-queue.service`
|
|
37
|
+
# launches `coord drive --tmux` / `coord merge --only` from
|
|
38
|
+
# coord/commands/drive_queue.py. Both went a release cycle with NO
|
|
39
|
+
# `Environment=PATH=` at all, so that resolution silently fell through
|
|
40
|
+
# systemd's bare user-manager PATH (no ~/.local/bin, no ~/.cargo/bin) instead
|
|
41
|
+
# of the pinned release — a real dispatch got refuted over it (#2561's CC#2556
|
|
42
|
+
# incident). `coord-serve.service` and `coord-agent.service` are the other two
|
|
43
|
+
# daemons already on this list; they got their PATH fix in earlier issues
|
|
44
|
+
# (#1831/#1671) and are included here so this test guards them too, not just
|
|
45
|
+
# the two #2561 named.
|
|
46
|
+
#
|
|
47
|
+
# `coord-web.service`, `coord-db-backup.service`,
|
|
48
|
+
# `coord-release-propagate.service` and `coord-release-window.service` are
|
|
49
|
+
# DELIBERATELY not in this set — #2561 asked that the other four units get a
|
|
50
|
+
# considered "does this need it" rather than an accident, not that this test
|
|
51
|
+
# assume the answer. Auditing them is follow-up work, not something to fold in
|
|
52
|
+
# here silently.
|
|
53
|
+
_COORD_ARGV_SPAWNING_UNITS = frozenset(
|
|
54
|
+
{
|
|
55
|
+
"coord-notify.service",
|
|
56
|
+
"coord-drive-queue.service",
|
|
57
|
+
"coord-serve.service",
|
|
58
|
+
"coord-agent.service",
|
|
59
|
+
}
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
_PATH_LINE_RE = re.compile(r"^Environment\s*=\s*PATH=(.*)$", re.MULTILINE)
|
|
63
|
+
|
|
64
|
+
# A PATH entry resolving to the pinned release — `~/.local/bin/coord` is a
|
|
65
|
+
# symlink onto `~/.coord-venv/bin/coord` (see deploy/coord-serve.service's
|
|
66
|
+
# header comment). Either makes `shutil.which("coord")` find the real binary
|
|
67
|
+
# instead of coord_argv()'s `python -m coord.cli` fallback.
|
|
68
|
+
_RELEASE_MARKERS = ("/.local/bin", "/.coord-venv/bin")
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _units(directory: Path) -> dict[str, Path]:
|
|
72
|
+
out: dict[str, Path] = {}
|
|
73
|
+
for pattern in UNIT_GLOBS:
|
|
74
|
+
for path in directory.glob(pattern):
|
|
75
|
+
out[path.name] = path
|
|
76
|
+
return out
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
SOURCE_UNITS = _units(SOURCE_DIR)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def test_source_deploy_dir_has_units() -> None:
|
|
83
|
+
"""Guards the guard: an empty source dir would make every other
|
|
84
|
+
assertion here vacuously true."""
|
|
85
|
+
assert "coord-serve.service" in SOURCE_UNITS
|
|
86
|
+
assert "coord-agent.service" in SOURCE_UNITS
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def test_packaged_dir_covers_every_source_unit() -> None:
|
|
90
|
+
missing = sorted(set(SOURCE_UNITS) - set(_units(PACKAGED_DIR)))
|
|
91
|
+
assert not missing, (
|
|
92
|
+
f"deploy/ has units the wheel would not ship: {missing}. "
|
|
93
|
+
"Run: cp deploy/*.service deploy/*.timer coord/deploy/"
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def test_packaged_dir_has_no_units_of_its_own() -> None:
|
|
98
|
+
extra = sorted(set(_units(PACKAGED_DIR)) - set(SOURCE_UNITS))
|
|
99
|
+
assert not extra, (
|
|
100
|
+
f"coord/deploy/ carries units deploy/ does not: {extra}. The "
|
|
101
|
+
"repo-root deploy/ is the reviewed source of truth; delete these or "
|
|
102
|
+
"add them there."
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
@pytest.mark.parametrize("name", sorted(SOURCE_UNITS))
|
|
107
|
+
def test_packaged_unit_is_byte_identical(name: str) -> None:
|
|
108
|
+
"""A drifted copy is worse than no copy: the check would report a
|
|
109
|
+
confident green against the wrong reference."""
|
|
110
|
+
packaged = PACKAGED_DIR / name
|
|
111
|
+
assert packaged.exists(), f"missing coord/deploy/{name}"
|
|
112
|
+
assert packaged.read_bytes() == (SOURCE_DIR / name).read_bytes(), (
|
|
113
|
+
f"coord/deploy/{name} has drifted from deploy/{name}. deploy/ is the "
|
|
114
|
+
f"source of truth — run: cp deploy/{name} coord/deploy/{name}"
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def test_pyproject_ships_the_packaged_units() -> None:
|
|
119
|
+
"""The copy is only worth having if setuptools puts it in the wheel."""
|
|
120
|
+
import tomllib
|
|
121
|
+
|
|
122
|
+
data = tomllib.loads((REPO_ROOT / "pyproject.toml").read_text())
|
|
123
|
+
patterns = data["tool"]["setuptools"]["package-data"]["coord"]
|
|
124
|
+
assert any(p.startswith("deploy/") for p in patterns), (
|
|
125
|
+
"coord/deploy/ is not in [tool.setuptools.package-data]; the wheel "
|
|
126
|
+
"would ship no reference units and every host would fall back to its "
|
|
127
|
+
"own unverified checkout (#1927)"
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
def test_coord_argv_spawning_units_are_known_source_units() -> None:
|
|
132
|
+
"""Guards the guard: a typo'd/renamed entry in the set below would make
|
|
133
|
+
every assertion in :func:`test_coord_argv_spawning_unit_declares_path`
|
|
134
|
+
vacuously true for that unit."""
|
|
135
|
+
missing = sorted(_COORD_ARGV_SPAWNING_UNITS - set(SOURCE_UNITS))
|
|
136
|
+
assert not missing, (
|
|
137
|
+
f"_COORD_ARGV_SPAWNING_UNITS names units deploy/ does not have: {missing}"
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
@pytest.mark.parametrize("name", sorted(_COORD_ARGV_SPAWNING_UNITS))
|
|
142
|
+
def test_coord_argv_spawning_unit_declares_path(name: str) -> None:
|
|
143
|
+
"""#2561: `coord-notify.service` and `coord-drive-queue.service` carried
|
|
144
|
+
NO `Environment=PATH=` at all, so `coord_argv()`'s `shutil.which("coord")`
|
|
145
|
+
(coord/drive.py) resolved every subprocess they spawn — the #2464
|
|
146
|
+
confirmation pass, escalation dispatch, `coord drive --tmux` — under
|
|
147
|
+
systemd's bare user-manager PATH instead of the pinned release. That
|
|
148
|
+
silent divergence refuted a genuinely clean branch (CC#2556) over a
|
|
149
|
+
PATH-dependent test assertion unrelated to the diff under review.
|
|
150
|
+
|
|
151
|
+
This is a byte-existence/marker check, not a byte-identity one: unlike
|
|
152
|
+
`test_packaged_unit_is_byte_identical`, the units in
|
|
153
|
+
`_COORD_ARGV_SPAWNING_UNITS` do NOT all carry the same PATH= value as each
|
|
154
|
+
other (coord-drive-queue.service's #2314 pin ordering is deliberately
|
|
155
|
+
different from coord-serve.service's #1117 repo-venv entry) — only that
|
|
156
|
+
each one HAS a PATH= line, and that line lets `shutil.which("coord")`
|
|
157
|
+
reach the pinned release rather than falling through to it.
|
|
158
|
+
"""
|
|
159
|
+
text = (SOURCE_DIR / name).read_text()
|
|
160
|
+
matches = _PATH_LINE_RE.findall(text)
|
|
161
|
+
assert matches, (
|
|
162
|
+
f"deploy/{name} declares no Environment=PATH= — every subprocess it "
|
|
163
|
+
"spawns via coord_argv() falls back to systemd's bare user-manager "
|
|
164
|
+
"PATH, which does not contain ~/.local/bin or ~/.cargo/bin (#2561). "
|
|
165
|
+
"Add one — see deploy/coord-serve.service's line for the reasoning."
|
|
166
|
+
)
|
|
167
|
+
# Only the LAST directive takes effect if the unit repeats the key,
|
|
168
|
+
# mirroring coord.health.checks.unit_drift.find_path_shadow.
|
|
169
|
+
entries = [e for e in matches[-1].split(":") if e]
|
|
170
|
+
has_release_marker = any(
|
|
171
|
+
entry.rstrip("/").endswith(marker)
|
|
172
|
+
for entry in entries
|
|
173
|
+
for marker in _RELEASE_MARKERS
|
|
174
|
+
)
|
|
175
|
+
assert has_release_marker, (
|
|
176
|
+
f"deploy/{name}'s Environment=PATH= ({matches[-1]!r}) contains none of "
|
|
177
|
+
f"{_RELEASE_MARKERS} — shutil.which(\"coord\") in subprocesses this "
|
|
178
|
+
"unit spawns cannot resolve the pinned release (#2561)."
|
|
179
|
+
)
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"""`coord/deploy/` must stay byte-identical to the repo-root `deploy/` (#1927).
|
|
2
|
-
|
|
3
|
-
The unit-drift check (`coord/health/checks/unit_drift.py`) diffs each host's
|
|
4
|
-
installed systemd unit against the units *packaged with the installed
|
|
5
|
-
release*. Those live under `coord/deploy/` so they ship in the wheel — a
|
|
6
|
-
reference that cannot drift with the host's git checkout.
|
|
7
|
-
|
|
8
|
-
The reviewed source of truth is still the repo-root `deploy/`: it is what
|
|
9
|
-
every unit header, doc and provisioning script names, and what the other
|
|
10
|
-
`tests/test_deploy_*.py` modules read. The packaged copy is exactly that,
|
|
11
|
-
copied. This module is what stops the copy from going stale — the failure
|
|
12
|
-
mode is silent and nasty, because a stale packaged unit would make the
|
|
13
|
-
release *look* verified while comparing against the wrong file.
|
|
14
|
-
|
|
15
|
-
Nothing here needs a fleet, a config or a clock: it is a repo-layout
|
|
16
|
-
assertion.
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
from __future__ import annotations
|
|
20
|
-
|
|
21
|
-
from pathlib import Path
|
|
22
|
-
|
|
23
|
-
import pytest
|
|
24
|
-
|
|
25
|
-
REPO_ROOT = Path(__file__).resolve().parent.parent
|
|
26
|
-
SOURCE_DIR = REPO_ROOT / "deploy"
|
|
27
|
-
PACKAGED_DIR = REPO_ROOT / "coord" / "deploy"
|
|
28
|
-
|
|
29
|
-
UNIT_GLOBS = ("*.service", "*.timer")
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def _units(directory: Path) -> dict[str, Path]:
|
|
33
|
-
out: dict[str, Path] = {}
|
|
34
|
-
for pattern in UNIT_GLOBS:
|
|
35
|
-
for path in directory.glob(pattern):
|
|
36
|
-
out[path.name] = path
|
|
37
|
-
return out
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
SOURCE_UNITS = _units(SOURCE_DIR)
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
def test_source_deploy_dir_has_units() -> None:
|
|
44
|
-
"""Guards the guard: an empty source dir would make every other
|
|
45
|
-
assertion here vacuously true."""
|
|
46
|
-
assert "coord-serve.service" in SOURCE_UNITS
|
|
47
|
-
assert "coord-agent.service" in SOURCE_UNITS
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
def test_packaged_dir_covers_every_source_unit() -> None:
|
|
51
|
-
missing = sorted(set(SOURCE_UNITS) - set(_units(PACKAGED_DIR)))
|
|
52
|
-
assert not missing, (
|
|
53
|
-
f"deploy/ has units the wheel would not ship: {missing}. "
|
|
54
|
-
"Run: cp deploy/*.service deploy/*.timer coord/deploy/"
|
|
55
|
-
)
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
def test_packaged_dir_has_no_units_of_its_own() -> None:
|
|
59
|
-
extra = sorted(set(_units(PACKAGED_DIR)) - set(SOURCE_UNITS))
|
|
60
|
-
assert not extra, (
|
|
61
|
-
f"coord/deploy/ carries units deploy/ does not: {extra}. The "
|
|
62
|
-
"repo-root deploy/ is the reviewed source of truth; delete these or "
|
|
63
|
-
"add them there."
|
|
64
|
-
)
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
@pytest.mark.parametrize("name", sorted(SOURCE_UNITS))
|
|
68
|
-
def test_packaged_unit_is_byte_identical(name: str) -> None:
|
|
69
|
-
"""A drifted copy is worse than no copy: the check would report a
|
|
70
|
-
confident green against the wrong reference."""
|
|
71
|
-
packaged = PACKAGED_DIR / name
|
|
72
|
-
assert packaged.exists(), f"missing coord/deploy/{name}"
|
|
73
|
-
assert packaged.read_bytes() == (SOURCE_DIR / name).read_bytes(), (
|
|
74
|
-
f"coord/deploy/{name} has drifted from deploy/{name}. deploy/ is the "
|
|
75
|
-
f"source of truth — run: cp deploy/{name} coord/deploy/{name}"
|
|
76
|
-
)
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
def test_pyproject_ships_the_packaged_units() -> None:
|
|
80
|
-
"""The copy is only worth having if setuptools puts it in the wheel."""
|
|
81
|
-
import tomllib
|
|
82
|
-
|
|
83
|
-
data = tomllib.loads((REPO_ROOT / "pyproject.toml").read_text())
|
|
84
|
-
patterns = data["tool"]["setuptools"]["package-data"]["coord"]
|
|
85
|
-
assert any(p.startswith("deploy/") for p in patterns), (
|
|
86
|
-
"coord/deploy/ is not in [tool.setuptools.package-data]; the wheel "
|
|
87
|
-
"would ship no reference units and every host would fall back to its "
|
|
88
|
-
"own unverified checkout (#1927)"
|
|
89
|
-
)
|
|
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.222 → code_coordinator-0.5.223}/code_coordinator.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.222 → code_coordinator-0.5.223}/code_coordinator.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.222 → code_coordinator-0.5.223}/code_coordinator.egg-info/requires.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.222 → code_coordinator-0.5.223}/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
|
|
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
|