code-coordinator 0.5.185__tar.gz → 0.5.186__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.185 → code_coordinator-0.5.186}/PKG-INFO +1 -1
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/config.py +9 -5
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-web-dist-build.service +6 -5
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-web-dist-build.timer +12 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/deploy_lane_facts.py +28 -24
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/fleet_deploy_lanes.py +2 -2
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/release_verify.py +1 -1
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-web-dist-build.service +6 -5
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-web-dist-build.sh +56 -30
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-web-dist-build.timer +12 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/ADR_COORD_WEB_DIST.md +11 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/AGENT_OPERATIONS.md +14 -12
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/PHONE_WEBAPP.md +14 -10
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_deploy_coord_web_dist.py +82 -2
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_health_deploy_lane_facts.py +66 -18
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/.gitignore +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/CLAUDE.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/GOAL.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/LICENSE +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/MANIFEST.in +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/README.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/__init__.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/agent.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/audit.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/block_log.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/board_service.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/brain.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/claim.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/cli.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/client.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/comments.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/dao.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/db.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deps.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/drive.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/events.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/filelock.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/freshness.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/gates.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/goal.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/context.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/models.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/render.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/units.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/hooks.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/interactive.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/models.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/network.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/notify.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/openapi.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/parentage.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/plans.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/progress.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/release_window.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/reports.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/review.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/self_health.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/smoke.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/split_work.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/state.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/test_author.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/test_report.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/usage.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/install-agent.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/pyproject.toml +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/setup.cfg +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/__init__.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/conftest.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_config.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_db.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_events.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_init.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_models.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_network.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_review.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_session.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_split.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_state.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.185 → code_coordinator-0.5.186}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -1617,11 +1617,15 @@ class HealthConfig:
|
|
|
1617
1617
|
# None → ~/coord-web-dist — the symlink `deploy/coord-web-dist-build.timer`
|
|
1618
1618
|
# atomically repoints at each new release (#1543).
|
|
1619
1619
|
webapp_dist_path: str | None = None
|
|
1620
|
-
# Directory holding the coord
|
|
1621
|
-
#
|
|
1622
|
-
#
|
|
1623
|
-
#
|
|
1624
|
-
#
|
|
1620
|
+
# Directory holding the `coord-web` sources the bundle was built from
|
|
1621
|
+
# (#2470; before epic #2002 split the webapp out into its own repo, this
|
|
1622
|
+
# was `coord/dashboard/webapp/` inside THIS repo). None → `<checkout>/src`
|
|
1623
|
+
# for this machine's `coord-web` checkout, discovered the same way
|
|
1624
|
+
# `coord_web_checkout` is (see
|
|
1625
|
+
# `coord.health.checks.coord_web_ci_pin.resolve_coord_web_checkout`).
|
|
1626
|
+
# Same `src/`-not-root reasoning as `tui_source_dir`: rooting at the
|
|
1627
|
+
# webapp package root would sweep `node_modules`/`dist` were they not
|
|
1628
|
+
# already skipped by name.
|
|
1625
1629
|
webapp_source_dir: str | None = None
|
|
1626
1630
|
# Absolute path to the heartbeat coord-web-dist-build.sh writes on EVERY
|
|
1627
1631
|
# invocation, whether or not there was anything to build (#2122). None →
|
{code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-web-dist-build.service
RENAMED
|
@@ -4,13 +4,14 @@
|
|
|
4
4
|
#
|
|
5
5
|
# A systemd *user* unit, Type=oneshot, mirroring coord-drive-queue.service's
|
|
6
6
|
# tick pattern (timer-fired, its own flock so a slow run can't stack). Runs
|
|
7
|
-
# deploy/coord-web-dist-build.sh, which:
|
|
7
|
+
# deploy/coord-web-dist-build.sh, which (#2470: tracks the dedicated
|
|
8
|
+
# `coord-web` repo, not `coord/dashboard/webapp/` inside THIS repo — see
|
|
9
|
+
# docs/ADR_COORD_WEB_DIST.md; #2009: that used to be ~/src/code-coordinator,
|
|
10
|
+
# back when the webapp was a subdirectory of this repo):
|
|
8
11
|
# - fetches origin/main into ~/src/coord-web (read-only — only
|
|
9
12
|
# `git fetch` + `rev-parse`, never touches that checkout's working tree
|
|
10
|
-
# or whatever branch an operator has it parked on)
|
|
11
|
-
#
|
|
12
|
-
# subdirectory of this repo,
|
|
13
|
-
# - builds that repo's ROOT at that SHA inside a DEDICATED worktree
|
|
13
|
+
# or whatever branch an operator has it parked on),
|
|
14
|
+
# - builds coord-web's repo root from that SHA inside a DEDICATED worktree
|
|
14
15
|
# (~/.coord-web-checkout, never shared with an operator or `coord drive`),
|
|
15
16
|
# - atomically repoints ~/coord-web-dist at the new build.
|
|
16
17
|
#
|
{code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/deploy/coord-web-dist-build.timer
RENAMED
|
@@ -48,6 +48,18 @@
|
|
|
48
48
|
# overlap the flock, in which case the next fire simply retries 10 minutes
|
|
49
49
|
# later.
|
|
50
50
|
#
|
|
51
|
+
# #2470: this unit now tracks the dedicated `coord-web` repo's `main`
|
|
52
|
+
# (deploy/coord-web-dist-build.sh's BASE_CHECKOUT/WEBAPP_CHECKOUT), not
|
|
53
|
+
# `coord/dashboard/webapp/` inside THIS repo (docs/ADR_COORD_WEB_DIST.md).
|
|
54
|
+
# The cadence measurement above predates that split and was taken against
|
|
55
|
+
# this repo's merge history; it stays the right order-of-magnitude
|
|
56
|
+
# justification for 10 minutes because `coord-web`, being a repo dedicated
|
|
57
|
+
# entirely to the webapp, has EVERY merge to its `main` in-scope for a build
|
|
58
|
+
# — there is no "does this commit touch webapp/ at all" filtering to do
|
|
59
|
+
# anymore (the script never filtered by path either; it always rebuilt on
|
|
60
|
+
# any `origin/main` SHA change, webapp-only or not — this just makes that
|
|
61
|
+
# now-trivially-true for the repo it targets).
|
|
62
|
+
#
|
|
51
63
|
# Install: see deploy/coord-web-dist-build.sh's header, or
|
|
52
64
|
# docs/PHONE_WEBAPP.md / docs/AGENT_OPERATIONS.md.
|
|
53
65
|
|
{code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/deploy_lane_facts.py
RENAMED
|
@@ -38,10 +38,14 @@ wheel's version the way ``agent_venv``/``spawned_coord`` are —
|
|
|
38
38
|
``~/.coord-venv`` release cadence, so "is it on the released version?" is
|
|
39
39
|
not a well-formed question for it. What *is* well-formed, and what this
|
|
40
40
|
checks — mirroring ``tui_binary`` exactly — is whether the live bundle is
|
|
41
|
-
older than the
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
:func:`resolve_webapp_source_dir
|
|
41
|
+
older than the source tree it claims to have been built from: the
|
|
42
|
+
`coord-web` repo's own checkout (#2470; retargeted from this repo's now-gone
|
|
43
|
+
``coord/dashboard/webapp/`` once the webapp moved out under epic #2002 —
|
|
44
|
+
see :func:`resolve_webapp_source_dir`, which shares its checkout-discovery
|
|
45
|
+
convention with ``coord.health.checks.coord_web_ci_pin`` so the two checks
|
|
46
|
+
can never disagree about which local checkout *is* `coord-web`, with a
|
|
47
|
+
fallback to the pre-#2009 in-repo layout for a checkout still parked on a
|
|
48
|
+
pre-split commit).
|
|
45
49
|
"""
|
|
46
50
|
|
|
47
51
|
from __future__ import annotations
|
|
@@ -50,6 +54,7 @@ import subprocess
|
|
|
50
54
|
|
|
51
55
|
from coord.dist_name import CANDIDATE_NAMES
|
|
52
56
|
from coord.health.checks.agent_install import pip_show
|
|
57
|
+
from coord.health.checks.coord_web_ci_pin import resolve_coord_web_checkout
|
|
53
58
|
from coord.health.models import CheckResult, HealthContext, Severity
|
|
54
59
|
from coord.health.registry import check
|
|
55
60
|
from coord.health.units import expand, shorten_path
|
|
@@ -142,31 +147,30 @@ def resolve_webapp_build_heartbeat_path(ctx: HealthContext):
|
|
|
142
147
|
def resolve_webapp_source_dir(ctx: HealthContext):
|
|
143
148
|
"""The webapp source tree in the first local checkout that has one.
|
|
144
149
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
lane reporting UNKNOWN there would be a regression in signal for no
|
|
160
|
-
gain. It can only ever match a tree that genuinely is webapp source.
|
|
150
|
+
Prefers a `coord-web` checkout (#2470), discovered via
|
|
151
|
+
:func:`coord.health.checks.coord_web_ci_pin.resolve_coord_web_checkout`
|
|
152
|
+
— the same "checkout named ``coord-web``, else one carrying
|
|
153
|
+
``playwright.acceptance.config.ts`` at its root" discovery that check
|
|
154
|
+
already uses — so `webapp_bundle` and `coord_web_ci_pin` can never
|
|
155
|
+
disagree about which local checkout is `coord-web`. That checkout's
|
|
156
|
+
``src/`` is the webapp root (#2009, epic #2002).
|
|
157
|
+
|
|
158
|
+
Falls back to ``<checkout>/coord/dashboard/webapp/src`` — the pre-#2009
|
|
159
|
+
in-repo layout. Kept because a machine can legitimately still have an
|
|
160
|
+
older ``claude-coordinator`` checkout parked on a pre-split commit, and
|
|
161
|
+
this lane reporting UNKNOWN there would be a regression in signal for no
|
|
162
|
+
gain. Configured ``health.webapp_source_dir`` still wins outright, same
|
|
163
|
+
convention as every other path in this module.
|
|
161
164
|
"""
|
|
162
165
|
configured = getattr(ctx.thresholds, "webapp_source_dir", None)
|
|
163
166
|
if configured:
|
|
164
167
|
return expand(configured, ctx.home)
|
|
168
|
+
checkout = resolve_coord_web_checkout(ctx)
|
|
169
|
+
if checkout is not None:
|
|
170
|
+
candidate = checkout / "src"
|
|
171
|
+
if candidate.is_dir():
|
|
172
|
+
return candidate
|
|
165
173
|
for checkout in ctx.checkouts:
|
|
166
|
-
if (checkout.path / "package.json").is_file():
|
|
167
|
-
candidate = checkout.path / "src"
|
|
168
|
-
if candidate.is_dir():
|
|
169
|
-
return candidate
|
|
170
174
|
candidate = checkout.path / "coord" / "dashboard" / "webapp" / "src"
|
|
171
175
|
if candidate.is_dir():
|
|
172
176
|
return candidate
|
{code_coordinator-0.5.185 → code_coordinator-0.5.186}/coord/health/checks/fleet_deploy_lanes.py
RENAMED
|
@@ -351,8 +351,8 @@ def probe_tui_binary(ctx: HealthContext) -> CheckResult:
|
|
|
351
351
|
order=13,
|
|
352
352
|
description=(
|
|
353
353
|
"The dist/ bundle `coord web --dist` serves is not older than the "
|
|
354
|
-
"coord
|
|
355
|
-
"on every machine that has one (#1834 lane 5)."
|
|
354
|
+
"`coord-web` source tree it was supposedly built from, "
|
|
355
|
+
"on every machine that has one (#1834 lane 5, #2470)."
|
|
356
356
|
),
|
|
357
357
|
)
|
|
358
358
|
def probe_webapp_bundle(ctx: HealthContext) -> CheckResult:
|
|
@@ -395,7 +395,7 @@ def findings_for_host(host: str, health: dict | None) -> list[Finding]:
|
|
|
395
395
|
)
|
|
396
396
|
)
|
|
397
397
|
|
|
398
|
-
# ── webapp bundle vs coord
|
|
398
|
+
# ── webapp bundle vs coord-web's own source tree (#1834 lane 5, #2470) ─
|
|
399
399
|
# Deliberately not a Lane/version comparison — see release_verify.py's
|
|
400
400
|
# module docstring and coord.health.checks.fleet_deploy_lanes: the
|
|
401
401
|
# bundle is versioned by origin/main's SHA on a continuous publish
|
|
@@ -4,13 +4,14 @@
|
|
|
4
4
|
#
|
|
5
5
|
# A systemd *user* unit, Type=oneshot, mirroring coord-drive-queue.service's
|
|
6
6
|
# tick pattern (timer-fired, its own flock so a slow run can't stack). Runs
|
|
7
|
-
# deploy/coord-web-dist-build.sh, which:
|
|
7
|
+
# deploy/coord-web-dist-build.sh, which (#2470: tracks the dedicated
|
|
8
|
+
# `coord-web` repo, not `coord/dashboard/webapp/` inside THIS repo — see
|
|
9
|
+
# docs/ADR_COORD_WEB_DIST.md; #2009: that used to be ~/src/code-coordinator,
|
|
10
|
+
# back when the webapp was a subdirectory of this repo):
|
|
8
11
|
# - fetches origin/main into ~/src/coord-web (read-only — only
|
|
9
12
|
# `git fetch` + `rev-parse`, never touches that checkout's working tree
|
|
10
|
-
# or whatever branch an operator has it parked on)
|
|
11
|
-
#
|
|
12
|
-
# subdirectory of this repo,
|
|
13
|
-
# - builds that repo's ROOT at that SHA inside a DEDICATED worktree
|
|
13
|
+
# or whatever branch an operator has it parked on),
|
|
14
|
+
# - builds coord-web's repo root from that SHA inside a DEDICATED worktree
|
|
14
15
|
# (~/.coord-web-checkout, never shared with an operator or `coord drive`),
|
|
15
16
|
# - atomically repoints ~/coord-web-dist at the new build.
|
|
16
17
|
#
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
#
|
|
3
|
-
# coord-web-dist-build.sh — build the
|
|
4
|
-
# `main` into a directory `coord web --dist` serves, WITHOUT
|
|
5
|
-
# ~/.coord-venv (#1543
|
|
3
|
+
# coord-web-dist-build.sh — build the React webapp from the `coord-web`
|
|
4
|
+
# repo's merged `main` into a directory `coord web --dist` serves, WITHOUT
|
|
5
|
+
# touching ~/.coord-venv (#1543; retargeted at `coord-web` by #2470 once the
|
|
6
|
+
# webapp moved out of THIS repo into its own, epic #2002 — see
|
|
7
|
+
# docs/ADR_COORD_WEB_DIST.md for the decision. Before #2470 this built
|
|
8
|
+
# `coord/dashboard/webapp` out of a `claude-coordinator` checkout; the
|
|
9
|
+
# mechanism below is otherwise unchanged, only which repo it points at).
|
|
6
10
|
#
|
|
7
11
|
# Why this exists: coord-web, coord-agent and coord-serve all `ExecStart`
|
|
8
12
|
# from the SAME ~/.coord-venv, so "ship a webapp change" used to mean
|
|
9
13
|
# `pip install --upgrade code-coordinator` on that venv — which also
|
|
10
14
|
# upgrades the board daemon and the agent runtime on that host, and
|
|
11
15
|
# `coord agent update` is already known to kill running headless workers
|
|
12
|
-
# (see the #1543 issue body). This script decouples the two: it keeps
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
#
|
|
16
|
-
#
|
|
16
|
+
# (see the #1543 issue body). This script decouples the two: it keeps a
|
|
17
|
+
# DEDICATED clone of the `coord-web` repo (never an operator's own
|
|
18
|
+
# `~/src/coord-web` dev checkout's working tree — same "never the checkout
|
|
19
|
+
# someone else is using" rule this script has always applied to the repo it
|
|
20
|
+
# builds from), builds it from merged main into a fresh, timestamped release
|
|
21
|
+
# directory, and atomically repoints a symlink at it. `coord web --dist
|
|
22
|
+
# ~/coord-web-dist` (see deploy/coord-web.service) always points at that
|
|
23
|
+
# symlink.
|
|
17
24
|
#
|
|
18
25
|
# #2009 (epic #2002) — WHICH repo this builds changed, nothing else did.
|
|
19
26
|
# Until the split, `$BASE_CHECKOUT` was a checkout of *claude-coordinator*
|
|
@@ -28,11 +35,12 @@
|
|
|
28
35
|
# file (#2122) all carry over untouched, because none of them ever depended
|
|
29
36
|
# on which repo the source came from.
|
|
30
37
|
#
|
|
31
|
-
#
|
|
32
|
-
#
|
|
33
|
-
# `
|
|
34
|
-
# `$
|
|
35
|
-
#
|
|
38
|
+
# The health check boots a real `coord web --fixture` and needs a board
|
|
39
|
+
# fixture JSON for it — `coord-web` vendored its own copy of the one
|
|
40
|
+
# `e2e/fixtureServer.ts` already uses (post-#2005 split, commit 7e0bf5b), so
|
|
41
|
+
# this reads `$WEBAPP_CHECKOUT/e2e/fixtures/board-pipeline-basic.json` and
|
|
42
|
+
# has no dependency on a claude-coordinator checkout being present. Set
|
|
43
|
+
# `$HEALTH_CHECK_FIXTURE` directly to override.
|
|
36
44
|
#
|
|
37
45
|
# NO RESTART of coord-web is required after the first build. Starlette's
|
|
38
46
|
# StaticFiles/FileResponse re-resolve the directory on every request (see
|
|
@@ -45,14 +53,21 @@
|
|
|
45
53
|
# once, THEN start/enable coord-web.
|
|
46
54
|
#
|
|
47
55
|
# Safe to run unattended on a timer (see coord-web-dist-build.timer): it
|
|
48
|
-
# never touches ~/.coord-venv
|
|
49
|
-
#
|
|
50
|
-
#
|
|
51
|
-
#
|
|
52
|
-
#
|
|
53
|
-
#
|
|
56
|
+
# never touches ~/.coord-venv or $BASE_CHECKOUT's working tree (only
|
|
57
|
+
# `git fetch`/`rev-parse` run there — the actual build happens in a
|
|
58
|
+
# SEPARATE, DEDICATED `git worktree`, $WEBAPP_CHECKOUT, so it can't collide
|
|
59
|
+
# with whatever branch an operator has $BASE_CHECKOUT parked on — same
|
|
60
|
+
# reasoning as `coord drive`'s worktree isolation), or any running
|
|
61
|
+
# coord-agent/coord-serve/coord-web process. A `flock` guards against
|
|
62
|
+
# overlapping runs; a same-SHA re-run is a fast no-op.
|
|
54
63
|
#
|
|
55
|
-
# Install:
|
|
64
|
+
# Install: $BASE_CHECKOUT (default ~/src/coord-web) must be a real, already-
|
|
65
|
+
# cloned `coord-web` checkout before the first run — this script only
|
|
66
|
+
# fetches/rev-parses/worktrees off it, it never `git clone`s one into
|
|
67
|
+
# existence. Use a checkout dedicated to this deploy lane if the operator
|
|
68
|
+
# also keeps their own `coord-web` dev checkout elsewhere on this box.
|
|
69
|
+
#
|
|
70
|
+
# git clone <coord-web-remote> ~/src/coord-web # one-time, if not already there
|
|
56
71
|
# cp deploy/coord-web-dist-build.sh ~/.local/bin/ # or run in place
|
|
57
72
|
# chmod +x ~/.local/bin/coord-web-dist-build.sh
|
|
58
73
|
# ~/.local/bin/coord-web-dist-build.sh # first build, before
|
|
@@ -116,6 +131,12 @@
|
|
|
116
131
|
|
|
117
132
|
set -uo pipefail
|
|
118
133
|
|
|
134
|
+
# #2470: tracks the `coord-web` repo's main, not this repo's — see the
|
|
135
|
+
# header. $BASE_CHECKOUT is read-only from this script's point of view (only
|
|
136
|
+
# `git fetch`/`rev-parse`/`worktree add` ever touch it, never `checkout`), so
|
|
137
|
+
# an operator's own `coord-web` dev checkout at the default path is safe in
|
|
138
|
+
# principle, but a checkout dedicated to this deploy lane is still the
|
|
139
|
+
# documented install step — see the header's "Install" section.
|
|
119
140
|
SRC_ROOT="${SRC_ROOT:-$HOME/src}"
|
|
120
141
|
# #2009: the webapp's repo, not claude-coordinator's. See the header.
|
|
121
142
|
REPO_NAME="${REPO_NAME:-coord-web}"
|
|
@@ -126,10 +147,6 @@ BRANCH="${BRANCH:-main}"
|
|
|
126
147
|
# hard-coded `coord/dashboard/webapp`, and stays configurable so a future
|
|
127
148
|
# monorepo layout needs an env var rather than an edit here.
|
|
128
149
|
WEBAPP_SUBDIR="${WEBAPP_SUBDIR:-}"
|
|
129
|
-
# claude-coordinator's checkout — needed ONLY for the health-check fixture
|
|
130
|
-
# below, which lives in that repo's tests/fixtures/ and has no coord-web
|
|
131
|
-
# equivalent. Not fetched, not built, not written to.
|
|
132
|
-
COORD_CHECKOUT="${COORD_CHECKOUT:-$SRC_ROOT/code-coordinator}"
|
|
133
150
|
|
|
134
151
|
# A worktree DEDICATED to this script — never the same directory an operator
|
|
135
152
|
# or `coord drive` worktree might be using, and never checked out over a
|
|
@@ -168,9 +185,20 @@ HEALTH_CHECK_PORT="${HEALTH_CHECK_PORT:-18434}"
|
|
|
168
185
|
HEALTH_CHECK_TIMEOUT_SECS="${HEALTH_CHECK_TIMEOUT_SECS:-20}"
|
|
169
186
|
# The reference seeded board (#1538) — deterministic, no DB/fleet/network, so
|
|
170
187
|
# the scratch instance below never touches ~/.coord/coord.db or races the
|
|
171
|
-
# real coord-web/coord-serve/coord-agent processes. Defaults to the
|
|
172
|
-
#
|
|
173
|
-
#
|
|
188
|
+
# real coord-web/coord-serve/coord-agent processes. Defaults to the copy
|
|
189
|
+
# checked into $WEBAPP_CHECKOUT (the `coord-web` SHA being deployed) at
|
|
190
|
+
# `e2e/fixtures/board-pipeline-basic.json` — that is where the fixture
|
|
191
|
+
# actually lives in the `coord-web` repo (`git ls-tree -r --name-only
|
|
192
|
+
# origin/main` has no `tests/` directory at all post-split). NOTE:
|
|
193
|
+
# `coord-web`'s own `playwright.acceptance.config.ts` still has a stale
|
|
194
|
+
# `DEFAULT_FIXTURE` pointing at the old `tests/fixtures/...` path (a
|
|
195
|
+
# leftover `REPO_ROOT` miscalculation from before the repo split — see
|
|
196
|
+
# docs/ADR_COORD_WEB_DIST.md) so do NOT use that config as the source of
|
|
197
|
+
# truth for this path; this comment documents the real, verified location
|
|
198
|
+
# instead (#2470). This is never a claim that the fixture matches the
|
|
199
|
+
# INSTALLED `coord`'s server code, which post-#2002-split is versioned
|
|
200
|
+
# independently (see docs/ADR_COORD_WEB_DIST.md, "Staleness across the
|
|
201
|
+
# split").
|
|
174
202
|
HEALTH_CHECK_FIXTURE="${HEALTH_CHECK_FIXTURE:-}"
|
|
175
203
|
|
|
176
204
|
say() { echo "[$(date -Is)] $*" >&2; }
|
|
@@ -220,9 +248,7 @@ health_check_release() {
|
|
|
220
248
|
return 1
|
|
221
249
|
fi
|
|
222
250
|
|
|
223
|
-
|
|
224
|
-
# the fixture is a coord *board* fixture and never moved to coord-web.
|
|
225
|
-
fixture="${HEALTH_CHECK_FIXTURE:-$COORD_CHECKOUT/tests/fixtures/board-pipeline-basic.json}"
|
|
251
|
+
fixture="${HEALTH_CHECK_FIXTURE:-$WEBAPP_CHECKOUT/e2e/fixtures/board-pipeline-basic.json}"
|
|
226
252
|
if [[ ! -f "$fixture" ]]; then
|
|
227
253
|
say "ERROR: health-check fixture missing: $fixture — cannot health-check $release_dir"
|
|
228
254
|
return 1
|
|
@@ -48,6 +48,18 @@
|
|
|
48
48
|
# overlap the flock, in which case the next fire simply retries 10 minutes
|
|
49
49
|
# later.
|
|
50
50
|
#
|
|
51
|
+
# #2470: this unit now tracks the dedicated `coord-web` repo's `main`
|
|
52
|
+
# (deploy/coord-web-dist-build.sh's BASE_CHECKOUT/WEBAPP_CHECKOUT), not
|
|
53
|
+
# `coord/dashboard/webapp/` inside THIS repo (docs/ADR_COORD_WEB_DIST.md).
|
|
54
|
+
# The cadence measurement above predates that split and was taken against
|
|
55
|
+
# this repo's merge history; it stays the right order-of-magnitude
|
|
56
|
+
# justification for 10 minutes because `coord-web`, being a repo dedicated
|
|
57
|
+
# entirely to the webapp, has EVERY merge to its `main` in-scope for a build
|
|
58
|
+
# — there is no "does this commit touch webapp/ at all" filtering to do
|
|
59
|
+
# anymore (the script never filtered by path either; it always rebuilt on
|
|
60
|
+
# any `origin/main` SHA change, webapp-only or not — this just makes that
|
|
61
|
+
# now-trivially-true for the repo it targets).
|
|
62
|
+
#
|
|
51
63
|
# Install: see deploy/coord-web-dist-build.sh's header, or
|
|
52
64
|
# docs/PHONE_WEBAPP.md / docs/AGENT_OPERATIONS.md.
|
|
53
65
|
|
|
@@ -156,3 +156,14 @@ timer is still alive.
|
|
|
156
156
|
- Options 2 and 3 remain available to revisit if `coord-web` ever needs a
|
|
157
157
|
distribution channel independent of this fleet's own daemon host — no
|
|
158
158
|
requirement in scope today calls for that.
|
|
159
|
+
- Known follow-up, not fixed here: `coord-web`'s own
|
|
160
|
+
`playwright.acceptance.config.ts` computes `DEFAULT_FIXTURE` via a
|
|
161
|
+
`REPO_ROOT = path.resolve(here, '../../..')` climb that predates the
|
|
162
|
+
split, when that config lived three levels down under
|
|
163
|
+
`coord/dashboard/webapp/`. Now that the config lives at the `coord-web`
|
|
164
|
+
repo root, that climb resolves outside the repo entirely, so the default
|
|
165
|
+
points at a path that doesn't exist — the same class of bug #2470 fixed
|
|
166
|
+
in `deploy/coord-web-dist-build.sh`'s health-check fixture default (now
|
|
167
|
+
`$WEBAPP_CHECKOUT/e2e/fixtures/board-pipeline-basic.json`). Will bite
|
|
168
|
+
`coord-web`'s own `npm run test:acceptance` whenever it runs with no
|
|
169
|
+
explicit fixture path arg; needs a fix in the `coord-web` repo, not here.
|
|
@@ -1418,7 +1418,7 @@ Three things follow, and they are why this command is shaped the way it is:
|
|
|
1418
1418
|
| unit files vs the packaged `coord/deploy/**` | each machine's `/health` | `unit_drift` / PATH shadow (#1831, #1927) |
|
|
1419
1419
|
| `~/.coord-cli-venv` | each machine's `/health` | `cli_venv` (#1806) |
|
|
1420
1420
|
| `coord-tui` binary vs `tui/` source | each machine's `/health` | `tui_binary` — until PKG-3/PKG-4 give it a real channel |
|
|
1421
|
-
| `coord web --dist` bundle vs `coord
|
|
1421
|
+
| `coord web --dist` bundle vs `coord-web`'s own source | each machine's `/health` | `webapp_bundle` / `fleet_webapp_bundle` — lane 5, staleness only (see below) |
|
|
1422
1422
|
|
|
1423
1423
|
`.githooks/**` (lane 6 above) is deliberately **not** graded here: its failure
|
|
1424
1424
|
mode is the inverse — it is live everywhere at the next `git fetch`, with no
|
|
@@ -1431,17 +1431,19 @@ row above — deliberately, not by oversight.** Every other lane compares
|
|
|
1431
1431
|
against *the released version*: a pip version string that both an agent venv
|
|
1432
1432
|
and a spawned `coord` can report. The webapp bundle has no such string to
|
|
1433
1433
|
compare against. `deploy/coord-web-dist-build.timer` publishes it
|
|
1434
|
-
continuously off `origin/main`
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1434
|
+
continuously off the `coord-web` repo's `origin/main` SHA (#2470; before
|
|
1435
|
+
that, this repo's own `coord/dashboard/webapp/`, epic #2002), every 10
|
|
1436
|
+
minutes (#2122), **decoupled on purpose** from the `~/.coord-venv` release
|
|
1437
|
+
cadence every other lane rides (#1543) — that decoupling is the entire point
|
|
1438
|
+
of that pipeline, so folding it into the version-skew map above would
|
|
1439
|
+
manufacture permanent, meaningless "skew" between a semver string and a git
|
|
1440
|
+
SHA on every correctly-running fleet, not report a real defect. What
|
|
1441
|
+
`webapp_bundle` (machine-scope) / `fleet_webapp_bundle` (fleet-scope) check
|
|
1442
|
+
instead, on its own terms — the same shape `tui_binary`/`fleet_tui_binary`
|
|
1443
|
+
already use for the locally-built `coord-tui` binary — is whether the live
|
|
1444
|
+
bundle is *stale relative to the `coord-web` source tree it claims to have
|
|
1445
|
+
been built from*, and whether two machines both serving `coord web` agree on
|
|
1446
|
+
which build that is.
|
|
1445
1447
|
A WARN there means "`coord-web-dist-build.timer` has stopped publishing",
|
|
1446
1448
|
which is the failure mode this lane exists to catch; it says nothing about
|
|
1447
1449
|
whether that publish is caught up with the latest tagged release, because
|
|
@@ -126,11 +126,12 @@ cd coord/dashboard/webapp && npm run build
|
|
|
126
126
|
|
|
127
127
|
---
|
|
128
128
|
|
|
129
|
-
> **Repo split (#2004):** `coord/dashboard/webapp/**`
|
|
130
|
-
> `coord-web` repo (epic #2002)
|
|
131
|
-
>
|
|
132
|
-
>
|
|
133
|
-
>
|
|
129
|
+
> **Repo split (#2004, #2470):** `coord/dashboard/webapp/**` has moved to its
|
|
130
|
+
> own `coord-web` repo (epic #2002), and as of #2470 the mechanism below
|
|
131
|
+
> tracks `coord-web`'s `main`, not this repo's (now historical, pending
|
|
132
|
+
> UX-7 #2009) `coord/dashboard/webapp/`. See
|
|
133
|
+
> [`docs/ADR_COORD_WEB_DIST.md`](ADR_COORD_WEB_DIST.md) for the decision and
|
|
134
|
+
> the rejected alternatives.
|
|
134
135
|
|
|
135
136
|
## Going live automatically (#1543): merged main, not release cadence
|
|
136
137
|
|
|
@@ -158,15 +159,18 @@ inside the installed package (`coord/dashboard/webapp/dist`,
|
|
|
158
159
|
`coord/dashboard/server.py`'s `WEBAPP_DIST`). `deploy/coord-web.service`
|
|
159
160
|
points it at `~/coord-web-dist`, a symlink that
|
|
160
161
|
[`deploy/coord-web-dist-build.sh`](../deploy/coord-web-dist-build.sh) —
|
|
161
|
-
installed as `coord-web-dist-build.timer`, firing every
|
|
162
|
-
pointed at a fresh build of `coord
|
|
162
|
+
installed as `coord-web-dist-build.timer`, firing every 10 minutes (#2122)
|
|
163
|
+
— keeps pointed at a fresh build of the `coord-web` repo's `origin/main`
|
|
164
|
+
(#2470; before that, `coord/dashboard/webapp/` inside this repo):
|
|
163
165
|
|
|
164
166
|
```
|
|
165
|
-
coord-web-dist-build.timer (every
|
|
166
|
-
→ fetch origin/main in
|
|
167
|
+
coord-web-dist-build.timer (every 10min)
|
|
168
|
+
→ fetch origin/main in a dedicated coord-web clone (BASE_CHECKOUT, default
|
|
169
|
+
~/src/coord-web — read-only: fetch + rev-parse only, never the operator's
|
|
170
|
+
own coord-web dev checkout's working tree)
|
|
167
171
|
→ build that SHA in a DEDICATED worktree (~/.coord-web-checkout — never the
|
|
168
172
|
operator's own checkout, never a `coord drive` worktree)
|
|
169
|
-
→ npm ci && npm run build
|
|
173
|
+
→ npm ci && npm run build, at coord-web's repo root
|
|
170
174
|
→ atomically repoint ~/coord-web-dist -> ~/.coord-web-releases/<sha>
|
|
171
175
|
```
|
|
172
176
|
|
|
@@ -141,6 +141,29 @@ def test_dist_build_script_is_executable_and_locked() -> None:
|
|
|
141
141
|
assert not any("--upgrade" in line for line in code_lines)
|
|
142
142
|
|
|
143
143
|
|
|
144
|
+
def test_dist_build_script_defaults_to_the_coord_web_repo() -> None:
|
|
145
|
+
"""#2470: the build must track the dedicated `coord-web` repo's `main`,
|
|
146
|
+
not `coord/dashboard/webapp/` inside THIS repo (docs/ADR_COORD_WEB_DIST.md)
|
|
147
|
+
-- pin the actual default env-var values, not just prose in a comment."""
|
|
148
|
+
text = BUILD_SCRIPT.read_text()
|
|
149
|
+
assert 'REPO_NAME="${REPO_NAME:-coord-web}"' in text
|
|
150
|
+
assert 'REPO_NAME="${REPO_NAME:-code-coordinator}"' not in text
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def test_dist_build_script_builds_at_the_webapp_checkout_root() -> None:
|
|
154
|
+
"""#2470: `coord-web` IS the webapp package now -- `npm ci`/`npm run
|
|
155
|
+
build` must run at $WEBAPP_CHECKOUT's own root (honoring the pre-existing
|
|
156
|
+
$WEBAPP_SUBDIR seam, empty by default), not a hard-coded
|
|
157
|
+
coord/dashboard/webapp subdirectory of it (that subdirectory only ever
|
|
158
|
+
existed inside `claude-coordinator`, the pre-split monorepo)."""
|
|
159
|
+
text = BUILD_SCRIPT.read_text()
|
|
160
|
+
assert 'WEBAPP_DIR="$WEBAPP_CHECKOUT${WEBAPP_SUBDIR:+/$WEBAPP_SUBDIR}"' in text
|
|
161
|
+
code_lines = [
|
|
162
|
+
line for line in text.splitlines() if not line.strip().startswith("#")
|
|
163
|
+
]
|
|
164
|
+
assert not any("coord/dashboard/webapp" in line for line in code_lines)
|
|
165
|
+
|
|
166
|
+
|
|
144
167
|
def test_dist_build_script_health_checks_before_publish() -> None:
|
|
145
168
|
"""#1560's actual fix: a release must be booted and probed on a scratch,
|
|
146
169
|
127.0.0.1-only port BEFORE the live symlink ever points at it -- the
|
|
@@ -163,6 +186,62 @@ def test_dist_build_script_health_checks_before_publish() -> None:
|
|
|
163
186
|
assert "resolve_coord_bin" in text
|
|
164
187
|
|
|
165
188
|
|
|
189
|
+
def test_health_check_fixture_default_resolves_under_webapp_checkout(
|
|
190
|
+
tmp_path: Path,
|
|
191
|
+
) -> None:
|
|
192
|
+
"""#2470 review fix: retargeting $WEBAPP_CHECKOUT at a `coord-web`
|
|
193
|
+
checkout silently broke the health-check fixture default -- it used to
|
|
194
|
+
read `$WEBAPP_CHECKOUT/tests/fixtures/board-pipeline-basic.json`, which
|
|
195
|
+
was correct when $WEBAPP_CHECKOUT was a worktree of THIS repo, but
|
|
196
|
+
`coord-web`'s `origin/main` has no `tests/` directory at all
|
|
197
|
+
(confirmed via `git ls-tree -r --name-only origin/main`); the fixture
|
|
198
|
+
actually lives at `e2e/fixtures/board-pipeline-basic.json`. A missing
|
|
199
|
+
fixture makes `health_check_release` fail closed (see
|
|
200
|
+
test_dist_build_script_health_checks_before_publish), which means
|
|
201
|
+
coord-web-dist-build.timer would NEVER successfully publish on a real
|
|
202
|
+
host -- exactly the bug #2470 exists to fix. This drives the actual
|
|
203
|
+
parameter-expansion line from the script (extracted verbatim, not
|
|
204
|
+
retyped) against a scratch directory shaped like a real `coord-web`
|
|
205
|
+
checkout, so a future edit that reintroduces the stale
|
|
206
|
+
`tests/fixtures/...` default fails this test instead of silently
|
|
207
|
+
breaking every publish."""
|
|
208
|
+
text = BUILD_SCRIPT.read_text()
|
|
209
|
+
fixture_lines = [
|
|
210
|
+
line
|
|
211
|
+
for line in text.splitlines()
|
|
212
|
+
if line.strip().startswith('fixture="${HEALTH_CHECK_FIXTURE:-')
|
|
213
|
+
]
|
|
214
|
+
assert len(fixture_lines) == 1, fixture_lines
|
|
215
|
+
fixture_expr = fixture_lines[0].strip()
|
|
216
|
+
|
|
217
|
+
# Guard against the stale, pre-#2470-retarget-fix default reappearing.
|
|
218
|
+
assert "tests/fixtures/board-pipeline-basic.json" not in text
|
|
219
|
+
|
|
220
|
+
webapp_checkout = tmp_path / "webapp-checkout"
|
|
221
|
+
fixture_dir = webapp_checkout / "e2e" / "fixtures"
|
|
222
|
+
fixture_dir.mkdir(parents=True)
|
|
223
|
+
fixture_file = fixture_dir / "board-pipeline-basic.json"
|
|
224
|
+
fixture_file.write_text("{}")
|
|
225
|
+
|
|
226
|
+
env = dict(os.environ)
|
|
227
|
+
env.pop("HEALTH_CHECK_FIXTURE", None)
|
|
228
|
+
env["WEBAPP_CHECKOUT"] = str(webapp_checkout)
|
|
229
|
+
|
|
230
|
+
result = subprocess.run(
|
|
231
|
+
["bash", "-c", f'{fixture_expr}\necho "$fixture"'],
|
|
232
|
+
env=env,
|
|
233
|
+
capture_output=True,
|
|
234
|
+
text=True,
|
|
235
|
+
check=True,
|
|
236
|
+
)
|
|
237
|
+
resolved = result.stdout.strip()
|
|
238
|
+
assert resolved == str(fixture_file)
|
|
239
|
+
assert Path(resolved).is_file(), (
|
|
240
|
+
"resolved default fixture path must actually exist on disk in a "
|
|
241
|
+
"real coord-web checkout layout"
|
|
242
|
+
)
|
|
243
|
+
|
|
244
|
+
|
|
166
245
|
def test_dist_build_script_rollback_comment_points_at_rollback_script() -> None:
|
|
167
246
|
"""The one-liner documented pre-#1560 still works, but the header must
|
|
168
247
|
also point at the safer, phone-typeable script form (#1560)."""
|
|
@@ -355,8 +434,9 @@ def test_build_script_clears_sentinel_once_main_moves_past_the_blocked_sha(
|
|
|
355
434
|
"""Once a fix actually lands on main, the sentinel must not permanently
|
|
356
435
|
wedge deploys -- the guard should clear it and let the normal build
|
|
357
436
|
proceed (which then fails for an unrelated, expected reason in this
|
|
358
|
-
test: the scratch origin repo
|
|
359
|
-
npm-
|
|
437
|
+
test: the scratch origin repo is not a real `coord-web` checkout with
|
|
438
|
+
anything npm-buildable at its root -- this test only cares that the
|
|
439
|
+
guard released its grip)."""
|
|
360
440
|
origin_repo = tmp_path / "origin-repo"
|
|
361
441
|
bad_sha = _init_git_repo_with_commit(origin_repo, message="bad commit")
|
|
362
442
|
(origin_repo / "README.md").write_text("fixed")
|