code-coordinator 0.5.143__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.143 → code_coordinator-0.5.146}/.github/workflows/test.yml +56 -82
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/PKG-INFO +1 -1
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/code_coordinator.egg-info/SOURCES.txt +1 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/code_coordinator.egg-info/scm_file_list.json +1 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/ci_github.py +34 -1
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/config.py +2 -2
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/github_ops.py +40 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/test_author.py +39 -13
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_ci_acceptance_gate_1950.py +136 -15
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_ci_store.py +86 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_conflict_fix_semantic.py +1 -1
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_test_author.py +44 -6
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/doc_tabs.rs +281 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/events.rs +107 -18
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/fixtures.rs +9 -1
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/mod.rs +75 -1
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/render.rs +93 -13
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/tests.rs +544 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/.gitignore +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/CLAUDE.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/GOAL.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/LICENSE +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/MANIFEST.in +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/README.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/__init__.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/agent.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/audit.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/block_log.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/board_service.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/brain.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/claim.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/cli.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/client.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/comments.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dao.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/db.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/deps.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/drive.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/events.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/filelock.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/freshness.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/gates.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/goal.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/context.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/models.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/render.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/health/units.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/hooks.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/interactive.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/models.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/network.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/notify.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/openapi.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/parentage.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/plans.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/progress.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/release_window.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/reports.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/review.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/smoke.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/split_work.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/state.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/test_report.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/usage.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/install-agent.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/pyproject.toml +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/setup.cfg +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/__init__.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/conftest.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_config.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_db.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_events.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_init.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_models.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_network.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_review.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_session.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_split.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_state.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.143 → code_coordinator-0.5.146}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.143 → 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.143 → 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",
|
|
@@ -129,6 +129,13 @@ class GitHubCi:
|
|
|
129
129
|
_jobs_cache: dict[tuple[str, str], tuple[float, list[JobRun]]] = field(
|
|
130
130
|
default_factory=dict
|
|
131
131
|
)
|
|
132
|
+
# #2388: repo -> (fetched_at, required context names or None). Keyed by
|
|
133
|
+
# repo alone, same reasoning as `_workflow_cache` — required contexts are
|
|
134
|
+
# a branch-protection property of the repo's default branch, not of any
|
|
135
|
+
# particular PR.
|
|
136
|
+
_required_contexts_cache: dict[str, tuple[float, frozenset[str] | None]] = field(
|
|
137
|
+
default_factory=dict
|
|
138
|
+
)
|
|
132
139
|
|
|
133
140
|
@property
|
|
134
141
|
def is_available(self) -> bool:
|
|
@@ -360,7 +367,7 @@ class GitHubCi:
|
|
|
360
367
|
return [_unreadable_check(repo, number, str(e))]
|
|
361
368
|
if not isinstance(raw, list):
|
|
362
369
|
return [_unreadable_check(repo, number, "gh pr checks returned non-list JSON")]
|
|
363
|
-
|
|
370
|
+
checks = [
|
|
364
371
|
CheckRun(
|
|
365
372
|
name=str(entry.get("name", "")),
|
|
366
373
|
status=_status_from_bucket(str(entry.get("bucket", ""))),
|
|
@@ -373,6 +380,32 @@ class GitHubCi:
|
|
|
373
380
|
for entry in raw
|
|
374
381
|
if isinstance(entry, dict)
|
|
375
382
|
]
|
|
383
|
+
# #2388: narrow to what branch protection actually REQUIRES, when
|
|
384
|
+
# that's determinable — a repo can report far more `gh pr checks`
|
|
385
|
+
# entries than GitHub's own required list (this repo: 9 reported, 5
|
|
386
|
+
# required), and every merge-gate predicate downstream of this
|
|
387
|
+
# method (`failed_checks`, `in_flight_checks`, `checks_are_stale`)
|
|
388
|
+
# otherwise waits on advisory jobs GitHub itself doesn't. A hung
|
|
389
|
+
# advisory job (e.g. an unconditional Playwright/Chromium install
|
|
390
|
+
# with no timeout) would then block `coord merge` indefinitely even
|
|
391
|
+
# though the PR is already `MERGEABLE`. `_required_contexts` returns
|
|
392
|
+
# `None` (never filters) when it can't determine the required list
|
|
393
|
+
# — #1525's bias: unknown reads as "wait on everything reported",
|
|
394
|
+
# not as a free pass to stop waiting on something that might matter.
|
|
395
|
+
required = self._required_contexts(repo)
|
|
396
|
+
if required:
|
|
397
|
+
checks = [c for c in checks if c.name in required]
|
|
398
|
+
return checks
|
|
399
|
+
|
|
400
|
+
def _required_contexts(self, repo: str) -> frozenset[str] | None:
|
|
401
|
+
now = time.time()
|
|
402
|
+
cached = self._required_contexts_cache.get(repo)
|
|
403
|
+
if cached is not None and (now - cached[0]) < self.cache_ttl:
|
|
404
|
+
return cached[1]
|
|
405
|
+
contexts = github_ops.get_required_status_check_contexts(repo)
|
|
406
|
+
result = frozenset(contexts) if contexts else None
|
|
407
|
+
self._required_contexts_cache[repo] = (now, result)
|
|
408
|
+
return result
|
|
376
409
|
|
|
377
410
|
|
|
378
411
|
def _unreadable_check(repo: str, number: int, detail: str) -> CheckRun:
|
|
@@ -946,7 +946,7 @@ class PipelineConfig:
|
|
|
946
946
|
worker that gives up on a **semantic** conflict (it emits the
|
|
947
947
|
``coord:conflict=semantic`` marker on its ``STUCK:`` line) gets ONE
|
|
948
948
|
second attempt from a stronger model
|
|
949
|
-
(``semantic_conflict_model``, default ``"
|
|
949
|
+
(``semantic_conflict_model``, default ``"opus"``) before the merge
|
|
950
950
|
entry is parked ``HUMAN_REQUIRED``. **Defaults to ``False``** — this
|
|
951
951
|
ships dark until it earns trust on real conflicts. The escalated
|
|
952
952
|
attempt consumes the existing one-per-entry conflict-fix retry cap, so
|
|
@@ -986,7 +986,7 @@ class PipelineConfig:
|
|
|
986
986
|
escalate_fix_model: bool = True
|
|
987
987
|
# #1291 — DEFAULT OFF. See the class docstring.
|
|
988
988
|
escalate_semantic_conflicts: bool = False
|
|
989
|
-
semantic_conflict_model: str = "
|
|
989
|
+
semantic_conflict_model: str = "opus"
|
|
990
990
|
# #1478 — DEFAULT OFF. See the class docstring.
|
|
991
991
|
auto_dispatch_stalled: bool = False
|
|
992
992
|
attention_thresholds: dict[str, float] = field(
|
|
@@ -1540,6 +1540,46 @@ def get_repo_workflow_count(repo: str) -> int:
|
|
|
1540
1540
|
return data["total_count"]
|
|
1541
1541
|
|
|
1542
1542
|
|
|
1543
|
+
def get_required_status_check_contexts(repo: str) -> list[str] | None:
|
|
1544
|
+
"""Required status-check context names for *repo*'s default branch (#2388).
|
|
1545
|
+
|
|
1546
|
+
Backs the merge gate's "don't wait on an advisory check" filter — a repo
|
|
1547
|
+
can report many more `gh pr checks` entries than GitHub's own branch
|
|
1548
|
+
protection actually requires (this repo: 9 reported, 5 required), and a
|
|
1549
|
+
slow/hung advisory job (an unconditional Playwright/Chromium install
|
|
1550
|
+
step, say) has no business blocking `coord merge` when GitHub itself
|
|
1551
|
+
already considers the PR mergeable.
|
|
1552
|
+
|
|
1553
|
+
Returns ``None`` — never an empty list treated as "nothing required" —
|
|
1554
|
+
when the default branch has no protection configured, or any read
|
|
1555
|
+
step fails (auth, rate-limit, malformed response, `gh` missing). #1525's
|
|
1556
|
+
bias applies here too: "couldn't determine what's required" must read as
|
|
1557
|
+
"don't filter, wait on everything reported", not as a free pass to stop
|
|
1558
|
+
waiting on checks that might in fact be required. Only an actually
|
|
1559
|
+
non-empty ``required_status_checks.contexts`` list narrows the gate.
|
|
1560
|
+
"""
|
|
1561
|
+
try:
|
|
1562
|
+
repo_data = _gh_json("api", f"repos/{repo}", default=None)
|
|
1563
|
+
if not isinstance(repo_data, dict):
|
|
1564
|
+
return None
|
|
1565
|
+
default_branch = repo_data.get("default_branch")
|
|
1566
|
+
if not isinstance(default_branch, str) or not default_branch:
|
|
1567
|
+
return None
|
|
1568
|
+
protection = _gh_json(
|
|
1569
|
+
"api", f"repos/{repo}/branches/{default_branch}/protection",
|
|
1570
|
+
default=None,
|
|
1571
|
+
)
|
|
1572
|
+
except (FileNotFoundError, subprocess.TimeoutExpired, RuntimeError):
|
|
1573
|
+
return None
|
|
1574
|
+
if not isinstance(protection, dict):
|
|
1575
|
+
return None
|
|
1576
|
+
contexts = protection.get("required_status_checks", {})
|
|
1577
|
+
contexts = contexts.get("contexts") if isinstance(contexts, dict) else None
|
|
1578
|
+
if not isinstance(contexts, list) or not contexts:
|
|
1579
|
+
return None
|
|
1580
|
+
return [str(c) for c in contexts]
|
|
1581
|
+
|
|
1582
|
+
|
|
1543
1583
|
def get_pr_checks(repo: str, number: int) -> list[dict]:
|
|
1544
1584
|
"""Return ``gh pr checks``' raw check-run list for PR *number*.
|
|
1545
1585
|
|
|
@@ -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
|
|