code-coordinator 0.5.175__tar.gz → 0.5.180__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.175 → code_coordinator-0.5.180}/PKG-INFO +1 -1
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/code_coordinator.egg-info/SOURCES.txt +1 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/code_coordinator.egg-info/scm_file_list.json +1 -0
- code_coordinator-0.5.180/code_coordinator.egg-info/scm_version.json +8 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/reports.py +372 -0
- code_coordinator-0.5.180/tests/acceptance/ms-65/board_split_2288.rs +1383 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-65/manifest.yml +226 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_reports.py +301 -5
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/dialogs.rs +99 -60
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/doc_tabs.rs +766 -4
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/events.rs +27 -3
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/fixtures.rs +19 -1
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/mod.rs +252 -11
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/pipeline.rs +287 -27
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/render.rs +19 -1
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/reports.rs +539 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/tests.rs +3975 -2674
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/types.rs +53 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/tests/acceptance.rs +1 -0
- code_coordinator-0.5.175/code_coordinator.egg-info/scm_version.json +0 -8
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/.github/workflows/acceptance-web.yml +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/.gitignore +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/CLAUDE.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/GOAL.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/LICENSE +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/MANIFEST.in +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/README.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/__init__.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/agent.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/audit.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/block_log.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/board_service.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/brain.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/claim.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/cli.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/client.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/comments.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/config.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dao.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/db.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/deps.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/drive.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/events.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/filelock.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/freshness.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/gates.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/goal.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/context.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/models.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/render.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/health/units.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/hooks.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/interactive.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/models.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/network.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/notify.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/openapi.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/parentage.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/plans.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/progress.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/release_window.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/review.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/self_health.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/smoke.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/split_work.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/state.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/test_author.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/test_report.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/usage.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/install-agent.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/pyproject.toml +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/setup.cfg +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/__init__.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/conftest.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_config.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_db.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_events.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_init.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_models.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_network.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_review.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_session.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_split.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_state.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.175 → code_coordinator-0.5.180}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -803,6 +803,7 @@ tests/acceptance/ms-51/home-active.spec.ts
|
|
|
803
803
|
tests/acceptance/ms-51/manifest.yml
|
|
804
804
|
tests/acceptance/ms-51/tsconfig.json
|
|
805
805
|
tests/acceptance/ms-51/mocks/home-active.html
|
|
806
|
+
tests/acceptance/ms-65/board_split_2288.rs
|
|
806
807
|
tests/acceptance/ms-65/board_tabs_2282.rs
|
|
807
808
|
tests/acceptance/ms-65/board_tabs_close_2283.rs
|
|
808
809
|
tests/acceptance/ms-65/contract.md
|
{code_coordinator-0.5.175 → code_coordinator-0.5.180}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -441,6 +441,7 @@
|
|
|
441
441
|
"tests/acceptance/ms-51/manifest.yml",
|
|
442
442
|
"tests/acceptance/ms-51/mocks/home-active.html",
|
|
443
443
|
"tests/acceptance/ms-51/tsconfig.json",
|
|
444
|
+
"tests/acceptance/ms-65/board_split_2288.rs",
|
|
444
445
|
"tests/acceptance/ms-65/board_tabs_2282.rs",
|
|
445
446
|
"tests/acceptance/ms-65/board_tabs_close_2283.rs",
|
|
446
447
|
"tests/acceptance/ms-65/contract.md",
|
|
@@ -62,6 +62,7 @@ __all__ = [
|
|
|
62
62
|
"UnknownReportError",
|
|
63
63
|
"ReportParam",
|
|
64
64
|
"ReportDef",
|
|
65
|
+
"RowIdentity",
|
|
65
66
|
"ColumnMeta",
|
|
66
67
|
"ChartSeries",
|
|
67
68
|
"ChartSpec",
|
|
@@ -75,6 +76,10 @@ __all__ = [
|
|
|
75
76
|
"detect_prior_activity",
|
|
76
77
|
"fold_issue_activity",
|
|
77
78
|
"run_issue_activity",
|
|
79
|
+
"COMPLETED_COLUMNS",
|
|
80
|
+
"COMPLETED_COLUMN_META",
|
|
81
|
+
"fold_completed",
|
|
82
|
+
"run_completed",
|
|
78
83
|
"fold_drive_queue_status",
|
|
79
84
|
"run_drive_queue_status",
|
|
80
85
|
"fold_decisions",
|
|
@@ -148,6 +153,41 @@ class ReportParam:
|
|
|
148
153
|
}
|
|
149
154
|
|
|
150
155
|
|
|
156
|
+
@dataclass(frozen=True)
|
|
157
|
+
class RowIdentity:
|
|
158
|
+
"""#2454: which two ``columns`` of a report's rows name the ``(repo,
|
|
159
|
+
issue)`` that row is *about*.
|
|
160
|
+
|
|
161
|
+
Purely declarative, and deliberately **not** a rendering hint like
|
|
162
|
+
:class:`ColumnMeta`. A client that knows how to navigate to an issue —
|
|
163
|
+
coord-tui's Reports panel, which offers a right-click "View on Board" on
|
|
164
|
+
a result row — needs the row's *identity*, never its *content*. Saying
|
|
165
|
+
it here, once per report, is what lets that client stay generic: it reads
|
|
166
|
+
an optional field off the catalogue entry instead of carrying a
|
|
167
|
+
``match`` on report ids (the exact coupling #2405 declined to introduce).
|
|
168
|
+
|
|
169
|
+
``repo_column`` names the column holding the **coord-local** repo name
|
|
170
|
+
(matches ``coordinator.yml``, i.e. what ``select_issue`` and every
|
|
171
|
+
``coord`` verb take), ``issue_column`` the one holding the issue number.
|
|
172
|
+
|
|
173
|
+
**Optional in both directions.** Reports whose rows have no single
|
|
174
|
+
``(repo, issue)`` — ``usage`` grouped ``by=repo``, ``decisions``' cards,
|
|
175
|
+
``queue-outcomes``' per-period aggregates whose ``issues`` column is a
|
|
176
|
+
*list* — simply declare none, and a client offers no per-row navigation
|
|
177
|
+
for them. A client that predates the field ignores it and renders
|
|
178
|
+
exactly as before.
|
|
179
|
+
"""
|
|
180
|
+
|
|
181
|
+
repo_column: str
|
|
182
|
+
issue_column: str
|
|
183
|
+
|
|
184
|
+
def to_dict(self) -> dict[str, Any]:
|
|
185
|
+
return {
|
|
186
|
+
"repo_column": self.repo_column,
|
|
187
|
+
"issue_column": self.issue_column,
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
|
|
151
191
|
@dataclass(frozen=True)
|
|
152
192
|
class ReportDef:
|
|
153
193
|
"""A named report. ``run(**params)`` returns a :class:`ReportResult`."""
|
|
@@ -157,6 +197,10 @@ class ReportDef:
|
|
|
157
197
|
description: str
|
|
158
198
|
params: tuple[ReportParam, ...]
|
|
159
199
|
run: Callable[..., "ReportResult"] = field(compare=False)
|
|
200
|
+
#: #2454 — optional per-row ``(repo, issue)`` identity. See
|
|
201
|
+
#: :class:`RowIdentity`; ``None`` means "this report's rows are not
|
|
202
|
+
#: about one issue".
|
|
203
|
+
row_identity: RowIdentity | None = None
|
|
160
204
|
|
|
161
205
|
def to_dict(self) -> dict[str, Any]:
|
|
162
206
|
"""Catalogue entry — everything a client needs except the callable."""
|
|
@@ -165,6 +209,12 @@ class ReportDef:
|
|
|
165
209
|
"title": self.title,
|
|
166
210
|
"description": self.description,
|
|
167
211
|
"params": [p.to_dict() for p in self.params],
|
|
212
|
+
# #2454: additive, and `null` for most reports. A client that
|
|
213
|
+
# predates it ignores the key; one that understands it gets
|
|
214
|
+
# per-row navigation without knowing which report it is looking at.
|
|
215
|
+
"row_identity": (
|
|
216
|
+
None if self.row_identity is None else self.row_identity.to_dict()
|
|
217
|
+
),
|
|
168
218
|
}
|
|
169
219
|
|
|
170
220
|
|
|
@@ -2534,6 +2584,276 @@ def run_queue_outcomes(
|
|
|
2534
2584
|
)
|
|
2535
2585
|
|
|
2536
2586
|
|
|
2587
|
+
# ── completed: what left the pipeline inside a window ──────────────────────
|
|
2588
|
+
#
|
|
2589
|
+
# #2454. #2405 built exactly this table as a Pipeline-local detail tab
|
|
2590
|
+
# (`tui/src/app/pipeline.rs`'s `completed_rows`) rather than a catalogue
|
|
2591
|
+
# entry, because the interaction it wanted — row click opens that issue's
|
|
2592
|
+
# Pipeline detail — could only be expressed as a per-report `match` inside
|
|
2593
|
+
# `tui/src/app/reports.rs`, which is precisely the coupling that module
|
|
2594
|
+
# exists to prevent. #2454 changes the interaction (right-click → "View on
|
|
2595
|
+
# Board", which needs row *identity* and not row *content*, declared
|
|
2596
|
+
# generically by `RowIdentity` above), so the report can live here where it
|
|
2597
|
+
# belongs: filterable by time range and repo, sortable, and exportable
|
|
2598
|
+
# through the panel's existing CSV action, instead of only inside one tab.
|
|
2599
|
+
#
|
|
2600
|
+
# The fold is a port of `completed_rows`' rules, not a new definition of
|
|
2601
|
+
# "done":
|
|
2602
|
+
#
|
|
2603
|
+
# * an issue is completed when it is **closed** OR its `merge_queue` row
|
|
2604
|
+
# says `merged` (the PR closed it via `fixes #N` before the brain synced
|
|
2605
|
+
# the GitHub close — `pipeline_lifecycle_section`'s rule 1 and rule 3),
|
|
2606
|
+
# * ENDED is the merged `merge_queue` row's `last_attempt`, falling back to
|
|
2607
|
+
# the **max** `finished_at` across the issue's assignments (`issue_done_at`),
|
|
2608
|
+
# * STARTED is the **min** `dispatched_at` across them (`issue_started_at`),
|
|
2609
|
+
# * the window is applied to ENDED, and an issue with no ENDED at all is
|
|
2610
|
+
# dropped and *counted in a note* — it cannot be placed in any time range,
|
|
2611
|
+
# the same call `completed_rows` documents making.
|
|
2612
|
+
#
|
|
2613
|
+
# Deliberately NOT ported: the epic-aggregation branch (`epic_lifecycle_section`,
|
|
2614
|
+
# #1253). A tracking issue whose children are all done but which is itself
|
|
2615
|
+
# still open reads as in-progress here. That branch is a *sidebar bucketing*
|
|
2616
|
+
# rule with no server-side counterpart, and inventing one is a behaviour
|
|
2617
|
+
# change to "what is done", which this issue is not. See the note this fold
|
|
2618
|
+
# emits when it drops such rows for lack of an ENDED timestamp.
|
|
2619
|
+
|
|
2620
|
+
COMPLETED_COLUMNS = [
|
|
2621
|
+
"repo",
|
|
2622
|
+
"issue",
|
|
2623
|
+
"title",
|
|
2624
|
+
"started_at",
|
|
2625
|
+
"ended_at",
|
|
2626
|
+
]
|
|
2627
|
+
|
|
2628
|
+
# One entry per COMPLETED_COLUMNS entry, same order (#1760).
|
|
2629
|
+
#
|
|
2630
|
+
# `repo` is present even though #2405's grid had no repo column: that grid
|
|
2631
|
+
# folded the repo into its `C#2345` issue ref, which works because
|
|
2632
|
+
# `CoordApp::repo_tag` shortens against the repos actually on screen. A
|
|
2633
|
+
# server-side report has no such screen context, and its `repo` param
|
|
2634
|
+
# defaults to *all repos*, so the pair has to be two real columns — which is
|
|
2635
|
+
# also what `issue-activity` already does, and what `RowIdentity` reads.
|
|
2636
|
+
COMPLETED_COLUMN_META = [
|
|
2637
|
+
ColumnMeta(id="repo", label="Repo", kind="text"),
|
|
2638
|
+
ColumnMeta(id="issue", label="Issue", kind="int", align="right"),
|
|
2639
|
+
ColumnMeta(id="title", label="Title", kind="text", weight=3.0),
|
|
2640
|
+
ColumnMeta(id="started_at", label="Started", kind="timestamp"),
|
|
2641
|
+
ColumnMeta(id="ended_at", label="Ended", kind="timestamp"),
|
|
2642
|
+
]
|
|
2643
|
+
|
|
2644
|
+
|
|
2645
|
+
def fold_completed(
|
|
2646
|
+
issues: Iterable[Mapping[str, Any]],
|
|
2647
|
+
assignments: Iterable[Mapping[str, Any]],
|
|
2648
|
+
merge_queue: Iterable[Mapping[str, Any]],
|
|
2649
|
+
window: tuple[float, float],
|
|
2650
|
+
*,
|
|
2651
|
+
repo: str = "",
|
|
2652
|
+
generated_at: float | None = None,
|
|
2653
|
+
) -> ReportResult:
|
|
2654
|
+
"""Fold the board's own tables into one row per issue that *finished*
|
|
2655
|
+
inside ``window``.
|
|
2656
|
+
|
|
2657
|
+
Pure — every input is a plain sequence of mappings, so the whole rule set
|
|
2658
|
+
above is testable without a database (same posture as
|
|
2659
|
+
:func:`fold_issue_activity`). Rows come back newest-ENDED first, which
|
|
2660
|
+
is #2405's default order; the client re-sorts by column head-click.
|
|
2661
|
+
"""
|
|
2662
|
+
start, end = window
|
|
2663
|
+
generated_at = time.time() if generated_at is None else float(generated_at)
|
|
2664
|
+
repo_filter = (repo or "").strip()
|
|
2665
|
+
|
|
2666
|
+
issue_rows = list(issues)
|
|
2667
|
+
assignment_rows = list(assignments)
|
|
2668
|
+
merge_rows = list(merge_queue)
|
|
2669
|
+
|
|
2670
|
+
# `merge_queue` may hold several rows for one issue (a re-queue after a
|
|
2671
|
+
# failed merge). Keep the newest MERGED one — `last_attempt` is when the
|
|
2672
|
+
# merge landed, which is exactly the ENDED value we want.
|
|
2673
|
+
merged_at: dict[tuple[str, int], float] = {}
|
|
2674
|
+
for m in merge_rows:
|
|
2675
|
+
if str(m.get("state") or "") != "merged":
|
|
2676
|
+
continue
|
|
2677
|
+
name = str(m.get("repo_name") or "")
|
|
2678
|
+
number = m.get("issue_number")
|
|
2679
|
+
stamp = m.get("last_attempt")
|
|
2680
|
+
if not name or number is None or stamp is None:
|
|
2681
|
+
continue
|
|
2682
|
+
try:
|
|
2683
|
+
key = (name, int(number))
|
|
2684
|
+
value = float(stamp)
|
|
2685
|
+
except (TypeError, ValueError):
|
|
2686
|
+
continue
|
|
2687
|
+
if value > merged_at.get(key, float("-inf")):
|
|
2688
|
+
merged_at[key] = value
|
|
2689
|
+
|
|
2690
|
+
# One pass over assignments for both timestamps, keyed the same way
|
|
2691
|
+
# `issue_done_at`/`issue_started_at` key theirs: coord-LOCAL repo name
|
|
2692
|
+
# plus issue number, so repo-a#7 and repo-b#7 can never contribute to
|
|
2693
|
+
# each other.
|
|
2694
|
+
first_dispatch: dict[tuple[str, int], float] = {}
|
|
2695
|
+
last_finish: dict[tuple[str, int], float] = {}
|
|
2696
|
+
for a in assignment_rows:
|
|
2697
|
+
name = str(a.get("repo_name") or "")
|
|
2698
|
+
number = a.get("issue_number")
|
|
2699
|
+
if not name or number is None:
|
|
2700
|
+
continue
|
|
2701
|
+
try:
|
|
2702
|
+
key = (name, int(number))
|
|
2703
|
+
except (TypeError, ValueError):
|
|
2704
|
+
continue
|
|
2705
|
+
dispatched = a.get("dispatched_at")
|
|
2706
|
+
if dispatched is not None:
|
|
2707
|
+
try:
|
|
2708
|
+
value = float(dispatched)
|
|
2709
|
+
except (TypeError, ValueError):
|
|
2710
|
+
value = None
|
|
2711
|
+
if value is not None and value < first_dispatch.get(key, float("inf")):
|
|
2712
|
+
first_dispatch[key] = value
|
|
2713
|
+
finished = a.get("finished_at")
|
|
2714
|
+
if finished is not None:
|
|
2715
|
+
try:
|
|
2716
|
+
value = float(finished)
|
|
2717
|
+
except (TypeError, ValueError):
|
|
2718
|
+
value = None
|
|
2719
|
+
if value is not None and value > last_finish.get(key, float("-inf")):
|
|
2720
|
+
last_finish[key] = value
|
|
2721
|
+
|
|
2722
|
+
rows: list[dict] = []
|
|
2723
|
+
no_end_time = 0
|
|
2724
|
+
for issue in issue_rows:
|
|
2725
|
+
name = str(issue.get("repo_name") or "")
|
|
2726
|
+
number = issue.get("number")
|
|
2727
|
+
if not name or number is None:
|
|
2728
|
+
continue
|
|
2729
|
+
try:
|
|
2730
|
+
key = (name, int(number))
|
|
2731
|
+
except (TypeError, ValueError):
|
|
2732
|
+
continue
|
|
2733
|
+
is_closed = str(issue.get("state") or "open") == "closed"
|
|
2734
|
+
if not is_closed and key not in merged_at:
|
|
2735
|
+
continue
|
|
2736
|
+
if repo_filter and name != repo_filter:
|
|
2737
|
+
continue
|
|
2738
|
+
ended = merged_at.get(key, last_finish.get(key))
|
|
2739
|
+
if ended is None:
|
|
2740
|
+
# No END timestamp anywhere — it cannot be placed in *any* time
|
|
2741
|
+
# range, so it is dropped rather than silently windowed to now
|
|
2742
|
+
# (`completed_rows` makes the same call). Counted in a note below
|
|
2743
|
+
# so "my issue is missing" has a visible answer.
|
|
2744
|
+
no_end_time += 1
|
|
2745
|
+
continue
|
|
2746
|
+
if ended < start or ended > end:
|
|
2747
|
+
continue
|
|
2748
|
+
rows.append(
|
|
2749
|
+
{
|
|
2750
|
+
"repo": name,
|
|
2751
|
+
"issue": key[1],
|
|
2752
|
+
"title": str(issue.get("title") or "") or None,
|
|
2753
|
+
"started_at": first_dispatch.get(key),
|
|
2754
|
+
"ended_at": ended,
|
|
2755
|
+
}
|
|
2756
|
+
)
|
|
2757
|
+
|
|
2758
|
+
# Newest-ended first, with `(repo, issue)` as a total secondary key so a
|
|
2759
|
+
# re-run can never reshuffle rows that tie on the same second (#2405's
|
|
2760
|
+
# `sort_completed_rows` takes the same precaution for the same reason).
|
|
2761
|
+
rows.sort(key=lambda r: (-float(r["ended_at"]), r["repo"], r["issue"]))
|
|
2762
|
+
|
|
2763
|
+
notes: list[str] = []
|
|
2764
|
+
if no_end_time:
|
|
2765
|
+
notes.append(
|
|
2766
|
+
f"{no_end_time} completed issue(s) have no end timestamp (no merged "
|
|
2767
|
+
"merge_queue row and no assignment finished_at) and are not shown — "
|
|
2768
|
+
"there is no time range that could contain them."
|
|
2769
|
+
)
|
|
2770
|
+
if repo_filter and not any(
|
|
2771
|
+
str(i.get("repo_name") or "") == repo_filter for i in issue_rows
|
|
2772
|
+
):
|
|
2773
|
+
notes.append(
|
|
2774
|
+
f"No issue in this board belongs to repo {repo_filter!r} — check the "
|
|
2775
|
+
"coord-local repo name (the one in coordinator.yml), not the GitHub slug."
|
|
2776
|
+
)
|
|
2777
|
+
|
|
2778
|
+
return ReportResult(
|
|
2779
|
+
report_id="completed",
|
|
2780
|
+
generated_at=generated_at,
|
|
2781
|
+
window=(start, end),
|
|
2782
|
+
columns=list(COMPLETED_COLUMNS),
|
|
2783
|
+
column_meta=list(COMPLETED_COLUMN_META),
|
|
2784
|
+
rows=rows,
|
|
2785
|
+
notes=notes,
|
|
2786
|
+
)
|
|
2787
|
+
|
|
2788
|
+
|
|
2789
|
+
def _default_completed_source() -> tuple[list[dict], list[dict], list[dict]]:
|
|
2790
|
+
"""``(issues, assignments, merge_queue)`` straight off the local board DB.
|
|
2791
|
+
|
|
2792
|
+
A plain read — three ``SELECT``s, no tick, no reconcile — mirroring
|
|
2793
|
+
:func:`_lookup_titles`' posture (and its "never fail the report over a DB
|
|
2794
|
+
that isn't there" degradation). Like ``queue-outcomes``' block log this
|
|
2795
|
+
is a *host-local* source: run the report where the board lives, or let
|
|
2796
|
+
that host's daemon answer it over ``GET /report/completed``.
|
|
2797
|
+
"""
|
|
2798
|
+
try:
|
|
2799
|
+
from coord.db import get_connection # noqa: PLC0415
|
|
2800
|
+
|
|
2801
|
+
conn = get_connection()
|
|
2802
|
+
issues = [
|
|
2803
|
+
dict(r)
|
|
2804
|
+
for r in conn.execute(
|
|
2805
|
+
"SELECT repo_name, number, title, state FROM issues"
|
|
2806
|
+
).fetchall()
|
|
2807
|
+
]
|
|
2808
|
+
assignments = [
|
|
2809
|
+
dict(r)
|
|
2810
|
+
for r in conn.execute(
|
|
2811
|
+
"SELECT repo_name, issue_number, dispatched_at, finished_at "
|
|
2812
|
+
"FROM assignments"
|
|
2813
|
+
).fetchall()
|
|
2814
|
+
]
|
|
2815
|
+
merge_queue = [
|
|
2816
|
+
dict(r)
|
|
2817
|
+
for r in conn.execute(
|
|
2818
|
+
"SELECT repo_name, issue_number, state, last_attempt FROM merge_queue"
|
|
2819
|
+
).fetchall()
|
|
2820
|
+
]
|
|
2821
|
+
except Exception: # noqa: BLE001 — an unreadable board is an empty report
|
|
2822
|
+
return [], [], []
|
|
2823
|
+
return issues, assignments, merge_queue
|
|
2824
|
+
|
|
2825
|
+
|
|
2826
|
+
def run_completed(
|
|
2827
|
+
*,
|
|
2828
|
+
since: str = "24h",
|
|
2829
|
+
until: str = "",
|
|
2830
|
+
repo: str = "",
|
|
2831
|
+
now: float | None = None,
|
|
2832
|
+
source: Callable[[], tuple[
|
|
2833
|
+
Sequence[Mapping[str, Any]],
|
|
2834
|
+
Sequence[Mapping[str, Any]],
|
|
2835
|
+
Sequence[Mapping[str, Any]],
|
|
2836
|
+
]] | None = None,
|
|
2837
|
+
) -> ReportResult:
|
|
2838
|
+
"""Read the board and fold it. ``now``/``source`` are test seams
|
|
2839
|
+
(mirrors :func:`run_issue_activity`); the report's own parameters are
|
|
2840
|
+
``since``/``until``/``repo`` — the same three, with the same vocabulary
|
|
2841
|
+
and the same validators, that ``issue-activity`` uses."""
|
|
2842
|
+
generated_at = time.time() if now is None else float(now)
|
|
2843
|
+
end = parse_timestamp(until) if until else generated_at
|
|
2844
|
+
start = end - parse_duration(since)
|
|
2845
|
+
source_fn = _default_completed_source if source is None else source
|
|
2846
|
+
issues, assignments, merge_queue = source_fn()
|
|
2847
|
+
return fold_completed(
|
|
2848
|
+
issues,
|
|
2849
|
+
assignments,
|
|
2850
|
+
merge_queue,
|
|
2851
|
+
(start, end),
|
|
2852
|
+
repo=repo,
|
|
2853
|
+
generated_at=generated_at,
|
|
2854
|
+
)
|
|
2855
|
+
|
|
2856
|
+
|
|
2537
2857
|
# ── the catalogue ──────────────────────────────────────────────────────────
|
|
2538
2858
|
|
|
2539
2859
|
SINCE_PRESETS = ("1h", "6h", "24h", "3d", "7d")
|
|
@@ -2602,6 +2922,57 @@ ISSUE_ACTIVITY = ReportDef(
|
|
|
2602
2922
|
),
|
|
2603
2923
|
),
|
|
2604
2924
|
run=run_issue_activity,
|
|
2925
|
+
# #2454: one row per issue, with `repo`/`issue` naming it — so a client
|
|
2926
|
+
# can offer per-row navigation here for free.
|
|
2927
|
+
row_identity=RowIdentity(repo_column="repo", issue_column="issue"),
|
|
2928
|
+
)
|
|
2929
|
+
|
|
2930
|
+
|
|
2931
|
+
COMPLETED = ReportDef(
|
|
2932
|
+
id="completed",
|
|
2933
|
+
title="Completed",
|
|
2934
|
+
description=(
|
|
2935
|
+
"Everything that left the pipeline inside a time range — one row per "
|
|
2936
|
+
"issue, with when it first started and when it ended. An issue counts "
|
|
2937
|
+
"as completed when it is closed, or when its merge_queue row says "
|
|
2938
|
+
"merged (the PR closed it before the brain synced the close). ENDED is "
|
|
2939
|
+
"the merge timestamp, falling back to the last assignment to finish; "
|
|
2940
|
+
"STARTED is the first dispatch. Issues with no end timestamp at all "
|
|
2941
|
+
"cannot be placed in a time range and are counted in a note instead."
|
|
2942
|
+
),
|
|
2943
|
+
params=(
|
|
2944
|
+
# The same three params, the same vocabulary and the same validators
|
|
2945
|
+
# as `issue-activity` above (#2270's rule: follow the existing
|
|
2946
|
+
# convention rather than inventing one) — which is also exactly the
|
|
2947
|
+
# control set #2405's Pipeline-local grid settled on.
|
|
2948
|
+
ReportParam(
|
|
2949
|
+
id="since",
|
|
2950
|
+
label="Time range",
|
|
2951
|
+
kind="choice",
|
|
2952
|
+
choices=SINCE_PRESETS,
|
|
2953
|
+
default="24h",
|
|
2954
|
+
help="How far back the window reaches from `until`. Presets, or any duration (e.g. 13h).",
|
|
2955
|
+
free_form=True,
|
|
2956
|
+
validate=_validate_since,
|
|
2957
|
+
),
|
|
2958
|
+
ReportParam(
|
|
2959
|
+
id="until",
|
|
2960
|
+
label="Window end",
|
|
2961
|
+
kind="text",
|
|
2962
|
+
default="",
|
|
2963
|
+
help="Epoch seconds or ISO-8601. Empty means now.",
|
|
2964
|
+
validate=_validate_until,
|
|
2965
|
+
),
|
|
2966
|
+
ReportParam(
|
|
2967
|
+
id="repo",
|
|
2968
|
+
label="Repo",
|
|
2969
|
+
kind="text",
|
|
2970
|
+
default="",
|
|
2971
|
+
help="Restrict to one repo by name. Empty means all repos.",
|
|
2972
|
+
),
|
|
2973
|
+
),
|
|
2974
|
+
run=run_completed,
|
|
2975
|
+
row_identity=RowIdentity(repo_column="repo", issue_column="issue"),
|
|
2605
2976
|
)
|
|
2606
2977
|
|
|
2607
2978
|
|
|
@@ -2920,6 +3291,7 @@ def csv_filename(result: "ReportResult | Mapping[str, Any]") -> str:
|
|
|
2920
3291
|
|
|
2921
3292
|
REPORTS: dict[str, ReportDef] = {
|
|
2922
3293
|
ISSUE_ACTIVITY.id: ISSUE_ACTIVITY,
|
|
3294
|
+
COMPLETED.id: COMPLETED,
|
|
2923
3295
|
DRIVE_QUEUE_STATUS.id: DRIVE_QUEUE_STATUS,
|
|
2924
3296
|
DECISIONS.id: DECISIONS,
|
|
2925
3297
|
USAGE.id: USAGE,
|