code-coordinator 0.5.145__tar.gz → 0.5.146__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.146/.github/workflows/acceptance-web.yml +126 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/.github/workflows/test.yml +56 -82
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/PKG-INFO +1 -1
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/code_coordinator.egg-info/SOURCES.txt +1 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/code_coordinator.egg-info/scm_file_list.json +1 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/test_author.py +39 -13
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_ci_acceptance_gate_1950.py +136 -15
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_test_author.py +44 -6
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/.gitignore +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/CLAUDE.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/GOAL.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/LICENSE +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/MANIFEST.in +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/README.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/__init__.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/agent.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/audit.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/block_log.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/board_service.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/brain.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/claim.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/cli.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/client.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/comments.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/config.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dao.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/db.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/deps.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/drive.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/events.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/filelock.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/freshness.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/gates.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/goal.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/context.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/models.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/render.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/health/units.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/hooks.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/interactive.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/models.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/network.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/notify.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/openapi.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/parentage.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/plans.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/progress.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/release_window.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/reports.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/review.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/smoke.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/split_work.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/state.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/test_report.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/usage.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/install-agent.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/pyproject.toml +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/setup.cfg +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/__init__.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/conftest.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_config.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_db.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_events.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_init.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_models.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_network.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_review.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_session.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_split.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_state.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.145 → code_coordinator-0.5.146}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
name: Acceptance (web)
|
|
2
|
+
|
|
3
|
+
# #2389: split out of test.yml's `acceptance` job — it was running on EVERY
|
|
4
|
+
# push/PR to this repo regardless of what changed, unconditionally installing
|
|
5
|
+
# Node + a real Chromium (`npx playwright install chromium --with-deps`)
|
|
6
|
+
# before running the web-playwright (ms-51) acceptance route. A pure `tui/`
|
|
7
|
+
# Rust change (already covered by cargo-test.yml's own tui-tuidriver route,
|
|
8
|
+
# `--for-path tui/src/main.rs`, gated on its own `paths:` filter) had no
|
|
9
|
+
# business paying that cost on every review round — this job is genuinely
|
|
10
|
+
# webapp-specific (`--for-path coord/dashboard/webapp/src/App.tsx`), so it
|
|
11
|
+
# gets the same `paths:`-gated treatment cargo-test.yml already established
|
|
12
|
+
# for the Rust side. Not in the branch-protection required-checks list
|
|
13
|
+
# (only test (3.12)/(3.13), thin-client-strict, e2e, no-gh-on-path are), so
|
|
14
|
+
# this staying un-triggered on an unrelated PR is not a merge blocker.
|
|
15
|
+
on:
|
|
16
|
+
push:
|
|
17
|
+
branches: [main]
|
|
18
|
+
paths:
|
|
19
|
+
- 'coord/dashboard/webapp/**'
|
|
20
|
+
- 'tests/acceptance/**'
|
|
21
|
+
- '.github/coord-ci-acceptance.yml'
|
|
22
|
+
# Self-trigger so edits to this workflow are exercised by their own PR.
|
|
23
|
+
- '.github/workflows/acceptance-web.yml'
|
|
24
|
+
pull_request:
|
|
25
|
+
branches: [main]
|
|
26
|
+
paths:
|
|
27
|
+
- 'coord/dashboard/webapp/**'
|
|
28
|
+
- 'tests/acceptance/**'
|
|
29
|
+
- '.github/coord-ci-acceptance.yml'
|
|
30
|
+
- '.github/workflows/acceptance-web.yml'
|
|
31
|
+
workflow_dispatch:
|
|
32
|
+
|
|
33
|
+
jobs:
|
|
34
|
+
# #1950: the SEALED oracle-loop acceptance suite (tests/acceptance/ms-NN/,
|
|
35
|
+
# playwright.acceptance.config.ts) was run by no automatic gate anywhere —
|
|
36
|
+
# only `coord acceptance run/record`, invoked once while a milestone was
|
|
37
|
+
# being driven and never again. ms-51 went red at #1547 (the responsive
|
|
38
|
+
# shell removed the `<h1>coord</h1>` §1a pins) and stayed red through
|
|
39
|
+
# #1548/#1550/#1551/#1818 with nothing noticing. This job is the cheapest
|
|
40
|
+
# fix named in #1950: run the accumulated sealed suite whenever anything it
|
|
41
|
+
# covers changes, same shape as `e2e` (test.yml) (Python for the `coord`
|
|
42
|
+
# CLI on PATH — the acceptance config's `webServer` shells out to `coord
|
|
43
|
+
# web --fixture ... --dist dist`, see playwright.acceptance.config.ts's
|
|
44
|
+
# module docstring — plus Node + a real chromium).
|
|
45
|
+
#
|
|
46
|
+
# `npm run test:acceptance` with NO `{ms}` filter (unlike a single
|
|
47
|
+
# milestone's `-- ms-NN`) walks the whole `tests/acceptance/` tree — the
|
|
48
|
+
# accumulated suite across every closed milestone, i.e. exactly `coord
|
|
49
|
+
# acceptance run --all` (Gate C) would assemble, just invoked by CI's
|
|
50
|
+
# cadence instead of a milestone-close event.
|
|
51
|
+
#
|
|
52
|
+
# #2180: the `npm run test:acceptance` step now runs THROUGH `coord
|
|
53
|
+
# acceptance run --all --ci` (#2164) instead of calling Playwright
|
|
54
|
+
# directly. Same suite, same reporter under the hood — the wrapper's
|
|
55
|
+
# web-playwright driver shape appends `--reporter=json` and reads
|
|
56
|
+
# PLAYWRIGHT_JSON_OUTPUT_FILE itself (coord/acceptance_drivers.py) — but
|
|
57
|
+
# now a test-id listed in a manifest's `expected_red:` that fails does not
|
|
58
|
+
# redden this job (a sealed slice authored red before its fix exists,
|
|
59
|
+
# #2164's whole point), while one that unexpectedly PASSES does, loudly
|
|
60
|
+
# (#1965's vacuous-assertion case). Before this, ms-51 going red for any
|
|
61
|
+
# reason failed this job exactly the same as every other kind of red —
|
|
62
|
+
# there was no way to merge a red-by-design slice without `--force-merge`.
|
|
63
|
+
# .github/coord-ci-acceptance.yml's header explains why this points at a
|
|
64
|
+
# CI-local config instead of the fleet's real ~/.coord/coordinator.yml.
|
|
65
|
+
acceptance:
|
|
66
|
+
runs-on: ubuntu-latest
|
|
67
|
+
timeout-minutes: 20
|
|
68
|
+
defaults:
|
|
69
|
+
run:
|
|
70
|
+
working-directory: coord/dashboard/webapp
|
|
71
|
+
steps:
|
|
72
|
+
- uses: actions/checkout@v4
|
|
73
|
+
- uses: actions/setup-python@v5
|
|
74
|
+
with:
|
|
75
|
+
python-version: "3.12"
|
|
76
|
+
- working-directory: .
|
|
77
|
+
run: pip install -e ".[dev]"
|
|
78
|
+
- uses: actions/setup-node@v4
|
|
79
|
+
with:
|
|
80
|
+
node-version: '20'
|
|
81
|
+
- run: npm ci
|
|
82
|
+
# #2393: same fix as test.yml's `e2e` job — see that job's comment.
|
|
83
|
+
- name: Cache Playwright browsers
|
|
84
|
+
id: playwright-cache
|
|
85
|
+
uses: actions/cache@v4
|
|
86
|
+
with:
|
|
87
|
+
path: ~/.cache/ms-playwright
|
|
88
|
+
key: ${{ runner.os }}-playwright-${{ hashFiles('coord/dashboard/webapp/package-lock.json') }}
|
|
89
|
+
- name: Install Playwright + OS deps (cache miss)
|
|
90
|
+
if: steps.playwright-cache.outputs.cache-hit != 'true'
|
|
91
|
+
# #2393 follow-up: the Chromium download from Playwright's CDN has hung
|
|
92
|
+
# (not merely failed) multiple times in one day, past what caching alone
|
|
93
|
+
# can paper over on a cache-miss run (a version bump, or the very first
|
|
94
|
+
# run ever). A short per-attempt timeout + retry turns "hang for the
|
|
95
|
+
# whole 20-minute job budget" into "fail fast and try again" — transient
|
|
96
|
+
# CDN/mirror flakiness usually clears within a couple of attempts.
|
|
97
|
+
run: |
|
|
98
|
+
for attempt in 1 2 3; do
|
|
99
|
+
echo "Playwright install attempt $attempt/3..."
|
|
100
|
+
if timeout 300 npx playwright install chromium --with-deps; then
|
|
101
|
+
echo "Playwright install succeeded on attempt $attempt"
|
|
102
|
+
exit 0
|
|
103
|
+
fi
|
|
104
|
+
echo "Playwright install attempt $attempt failed or timed out after 5m"
|
|
105
|
+
sleep 10
|
|
106
|
+
done
|
|
107
|
+
echo "Playwright install failed after 3 attempts"
|
|
108
|
+
exit 1
|
|
109
|
+
- name: Install Playwright OS deps only (cache hit)
|
|
110
|
+
if: steps.playwright-cache.outputs.cache-hit == 'true'
|
|
111
|
+
run: npx playwright install-deps chromium
|
|
112
|
+
- name: coord acceptance run --all --ci (web-playwright route, ms-51)
|
|
113
|
+
working-directory: .
|
|
114
|
+
run: >-
|
|
115
|
+
coord acceptance run --repo claude-coordinator --all --ci
|
|
116
|
+
--for-path coord/dashboard/webapp/src/App.tsx
|
|
117
|
+
--config .github/coord-ci-acceptance.yml --path .
|
|
118
|
+
- name: A red result here is attributable, not a mystery
|
|
119
|
+
if: failure()
|
|
120
|
+
run: |
|
|
121
|
+
echo "::error::The sealed acceptance suite (tests/acceptance/ms-NN/) failed."
|
|
122
|
+
echo "The failing spec's path and 'describe' title name the milestone (ms-NN) and the issue that slice was authored for (see tests/acceptance/ms-NN/manifest.yml)."
|
|
123
|
+
echo "Two causes, and only one fix is right:"
|
|
124
|
+
echo " 1. The app regressed against an still-accurate contract -> fix the app."
|
|
125
|
+
echo " 2. Legitimate app evolution made the contract stale (e.g. #1547 vs ms-51) -> amend the contract: coord acceptance mock <repo> <tracking_issue> --amend '<what changed and why>'"
|
|
126
|
+
echo "Do not silence this job (continue-on-error, skip, etc.) instead of doing one of the above -- that is exactly how ms-51 rotted unnoticed through #1547-#1818 (#1950)."
|
|
@@ -252,6 +252,12 @@ jobs:
|
|
|
252
252
|
|
|
253
253
|
e2e:
|
|
254
254
|
runs-on: ubuntu-latest
|
|
255
|
+
# #2389: this is the SAME `npx playwright install chromium --with-deps`
|
|
256
|
+
# step that hung 34+ minutes on `acceptance` with no automatic recovery
|
|
257
|
+
# (a job with no `timeout-minutes` defaults to GitHub's 360-minute
|
|
258
|
+
# ceiling) — required, so it stays in this file, but gets the same
|
|
259
|
+
# bounded timeout rather than the implicit 6-hour one.
|
|
260
|
+
timeout-minutes: 20
|
|
255
261
|
defaults:
|
|
256
262
|
run:
|
|
257
263
|
working-directory: coord/dashboard/webapp
|
|
@@ -272,90 +278,58 @@ jobs:
|
|
|
272
278
|
with:
|
|
273
279
|
node-version: '20'
|
|
274
280
|
- run: npm ci
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
# docstring — plus Node + a real chromium).
|
|
289
|
-
#
|
|
290
|
-
# `npm run test:acceptance` with NO `{ms}` filter (unlike a single
|
|
291
|
-
# milestone's `-- ms-NN`) walks the whole `tests/acceptance/` tree — the
|
|
292
|
-
# accumulated suite across every closed milestone, i.e. exactly `coord
|
|
293
|
-
# acceptance run --all` (Gate C) would assemble, just invoked by CI's
|
|
294
|
-
# cadence instead of a milestone-close event.
|
|
295
|
-
#
|
|
296
|
-
# Deliberately NOT added to scripts/coord-test-runner.sh (the Test gate's
|
|
297
|
-
# engine, coordinator.yml's `test_command`): that script also runs as a
|
|
298
|
-
# systemd *user* unit on the daemon host (#1814's PATH problem) and would
|
|
299
|
-
# need node/npm/chromium provisioned there for every future
|
|
300
|
-
# coord/dashboard/webapp/** branch's Test stage, not just this
|
|
301
|
-
# already-`browser`-capability-gated CI runner. CI is the tighter, cheaper
|
|
302
|
-
# loop for this suite; revisit the Test-gate route if CI's cadence turns
|
|
303
|
-
# out not to be enough (#1950's own "decide deliberately").
|
|
304
|
-
#
|
|
305
|
-
# ATTRIBUTABILITY (#1950 item 2): a red result here names a spec file
|
|
306
|
-
# under `tests/acceptance/ms-NN/` and, by that suite's own convention
|
|
307
|
-
# (tests/acceptance/ms-51/manifest.yml), a `describe` block carrying the
|
|
308
|
-
# milestone's tracking issue — e.g. `ms-51/home-active.spec.ts › ms-51
|
|
309
|
-
# Home Active tab (#1544) › ...`. Playwright's `list` reporter prints that
|
|
310
|
-
# full path/title on failure, so the ms-NN + issue are already in the
|
|
311
|
-
# job's own output; the failure-hint step below just spells out the two
|
|
312
|
-
# possible causes so whoever triages it doesn't have to rediscover them.
|
|
313
|
-
#
|
|
314
|
-
# #2180: the `npm run test:acceptance` step now runs THROUGH `coord
|
|
315
|
-
# acceptance run --all --ci` (#2164) instead of calling Playwright
|
|
316
|
-
# directly. Same suite, same reporter under the hood — the wrapper's
|
|
317
|
-
# web-playwright driver shape appends `--reporter=json` and reads
|
|
318
|
-
# PLAYWRIGHT_JSON_OUTPUT_FILE itself (coord/acceptance_drivers.py) — but
|
|
319
|
-
# now a test-id listed in a manifest's `expected_red:` that fails does not
|
|
320
|
-
# redden this job (a sealed slice authored red before its fix exists,
|
|
321
|
-
# #2164's whole point), while one that unexpectedly PASSES does, loudly
|
|
322
|
-
# (#1965's vacuous-assertion case). Before this, ms-51 going red for any
|
|
323
|
-
# reason failed this job exactly the same as every other kind of red —
|
|
324
|
-
# there was no way to merge a red-by-design slice without `--force-merge`.
|
|
325
|
-
# .github/coord-ci-acceptance.yml's header explains why this points at a
|
|
326
|
-
# CI-local config instead of the fleet's real ~/.coord/coordinator.yml.
|
|
327
|
-
acceptance:
|
|
328
|
-
runs-on: ubuntu-latest
|
|
329
|
-
defaults:
|
|
330
|
-
run:
|
|
331
|
-
working-directory: coord/dashboard/webapp
|
|
332
|
-
steps:
|
|
333
|
-
- uses: actions/checkout@v4
|
|
334
|
-
- uses: actions/setup-python@v5
|
|
281
|
+
# #2393: `npx playwright install chromium --with-deps` was the step
|
|
282
|
+
# that hung 30+ minutes with no automatic recovery (2026-08-18, this
|
|
283
|
+
# job and `acceptance`'s) — a fresh ~300MB Chromium download from
|
|
284
|
+
# Playwright's CDN on EVERY run, no caching, so every run was fully
|
|
285
|
+
# exposed to any network hiccup on that path. Caching the browser
|
|
286
|
+
# binary means most runs skip the download-heavy half entirely; only
|
|
287
|
+
# a cache miss (a `@playwright/test` version bump) pays the network
|
|
288
|
+
# cost. `install-deps` (apt-only, no download) still runs on a cache
|
|
289
|
+
# hit so a runner image without chromium's OS libs preinstalled
|
|
290
|
+
# doesn't break.
|
|
291
|
+
- name: Cache Playwright browsers
|
|
292
|
+
id: playwright-cache
|
|
293
|
+
uses: actions/cache@v4
|
|
335
294
|
with:
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
run: >-
|
|
347
|
-
coord acceptance run --repo claude-coordinator --all --ci
|
|
348
|
-
--for-path coord/dashboard/webapp/src/App.tsx
|
|
349
|
-
--config .github/coord-ci-acceptance.yml --path .
|
|
350
|
-
- name: A red result here is attributable, not a mystery
|
|
351
|
-
if: failure()
|
|
295
|
+
path: ~/.cache/ms-playwright
|
|
296
|
+
key: ${{ runner.os }}-playwright-${{ hashFiles('coord/dashboard/webapp/package-lock.json') }}
|
|
297
|
+
- name: Install Playwright + OS deps (cache miss)
|
|
298
|
+
if: steps.playwright-cache.outputs.cache-hit != 'true'
|
|
299
|
+
# #2393 follow-up: the Chromium download from Playwright's CDN has hung
|
|
300
|
+
# (not merely failed) multiple times in one day, past what caching alone
|
|
301
|
+
# can paper over on a cache-miss run (a version bump, or the very first
|
|
302
|
+
# run ever). A short per-attempt timeout + retry turns "hang for the
|
|
303
|
+
# whole 20-minute job budget" into "fail fast and try again" — transient
|
|
304
|
+
# CDN/mirror flakiness usually clears within a couple of attempts.
|
|
352
305
|
run: |
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
306
|
+
for attempt in 1 2 3; do
|
|
307
|
+
echo "Playwright install attempt $attempt/3..."
|
|
308
|
+
if timeout 300 npx playwright install chromium --with-deps; then
|
|
309
|
+
echo "Playwright install succeeded on attempt $attempt"
|
|
310
|
+
exit 0
|
|
311
|
+
fi
|
|
312
|
+
echo "Playwright install attempt $attempt failed or timed out after 5m"
|
|
313
|
+
sleep 10
|
|
314
|
+
done
|
|
315
|
+
echo "Playwright install failed after 3 attempts"
|
|
316
|
+
exit 1
|
|
317
|
+
- name: Install Playwright OS deps only (cache hit)
|
|
318
|
+
if: steps.playwright-cache.outputs.cache-hit == 'true'
|
|
319
|
+
run: npx playwright install-deps chromium
|
|
320
|
+
- run: npm run test:e2e
|
|
321
|
+
|
|
322
|
+
# #2389: the SEALED web-playwright acceptance suite (ms-51) moved to its
|
|
323
|
+
# own workflow, acceptance-web.yml, with a `paths:` filter scoped to
|
|
324
|
+
# `coord/dashboard/webapp/**`/`tests/acceptance/**` — mirroring how
|
|
325
|
+
# cargo-test.yml already gates the tui-tuidriver route on `tui/**`. This
|
|
326
|
+
# job was unconditionally installing Node + a real Chromium on every
|
|
327
|
+
# push/PR to this repo regardless of what changed, including pure-Rust
|
|
328
|
+
# `tui/` diffs that have nothing to do with the webapp (#1950's original
|
|
329
|
+
# "cheapest fix" traded diff-scoping for coverage-by-default; #2389
|
|
330
|
+
# restores diff-scoping now that the Rust side has its own equivalent
|
|
331
|
+
# gate). Not in this repo's required-checks list, so this move changes
|
|
332
|
+
# nothing about what blocks a merge.
|
|
359
333
|
|
|
360
334
|
# #1550: `coord/dashboard/webapp/src/api/generated.ts` is produced by
|
|
361
335
|
# `scripts/codegen.py` from the dashboard's OpenAPI spec
|
{code_coordinator-0.5.145 → code_coordinator-0.5.146}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
".githooks/post-merge",
|
|
10
10
|
".github/ISSUE_TEMPLATE/bug_report.md",
|
|
11
11
|
".github/coord-ci-acceptance.yml",
|
|
12
|
+
".github/workflows/acceptance-web.yml",
|
|
12
13
|
".github/workflows/auto-release.yml",
|
|
13
14
|
".github/workflows/cargo-test.yml",
|
|
14
15
|
".github/workflows/publish.yml",
|
|
@@ -60,6 +60,13 @@ TEST_AUTHOR_DENY_COMMANDS: list[str] = [
|
|
|
60
60
|
"Bash(gh *)",
|
|
61
61
|
]
|
|
62
62
|
|
|
63
|
+
# #1172 follow-up: how many versioned forks (`-v2`, `-v3`, ...) to probe
|
|
64
|
+
# before giving up on finding a JIT slice's next re-authoring branch. Kept
|
|
65
|
+
# small and finite — a real loop here means something is genuinely wrong
|
|
66
|
+
# (not a legitimate string of re-authoring dispatches), and #1172's own
|
|
67
|
+
# guard should surface that as a loud, readable error rather than spin.
|
|
68
|
+
MAX_REAUTHOR_BRANCH_ATTEMPTS = 20
|
|
69
|
+
|
|
63
70
|
TEST_AUTHOR_SYSTEM_PROMPT = """\
|
|
64
71
|
You are an INDEPENDENT acceptance-test author dispatched by the coordinator.
|
|
65
72
|
|
|
@@ -538,20 +545,39 @@ def dispatch_test_author(
|
|
|
538
545
|
branch = target_branch or f"issue-{tracking_issue}-{_slugify(assignment_title)}"
|
|
539
546
|
|
|
540
547
|
if github_ops.pr_is_merged(repo_cfg.github, branch):
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
"
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
548
|
+
if issue_number is not None:
|
|
549
|
+
# #1172's own stated fix scope was "refuse (or fork a fresh
|
|
550
|
+
# branch)" — only the refuse half shipped. This is the other
|
|
551
|
+
# half: a genuine re-authoring dispatch (e.g. a Gate-A contract
|
|
552
|
+
# `--amend`, docs/ORACLE_LOOP.md's "amend the contract -> the
|
|
553
|
+
# test-author updates the affected slice") has nowhere else to
|
|
554
|
+
# push once the slice's own PR has merged, so fork onto the next
|
|
555
|
+
# unmerged versioned branch instead of failing outright.
|
|
556
|
+
base_branch = branch
|
|
557
|
+
for suffix in range(2, MAX_REAUTHOR_BRANCH_ATTEMPTS + 1):
|
|
558
|
+
candidate = f"{base_branch}-v{suffix}"
|
|
559
|
+
if not github_ops.pr_is_merged(repo_cfg.github, candidate):
|
|
560
|
+
branch = candidate
|
|
561
|
+
target_branch = candidate
|
|
562
|
+
break
|
|
563
|
+
else:
|
|
564
|
+
raise RuntimeError(
|
|
565
|
+
f"branch {base_branch!r} and its next "
|
|
566
|
+
f"{MAX_REAUTHOR_BRANCH_ATTEMPTS - 1} versioned forks "
|
|
567
|
+
"(-v2..-v"
|
|
568
|
+
f"{MAX_REAUTHOR_BRANCH_ATTEMPTS}) all already have "
|
|
569
|
+
"merged PRs (#1172) — that many re-authoring rounds on "
|
|
570
|
+
"one slice is not a normal amend/re-sync cycle; open a "
|
|
571
|
+
"fresh branch by hand and investigate."
|
|
572
|
+
)
|
|
573
|
+
else:
|
|
574
|
+
raise RuntimeError(
|
|
575
|
+
f"branch {branch!r} already has a merged PR — dispatching "
|
|
576
|
+
"would push new commits onto a dead branch with nothing "
|
|
577
|
+
"left to open a PR against them (#1172). The milestone's "
|
|
578
|
+
"Gate-A suite PR already merged; if the suite needs more "
|
|
579
|
+
"work, open a fresh branch by hand — do not retry as-is."
|
|
553
580
|
)
|
|
554
|
-
)
|
|
555
581
|
|
|
556
582
|
deny_commands = test_author_deny_commands(config, repo_name)
|
|
557
583
|
|
|
@@ -5,8 +5,9 @@ milestone is actively being driven, so a slice that goes red after its
|
|
|
5
5
|
milestone closes (ms-51 at #1547, silently, through #1548/#1550/#1551/#1818)
|
|
6
6
|
is never re-checked.
|
|
7
7
|
|
|
8
|
-
This is the regression guard for the fix: `.github/workflows/
|
|
9
|
-
an `acceptance` job
|
|
8
|
+
This is the regression guard for the fix: `.github/workflows/acceptance-
|
|
9
|
+
web.yml` (originally an `acceptance` job inside `test.yml` — see #2389
|
|
10
|
+
below) runs the sealed suite whenever anything it covers changes (see that
|
|
10
11
|
job's own header comment for why CI rather than
|
|
11
12
|
scripts/coord-test-runner.sh). Parsing the real workflow file — not a
|
|
12
13
|
fixture — means this test fails the moment someone removes/disables/
|
|
@@ -24,6 +25,15 @@ wrapper invocation; a second test (`test_acceptance_job_uses_the_2164_ci_
|
|
|
24
25
|
wrapper_not_the_raw_driver`) pins the specific `--all --ci` contract #2180's
|
|
25
26
|
own acceptance criteria require ("through coord acceptance run --all --ci,
|
|
26
27
|
not the raw driver command").
|
|
28
|
+
|
|
29
|
+
#2389 update: the `acceptance` job moved out of `test.yml` into its own
|
|
30
|
+
`acceptance-web.yml`, `paths:`-gated to `coord/dashboard/webapp/**` /
|
|
31
|
+
`tests/acceptance/**` — it was unconditionally installing Node + a real
|
|
32
|
+
Chromium on every push/PR regardless of what changed, including pure-Rust
|
|
33
|
+
`tui/` diffs, mirroring the `paths:` gating `cargo-test.yml` already has for
|
|
34
|
+
the tui-tuidriver route. `ACCEPTANCE_WORKFLOW_PATH` (not `WORKFLOW_PATH`) is
|
|
35
|
+
what every acceptance-job test below now parses; `WORKFLOW_PATH` (`test.yml`)
|
|
36
|
+
still backs the `test`/`e2e` job assertions, which did not move.
|
|
27
37
|
"""
|
|
28
38
|
|
|
29
39
|
from __future__ import annotations
|
|
@@ -34,23 +44,24 @@ import yaml
|
|
|
34
44
|
|
|
35
45
|
REPO_ROOT = Path(__file__).resolve().parents[1]
|
|
36
46
|
WORKFLOW_PATH = REPO_ROOT / ".github" / "workflows" / "test.yml"
|
|
47
|
+
ACCEPTANCE_WORKFLOW_PATH = REPO_ROOT / ".github" / "workflows" / "acceptance-web.yml"
|
|
37
48
|
CARGO_WORKFLOW_PATH = REPO_ROOT / ".github" / "workflows" / "cargo-test.yml"
|
|
38
49
|
CI_ACCEPTANCE_CONFIG_PATH = REPO_ROOT / ".github" / "coord-ci-acceptance.yml"
|
|
39
50
|
|
|
40
51
|
|
|
41
|
-
def _load_workflow() -> dict:
|
|
52
|
+
def _load_workflow(path: Path = WORKFLOW_PATH) -> dict:
|
|
42
53
|
# YAML's `on:` key parses to the boolean `True` under the default
|
|
43
54
|
# SafeLoader (YAML 1.1 treats the bare word `on` as a boolean) — harmless
|
|
44
55
|
# here since this test never reads that key, but noted so a future
|
|
45
56
|
# reader isn't surprised the loaded dict's key isn't the string "on".
|
|
46
|
-
return yaml.safe_load(
|
|
57
|
+
return yaml.safe_load(path.read_text())
|
|
47
58
|
|
|
48
59
|
|
|
49
|
-
def _job_steps(workflow: dict, job_name: str) -> list[dict]:
|
|
60
|
+
def _job_steps(workflow: dict, job_name: str, path: Path = WORKFLOW_PATH) -> list[dict]:
|
|
50
61
|
jobs = workflow.get("jobs") or {}
|
|
51
62
|
job = jobs.get(job_name)
|
|
52
63
|
assert job is not None, (
|
|
53
|
-
f"expected a {job_name!r} job in {
|
|
64
|
+
f"expected a {job_name!r} job in {path} — jobs present: "
|
|
54
65
|
f"{sorted(jobs)}"
|
|
55
66
|
)
|
|
56
67
|
return job.get("steps") or []
|
|
@@ -65,8 +76,8 @@ def _step_runs(steps: list[dict], needle: str) -> dict | None:
|
|
|
65
76
|
|
|
66
77
|
|
|
67
78
|
def test_acceptance_job_exists_and_runs_the_sealed_suite() -> None:
|
|
68
|
-
workflow = _load_workflow()
|
|
69
|
-
steps = _job_steps(workflow, "acceptance")
|
|
79
|
+
workflow = _load_workflow(ACCEPTANCE_WORKFLOW_PATH)
|
|
80
|
+
steps = _job_steps(workflow, "acceptance", ACCEPTANCE_WORKFLOW_PATH)
|
|
70
81
|
test_step = _step_runs(steps, "coord acceptance run")
|
|
71
82
|
assert test_step is not None, (
|
|
72
83
|
"no step in the 'acceptance' job runs `coord acceptance run` — "
|
|
@@ -82,7 +93,7 @@ def test_acceptance_job_does_not_neuter_a_red_result() -> None:
|
|
|
82
93
|
step (or the whole job) — the same "green screenshot" failure mode
|
|
83
94
|
#1950 describes, just relocated from "never runs" to "runs but can't
|
|
84
95
|
fail"."""
|
|
85
|
-
workflow = _load_workflow()
|
|
96
|
+
workflow = _load_workflow(ACCEPTANCE_WORKFLOW_PATH)
|
|
86
97
|
jobs = workflow.get("jobs") or {}
|
|
87
98
|
job = jobs.get("acceptance")
|
|
88
99
|
assert job is not None
|
|
@@ -107,8 +118,8 @@ def test_acceptance_job_uses_the_2164_ci_wrapper_not_the_raw_driver() -> None:
|
|
|
107
118
|
registry — a sealed slice authored red by design would fail this job
|
|
108
119
|
exactly like any other red result, forcing `--force-merge` (#2164's
|
|
109
120
|
whole reason for existing)."""
|
|
110
|
-
workflow = _load_workflow()
|
|
111
|
-
steps = _job_steps(workflow, "acceptance")
|
|
121
|
+
workflow = _load_workflow(ACCEPTANCE_WORKFLOW_PATH)
|
|
122
|
+
steps = _job_steps(workflow, "acceptance", ACCEPTANCE_WORKFLOW_PATH)
|
|
112
123
|
test_step = _step_runs(steps, "coord acceptance run")
|
|
113
124
|
assert test_step is not None
|
|
114
125
|
run = test_step["run"]
|
|
@@ -213,8 +224,8 @@ def test_acceptance_job_installs_coord_cli_on_path() -> None:
|
|
|
213
224
|
timeout instead of a real (or real-absence-of) assertion failure. Same
|
|
214
225
|
requirement `e2e` already has for `live-update-fixture.spec.ts`
|
|
215
226
|
(#1551)."""
|
|
216
|
-
workflow = _load_workflow()
|
|
217
|
-
steps = _job_steps(workflow, "acceptance")
|
|
227
|
+
workflow = _load_workflow(ACCEPTANCE_WORKFLOW_PATH)
|
|
228
|
+
steps = _job_steps(workflow, "acceptance", ACCEPTANCE_WORKFLOW_PATH)
|
|
218
229
|
install_step = _step_runs(steps, "pip install")
|
|
219
230
|
assert install_step is not None, (
|
|
220
231
|
"the 'acceptance' job never installs the `coord` CLI (`pip install "
|
|
@@ -224,11 +235,121 @@ def test_acceptance_job_installs_coord_cli_on_path() -> None:
|
|
|
224
235
|
|
|
225
236
|
|
|
226
237
|
def test_acceptance_job_installs_a_real_browser() -> None:
|
|
227
|
-
workflow = _load_workflow()
|
|
228
|
-
steps = _job_steps(workflow, "acceptance")
|
|
238
|
+
workflow = _load_workflow(ACCEPTANCE_WORKFLOW_PATH)
|
|
239
|
+
steps = _job_steps(workflow, "acceptance", ACCEPTANCE_WORKFLOW_PATH)
|
|
229
240
|
browser_step = _step_runs(steps, "playwright install")
|
|
230
241
|
assert browser_step is not None, (
|
|
231
242
|
"the 'acceptance' job never runs `npx playwright install` — "
|
|
232
243
|
"chromium (or whichever project(s) playwright.acceptance.config.ts "
|
|
233
244
|
"declares) won't be present to actually run the suite"
|
|
234
245
|
)
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
def test_acceptance_workflow_is_paths_gated_to_webapp_changes() -> None:
|
|
249
|
+
"""#2389: this job used to live in `test.yml` with no `paths:` filter at
|
|
250
|
+
all, so it ran unconditionally on every push/PR — including a pure-Rust
|
|
251
|
+
`tui/` diff with nothing to do with the webapp — always installing
|
|
252
|
+
Node + a real Chromium first. Mirrors `cargo-test.yml`'s own `paths:`
|
|
253
|
+
gate for the tui-tuidriver route."""
|
|
254
|
+
workflow = _load_workflow(ACCEPTANCE_WORKFLOW_PATH)
|
|
255
|
+
# YAML 1.1's bareword parsing turns the `on:` key into the boolean
|
|
256
|
+
# `True`, not the string "on" — see `_load_workflow`'s docstring.
|
|
257
|
+
on = workflow.get(True) or workflow.get("on") or {}
|
|
258
|
+
for trigger in ("push", "pull_request"):
|
|
259
|
+
paths = (on.get(trigger) or {}).get("paths") or []
|
|
260
|
+
assert "coord/dashboard/webapp/**" in paths, (
|
|
261
|
+
f"acceptance-web.yml's {trigger!r} trigger isn't paths-gated to "
|
|
262
|
+
f"coord/dashboard/webapp/**: {paths!r}"
|
|
263
|
+
)
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
def test_acceptance_job_caches_playwright_browsers() -> None:
|
|
267
|
+
"""#2393: neither `acceptance` nor `e2e` cached the Playwright browser
|
|
268
|
+
binary, so every single CI run re-downloaded ~300MB of Chromium from
|
|
269
|
+
Playwright's CDN from scratch — full exposure to any network hiccup on
|
|
270
|
+
that path, every time, not just occasionally. Confirmed live
|
|
271
|
+
2026-08-18: this hung 3 separate PRs' worth of runs in one afternoon.
|
|
272
|
+
A cache hit skips the download-heavy `install --with-deps` entirely in
|
|
273
|
+
favor of the apt-only `install-deps`."""
|
|
274
|
+
workflow = _load_workflow(ACCEPTANCE_WORKFLOW_PATH)
|
|
275
|
+
steps = _job_steps(workflow, "acceptance", ACCEPTANCE_WORKFLOW_PATH)
|
|
276
|
+
cache_step = next(
|
|
277
|
+
(s for s in steps if (s.get("uses") or "").startswith("actions/cache")),
|
|
278
|
+
None,
|
|
279
|
+
)
|
|
280
|
+
assert cache_step is not None, (
|
|
281
|
+
"the 'acceptance' job has no actions/cache step for Playwright's "
|
|
282
|
+
"browser binaries — every run re-downloads Chromium from scratch"
|
|
283
|
+
)
|
|
284
|
+
assert cache_step.get("with", {}).get("path") == "~/.cache/ms-playwright", (
|
|
285
|
+
f"cache step doesn't target Playwright's browser cache dir: "
|
|
286
|
+
f"{cache_step.get('with')!r}"
|
|
287
|
+
)
|
|
288
|
+
# The full (network-heavy) install must be conditioned on a cache MISS —
|
|
289
|
+
# otherwise the cache exists but is never actually consulted.
|
|
290
|
+
install_step = _step_runs(steps, "playwright install chromium --with-deps")
|
|
291
|
+
assert install_step is not None
|
|
292
|
+
assert "cache-hit != 'true'" in (install_step.get("if") or ""), (
|
|
293
|
+
"the full `playwright install --with-deps` step isn't gated on a "
|
|
294
|
+
f"cache miss, so the cache added above is never actually used: "
|
|
295
|
+
f"{install_step.get('if')!r}"
|
|
296
|
+
)
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
def test_acceptance_job_retries_playwright_install_on_transient_hangs() -> None:
|
|
300
|
+
"""#2393 follow-up, confirmed live 2026-08-18: caching alone doesn't help
|
|
301
|
+
a cache-miss run (the very first run on a branch, or any run after a
|
|
302
|
+
`@playwright/test` version bump) — and PR #2392's own first CI run hit
|
|
303
|
+
exactly that, hanging the full 20-minute job budget on one install
|
|
304
|
+
attempt with nothing to fall back on. The install must instead be
|
|
305
|
+
wrapped in a bounded per-attempt timeout with more than one attempt, so
|
|
306
|
+
a transient CDN/mirror hang fails fast and gets retried instead of
|
|
307
|
+
burning the whole job timeout on a single stuck attempt."""
|
|
308
|
+
workflow = _load_workflow(ACCEPTANCE_WORKFLOW_PATH)
|
|
309
|
+
steps = _job_steps(workflow, "acceptance", ACCEPTANCE_WORKFLOW_PATH)
|
|
310
|
+
install_step = _step_runs(steps, "playwright install chromium --with-deps")
|
|
311
|
+
assert install_step is not None
|
|
312
|
+
run = install_step["run"]
|
|
313
|
+
assert "timeout " in run, (
|
|
314
|
+
f"the cache-miss install step has no per-attempt timeout, so one "
|
|
315
|
+
f"stuck attempt can still consume the entire job budget: {run!r}"
|
|
316
|
+
)
|
|
317
|
+
assert "for attempt in" in run and "1 2 3" in run, (
|
|
318
|
+
f"the cache-miss install step doesn't actually loop over multiple "
|
|
319
|
+
f"attempts — a single attempt is exactly what hung 4 separate times "
|
|
320
|
+
f"on 2026-08-18: {run!r}"
|
|
321
|
+
)
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
def test_e2e_job_retries_playwright_install_on_transient_hangs() -> None:
|
|
325
|
+
"""Same fix, same reason, as the 'acceptance' job's version above — the
|
|
326
|
+
`e2e` job (test.yml) hit the identical hang on 2026-08-18 and got the
|
|
327
|
+
identical caching fix in #2393, so it needs the identical retry
|
|
328
|
+
follow-up too."""
|
|
329
|
+
workflow = _load_workflow()
|
|
330
|
+
steps = _job_steps(workflow, "e2e")
|
|
331
|
+
install_step = _step_runs(steps, "playwright install chromium --with-deps")
|
|
332
|
+
assert install_step is not None
|
|
333
|
+
run = install_step["run"]
|
|
334
|
+
assert "timeout " in run, (
|
|
335
|
+
f"e2e's cache-miss install step has no per-attempt timeout: {run!r}"
|
|
336
|
+
)
|
|
337
|
+
assert "for attempt in" in run and "1 2 3" in run, (
|
|
338
|
+
f"e2e's cache-miss install step doesn't loop over multiple attempts: {run!r}"
|
|
339
|
+
)
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
def test_acceptance_job_has_a_bounded_timeout() -> None:
|
|
343
|
+
"""#2389: a job with no `timeout-minutes` defaults to GitHub's 360-minute
|
|
344
|
+
ceiling — confirmed live 2026-08-18, `npx playwright install chromium`
|
|
345
|
+
hung 34+ minutes with no automatic recovery. A bounded timeout doesn't
|
|
346
|
+
prevent a hang, but it guarantees one can't silently occupy a runner (and
|
|
347
|
+
keep a PR looking "still checking") for hours."""
|
|
348
|
+
workflow = _load_workflow(ACCEPTANCE_WORKFLOW_PATH)
|
|
349
|
+
jobs = workflow.get("jobs") or {}
|
|
350
|
+
job = jobs.get("acceptance") or {}
|
|
351
|
+
timeout = job.get("timeout-minutes")
|
|
352
|
+
assert isinstance(timeout, int) and 0 < timeout <= 60, (
|
|
353
|
+
f"'acceptance' job's timeout-minutes is {timeout!r} — expected a "
|
|
354
|
+
"small positive bound, not GitHub's implicit 360-minute default"
|
|
355
|
+
)
|