code-coordinator 0.5.228__tar.gz → 0.5.230__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.228 → code_coordinator-0.5.230}/PKG-INFO +1 -1
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/code_coordinator.egg-info/SOURCES.txt +1 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/code_coordinator.egg-info/scm_file_list.json +1 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/agent.py +14 -8
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/agent_app.py +36 -6
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/block_log.py +192 -1
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/dispatch_workers.py +9 -9
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/drive_queue.py +136 -6
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/sessions.py +7 -1
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/status.py +7 -2
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/diagnose.py +9 -2
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/interactive.py +347 -28
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/providers/claude_pty.py +55 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/AGENT_OPERATIONS.md +51 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent.py +22 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_block_log.py +113 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_assign.py +35 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_drive_queue.py +165 -1
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_reattach_sessions.py +162 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_diagnose.py +88 -0
- code_coordinator-0.5.230/tests/test_interactive_pane_log_2541.py +333 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_paste_landed.py +60 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_remote_interactive_reaper.py +128 -17
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_tmux_session.py +57 -1
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.gitignore +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/CLAUDE.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/GOAL.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/LICENSE +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/MANIFEST.in +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/README.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/__init__.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/audit.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/board_service.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/brain.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/claim.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/cli.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/client.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/comments.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/config.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dao.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/db.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deps.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/drive.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/events.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/filelock.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/freshness.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/gates.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/goal.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/context.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/models.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/render.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/units.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/hooks.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/models.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/network.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notify.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/openapi.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/parentage.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/plans.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/progress.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/release_window.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/reports.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/review.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/self_health.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/smoke.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/split_work.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/state.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/test_author.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/test_report.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/usage.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/install-agent.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/pyproject.toml +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/setup.cfg +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/__init__.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-67/contract.md +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-67/manifest.yml +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/conftest.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_config.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_db.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_events.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_init.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_models.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_network.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_session.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_split.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_state.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/approved.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -541,6 +541,7 @@ tests/test_human_attended_437.py
|
|
|
541
541
|
tests/test_init.py
|
|
542
542
|
tests/test_integration.py
|
|
543
543
|
tests/test_interactive_briefing_echo.py
|
|
544
|
+
tests/test_interactive_pane_log_2541.py
|
|
544
545
|
tests/test_interactive_prefill_state.py
|
|
545
546
|
tests/test_interactive_session_relaunch.py
|
|
546
547
|
tests/test_interactive_test_verdict_backstop.py
|
{code_coordinator-0.5.228 → code_coordinator-0.5.230}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -611,6 +611,7 @@
|
|
|
611
611
|
"tests/test_init.py",
|
|
612
612
|
"tests/test_integration.py",
|
|
613
613
|
"tests/test_interactive_briefing_echo.py",
|
|
614
|
+
"tests/test_interactive_pane_log_2541.py",
|
|
614
615
|
"tests/test_interactive_prefill_state.py",
|
|
615
616
|
"tests/test_interactive_session_relaunch.py",
|
|
616
617
|
"tests/test_interactive_test_verdict_backstop.py",
|
|
@@ -5762,7 +5762,8 @@ class AgentServer:
|
|
|
5762
5762
|
|
|
5763
5763
|
@staticmethod
|
|
5764
5764
|
def _tmux_session_alive(assignment_id: str) -> bool:
|
|
5765
|
-
"""Return True when a ``coord-<assignment_id>`` tmux session is
|
|
5765
|
+
"""Return True when a ``coord-<assignment_id>`` tmux session is
|
|
5766
|
+
genuinely still in use — alive AND its pane is not dead.
|
|
5766
5767
|
|
|
5767
5768
|
Load-bearing guard for :meth:`clean_worktrees` (#1295): an
|
|
5768
5769
|
interactive Test/Review/Merge/Work pane keeps its tmux session
|
|
@@ -5772,11 +5773,16 @@ class AgentServer:
|
|
|
5772
5773
|
is the only reliable "someone is still using this worktree"
|
|
5773
5774
|
signal.
|
|
5774
5775
|
|
|
5775
|
-
|
|
5776
|
-
|
|
5777
|
-
|
|
5778
|
-
|
|
5779
|
-
|
|
5776
|
+
Delegates to :func:`coord.interactive.tmux_session_running` (a bare
|
|
5777
|
+
``tmux has-session`` alone is NOT enough — #2541 set
|
|
5778
|
+
``remain-on-exit on`` on every freshly-created coord tmux session so
|
|
5779
|
+
a crashed pane's screen stays inspectable, which means
|
|
5780
|
+
``has-session`` now stays ``True`` after ANY pane exit, clean
|
|
5781
|
+
success or crash, until a reaper notices and kills it. Without the
|
|
5782
|
+
pane-dead check this guard would keep protecting — and thus never
|
|
5783
|
+
cleaning up — a worktree whose interactive session has already
|
|
5784
|
+
finished, for as long as the now-longer-lived dead session
|
|
5785
|
+
lingers). When ``tmux`` is not installed / not running / the
|
|
5780
5786
|
subprocess errors, we return ``False`` — "no live session, keep
|
|
5781
5787
|
sweeping" — rather than raising, so one broken tmux install
|
|
5782
5788
|
never aborts a fleet sweep across the rest of an agent's
|
|
@@ -5788,15 +5794,15 @@ class AgentServer:
|
|
|
5788
5794
|
try:
|
|
5789
5795
|
from coord.interactive import ( # noqa: PLC0415
|
|
5790
5796
|
tmux_available,
|
|
5791
|
-
tmux_session_alive,
|
|
5792
5797
|
tmux_session_name,
|
|
5798
|
+
tmux_session_running,
|
|
5793
5799
|
)
|
|
5794
5800
|
except Exception: # noqa: BLE001 — defensive; module missing → no guard
|
|
5795
5801
|
return False
|
|
5796
5802
|
try:
|
|
5797
5803
|
if not tmux_available():
|
|
5798
5804
|
return False
|
|
5799
|
-
return
|
|
5805
|
+
return tmux_session_running(tmux_session_name(assignment_id))
|
|
5800
5806
|
except Exception: # noqa: BLE001 — never propagate out of the sweep
|
|
5801
5807
|
return False
|
|
5802
5808
|
|
|
@@ -1231,11 +1231,41 @@ def build_app(
|
|
|
1231
1231
|
async def logs(request: Request) -> Response:
|
|
1232
1232
|
assignment_id = request.path_params["id"]
|
|
1233
1233
|
assignment = server.get(assignment_id)
|
|
1234
|
-
if assignment is None
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1234
|
+
status = assignment.status if assignment is not None else "unknown"
|
|
1235
|
+
if assignment is not None and assignment.log_path is not None:
|
|
1236
|
+
log_path = Path(assignment.log_path)
|
|
1237
|
+
else:
|
|
1238
|
+
# #2541: the human-attended ssh+tmux interactive launcher
|
|
1239
|
+
# (`coord assign --interactive ...`) never goes through this
|
|
1240
|
+
# agent's `/assign` — it SSHes in directly from the
|
|
1241
|
+
# coordinator and drives `claude` inside a tmux session, so
|
|
1242
|
+
# `server.get()` has no record of it. Those sessions still
|
|
1243
|
+
# persist a best-effort pane-capture snapshot at the SAME
|
|
1244
|
+
# conventional per-assignment path
|
|
1245
|
+
# (`coord.interactive._persist_interactive_pane_log`) so a
|
|
1246
|
+
# launch failure is diagnosable via `coord log <id>` without a
|
|
1247
|
+
# manual SSH repro. Fall back to that path directly rather
|
|
1248
|
+
# than 404ing just because this agent never tracked the
|
|
1249
|
+
# assignment in memory.
|
|
1250
|
+
# assignment_id is attacker-controllable (raw path param) and,
|
|
1251
|
+
# unlike `assignment.log_path` above, is interpolated directly
|
|
1252
|
+
# into a filesystem path here — reject anything that isn't the
|
|
1253
|
+
# plain `[a-zA-Z0-9_-]+` shape every assignment_id generator in
|
|
1254
|
+
# this codebase actually produces, so a `../` can't escape
|
|
1255
|
+
# `logs/`.
|
|
1256
|
+
if not re.fullmatch(r"[A-Za-z0-9_-]+", assignment_id):
|
|
1257
|
+
return JSONResponse(
|
|
1258
|
+
{"error": f"invalid assignment id {assignment_id!r}"},
|
|
1259
|
+
status_code=400,
|
|
1260
|
+
)
|
|
1261
|
+
|
|
1262
|
+
# `server.log_dir` (not the module-level `DEFAULT_STATE_DIR`
|
|
1263
|
+
# default) so this honours a non-default `state_dir` exactly
|
|
1264
|
+
# like every other lookup in this handler would if the
|
|
1265
|
+
# assignment WERE tracked — production agents never override
|
|
1266
|
+
# it, but this keeps the fallback truthful to what this
|
|
1267
|
+
# specific server instance is actually configured with.
|
|
1268
|
+
log_path = server.log_dir / f"{assignment_id}.log"
|
|
1239
1269
|
if not log_path.exists():
|
|
1240
1270
|
return JSONResponse(
|
|
1241
1271
|
{"error": f"no log file for assignment {assignment_id}"}, status_code=404
|
|
@@ -1255,7 +1285,7 @@ def build_app(
|
|
|
1255
1285
|
total_size = log_path.stat().st_size
|
|
1256
1286
|
headers = {
|
|
1257
1287
|
"X-Coord-Log-Total": str(total_size),
|
|
1258
|
-
"X-Coord-Log-Status":
|
|
1288
|
+
"X-Coord-Log-Status": status,
|
|
1259
1289
|
}
|
|
1260
1290
|
return PlainTextResponse(body.decode("utf-8", errors="replace"), headers=headers)
|
|
1261
1291
|
|
|
@@ -35,6 +35,28 @@ cause later agreed with how the episode actually resolved
|
|
|
35
35
|
one that abstains, which is why ``unknown`` is counted separately from
|
|
36
36
|
``disagreed`` and never folded into it.
|
|
37
37
|
|
|
38
|
+
**#2540 fills the column that neither Phase counts: operator effort that never
|
|
39
|
+
touched the queue's own command surface.** ``human_acted`` was, until #2540,
|
|
40
|
+
true only for the narrow set of releases the queue itself can attribute to a
|
|
41
|
+
person — an operator's ``remove``, a Gate-A sign-off. Real recovery routinely
|
|
42
|
+
happens elsewhere entirely: a manual git rebase and force-with-lease push, a
|
|
43
|
+
direct ``coord test``/``coord merge --only``/``coord pr``/``coord fix``
|
|
44
|
+
against the assignment underneath an entry, a ``systemctl``/``coord agent
|
|
45
|
+
update``/``coord diagnose --reset`` on the machine running it. None of that
|
|
46
|
+
is visible to a tick, so none of it was ever counted — a night of real manual
|
|
47
|
+
recovery could read as ``0 needed a human``, which is the exact failure this
|
|
48
|
+
module exists to prevent, just relocated one layer down. This module cannot
|
|
49
|
+
detect that kind of intervention after the fact (recording must not probe live
|
|
50
|
+
state — see above), so :func:`intervention_event` gives an operator a place to
|
|
51
|
+
say so, in real time or shortly after: ``coord drive-queue log-intervention``
|
|
52
|
+
appends a record that :func:`episodes` folds onto whichever episode was open
|
|
53
|
+
for that key, or — if it had already resolved by the time the operator got to
|
|
54
|
+
logging it — the most recently closed one. It flips ``human_acted`` to
|
|
55
|
+
``True`` the same as an ``operator_resolution_event`` does, and is kept
|
|
56
|
+
separately visible (``intervention_categories``) so the report can still say
|
|
57
|
+
*how* it knows, rather than asserting a single flat "a human acted" with no
|
|
58
|
+
paper trail behind it.
|
|
59
|
+
|
|
38
60
|
**Recording must never change a decision.** Every public entry point here is
|
|
39
61
|
best-effort and swallows its own exceptions (:func:`record`), for the same
|
|
40
62
|
reason :mod:`coord.audit` does: the tick's merge/dispatch/attempt accounting
|
|
@@ -95,7 +117,9 @@ __all__ = [
|
|
|
95
117
|
"BY_DESIGN_CAUSES",
|
|
96
118
|
"EVENT_DIAGNOSIS",
|
|
97
119
|
"EVENT_ENTER",
|
|
120
|
+
"EVENT_INTERVENTION",
|
|
98
121
|
"EVENT_RESOLVE",
|
|
122
|
+
"INTERVENTION_CATEGORIES",
|
|
99
123
|
"OUTCOME_BUCKETS",
|
|
100
124
|
"RESCUE_SOURCES",
|
|
101
125
|
"STALL_STATES",
|
|
@@ -107,6 +131,7 @@ __all__ = [
|
|
|
107
131
|
"episode_bucket",
|
|
108
132
|
"episode_category",
|
|
109
133
|
"episodes",
|
|
134
|
+
"intervention_event",
|
|
110
135
|
"is_by_design",
|
|
111
136
|
"log_location",
|
|
112
137
|
"merge_only_event",
|
|
@@ -133,6 +158,11 @@ EVENT_RESOLVE = "resolve"
|
|
|
133
158
|
#: no read-modify-write race, and a later diagnosis that contradicts an earlier
|
|
134
159
|
#: one stays visible instead of overwriting it.
|
|
135
160
|
EVENT_DIAGNOSIS = "diagnosis"
|
|
161
|
+
#: #2540. An operator saying, out of band, "I acted on this key" — the
|
|
162
|
+
#: durable record for intervention that never touches the drive-queue command
|
|
163
|
+
#: surface (`remove`/`resume`) and so was invisible to `human_acted` before
|
|
164
|
+
#: this. See `intervention_event` and the module docstring's #2540 section.
|
|
165
|
+
EVENT_INTERVENTION = "intervention"
|
|
136
166
|
|
|
137
167
|
# Rotate at 4 MiB — comfortably more than two weeks at this fleet's rate
|
|
138
168
|
# (single-digit stalls a night, ~400 bytes a record), and small enough that
|
|
@@ -615,6 +645,71 @@ def operator_resolution_event(
|
|
|
615
645
|
return record
|
|
616
646
|
|
|
617
647
|
|
|
648
|
+
#: Documented common buckets for `coord drive-queue log-intervention
|
|
649
|
+
#: --category`. Deliberately NOT a closed enum enforced anywhere — same
|
|
650
|
+
#: reasoning as `episode_category`'s open vocabulary: a kind of intervention
|
|
651
|
+
#: this build has never named must still be recordable as itself, not
|
|
652
|
+
#: coerced into "other" and lost. This tuple exists purely so the CLI help
|
|
653
|
+
#: text and this module agree on the suggested starting set from #2540's own
|
|
654
|
+
#: evidence (a manual git rebase/conflict-resolution/force-push, a direct
|
|
655
|
+
#: `coord test`/`coord merge --only`/`coord pr`/`coord fix` against the
|
|
656
|
+
#: assignment, and infra-level recovery like `systemctl`/`coord agent
|
|
657
|
+
#: update`/`coord diagnose --reset`).
|
|
658
|
+
INTERVENTION_CATEGORIES: tuple[str, ...] = (
|
|
659
|
+
"git-recovery",
|
|
660
|
+
"cli-recheck",
|
|
661
|
+
"infra",
|
|
662
|
+
"other",
|
|
663
|
+
)
|
|
664
|
+
|
|
665
|
+
|
|
666
|
+
def intervention_event(
|
|
667
|
+
*,
|
|
668
|
+
key: str,
|
|
669
|
+
category: str,
|
|
670
|
+
note: str = "",
|
|
671
|
+
host: str = "",
|
|
672
|
+
now: float | None = None,
|
|
673
|
+
) -> dict[str, Any]:
|
|
674
|
+
"""A #2540 record: a human acted on *key* outside the queue's own commands.
|
|
675
|
+
|
|
676
|
+
The other half of #2235's metric that :func:`operator_resolution_event`
|
|
677
|
+
cannot reach. That function fires only from inside a command
|
|
678
|
+
(``remove``) that IS the resolution — a board mutation this process just
|
|
679
|
+
performed. A manual git rebase, a direct ``coord test``/``coord merge
|
|
680
|
+
--only``/``coord pr``/``coord fix``, or a ``systemctl``/``coord agent
|
|
681
|
+
update`` on the host underneath an entry are real operator effort that
|
|
682
|
+
touches none of this process's own write paths, so nothing here can see
|
|
683
|
+
them happen. What it CAN do is give the operator a place to say so —
|
|
684
|
+
this is that place, called from ``coord drive-queue log-intervention``.
|
|
685
|
+
|
|
686
|
+
Deliberately not a ``resolve``: unlike an operator's ``remove``, logging
|
|
687
|
+
an intervention does not by itself mean the stall is over — the entry may
|
|
688
|
+
still be blocked, may have already resolved by the time the operator gets
|
|
689
|
+
around to typing the command, or may resolve later still by an ordinary
|
|
690
|
+
auto mechanism. :func:`episodes` folds this onto whichever episode was
|
|
691
|
+
open for *key* at the time, or, failing that, the most recently closed
|
|
692
|
+
one — never inventing an episode, and never guessing at *why* the entry
|
|
693
|
+
was stalled, the same restraint :func:`operator_resolution_event` already
|
|
694
|
+
keeps.
|
|
695
|
+
|
|
696
|
+
*category* is free text, not validated against
|
|
697
|
+
:data:`INTERVENTION_CATEGORIES` — the same "open vocabulary, never
|
|
698
|
+
coerced" contract :func:`episode_category` documents. An empty string
|
|
699
|
+
normalises to ``"other"`` so the report always has something to show
|
|
700
|
+
rather than a blank category column.
|
|
701
|
+
"""
|
|
702
|
+
return {
|
|
703
|
+
"event": EVENT_INTERVENTION,
|
|
704
|
+
"ts": time.time() if now is None else now,
|
|
705
|
+
"key": key,
|
|
706
|
+
"category": str(category or "other"),
|
|
707
|
+
"note": note,
|
|
708
|
+
"host": host,
|
|
709
|
+
"source": "operator",
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
|
|
618
713
|
# ── #2276 Phase 1: the diagnosis record, and scoring it ──────────────────────
|
|
619
714
|
|
|
620
715
|
|
|
@@ -806,6 +901,60 @@ def read_events(
|
|
|
806
901
|
# ── reading (pairing + summary) ──────────────────────────────────────────────
|
|
807
902
|
|
|
808
903
|
|
|
904
|
+
def _fold_intervention(
|
|
905
|
+
open_by_key: dict[str, dict[str, Any]],
|
|
906
|
+
out: list[dict[str, Any]],
|
|
907
|
+
key: str,
|
|
908
|
+
event: Mapping[str, Any],
|
|
909
|
+
) -> None:
|
|
910
|
+
"""Attach one #2540 ``intervention`` record to the episode it happened
|
|
911
|
+
during — mutating the episode dict in place, exactly like the
|
|
912
|
+
``EVENT_DIAGNOSIS`` branch of :func:`episodes` does for ``true_cause``.
|
|
913
|
+
|
|
914
|
+
Preferred target is the OPEN episode for *key* — the common case, an
|
|
915
|
+
operator logging what they are doing while the entry is still stalled.
|
|
916
|
+
Failing that, the most recently CLOSED episode for *key* in *out*:
|
|
917
|
+
``coord drive-queue log-intervention`` very often runs minutes AFTER the
|
|
918
|
+
fix already landed (the operator ran ``coord merge --only``, it worked,
|
|
919
|
+
then they typed the log line), and by then :func:`episodes` has already
|
|
920
|
+
popped that episode out of ``open_by_key``. Searched from the end of
|
|
921
|
+
``out`` because that list is built in the same time order *events* is
|
|
922
|
+
iterated in, so the last match for *key* is the most recent past episode
|
|
923
|
+
— never an older one a later re-block would make ambiguous.
|
|
924
|
+
|
|
925
|
+
A *key* with no episode at all yet (logged before this host ever recorded
|
|
926
|
+
a stall for it) is dropped, the same convention an orphan ``resolve`` or
|
|
927
|
+
``diagnosis`` already follows: there is nothing here to attach evidence
|
|
928
|
+
to, and it is better to say so (`coord drive-queue log-intervention`
|
|
929
|
+
warns) than to silently fabricate one.
|
|
930
|
+
"""
|
|
931
|
+
episode = open_by_key.get(key)
|
|
932
|
+
if episode is None:
|
|
933
|
+
for candidate in reversed(out):
|
|
934
|
+
if candidate.get("key") == key:
|
|
935
|
+
episode = candidate
|
|
936
|
+
break
|
|
937
|
+
if episode is None:
|
|
938
|
+
return
|
|
939
|
+
category = str(event.get("category") or "other")
|
|
940
|
+
episode.setdefault("interventions", []).append(
|
|
941
|
+
{
|
|
942
|
+
"ts": float(event.get("ts") or 0.0),
|
|
943
|
+
"category": category,
|
|
944
|
+
"note": str(event.get("note") or ""),
|
|
945
|
+
"host": str(event.get("host") or ""),
|
|
946
|
+
}
|
|
947
|
+
)
|
|
948
|
+
categories = episode.setdefault("intervention_categories", [])
|
|
949
|
+
if category not in categories:
|
|
950
|
+
categories.append(category)
|
|
951
|
+
# The whole point: this is the signal `human_acted` was blind to before
|
|
952
|
+
# #2540. Set unconditionally, whether the episode is still open (the
|
|
953
|
+
# eventual `resolve` branch above ORs it back in rather than clobbering
|
|
954
|
+
# it) or already closed (there is no later write to clobber it).
|
|
955
|
+
episode["human_acted"] = True
|
|
956
|
+
|
|
957
|
+
|
|
809
958
|
def episodes(events: Sequence[Mapping[str, Any]]) -> list[dict[str, Any]]:
|
|
810
959
|
"""Pair ``enter`` records with the ``resolve`` that closed them.
|
|
811
960
|
|
|
@@ -828,6 +977,16 @@ def episodes(events: Sequence[Mapping[str, Any]]) -> list[dict[str, Any]]:
|
|
|
828
977
|
resolution's own account of what happened and the derived one is kept
|
|
829
978
|
beside it as ``diagnosed_cause``, so ``agreement`` scores two independent
|
|
830
979
|
claims rather than one claim against itself.
|
|
980
|
+
|
|
981
|
+
An ``intervention`` (#2540) folds onto an episode the same way — see
|
|
982
|
+
:func:`_fold_intervention` — except it targets a CLOSED episode too, not
|
|
983
|
+
only an open one: unlike a diagnosis, an operator very often logs an
|
|
984
|
+
intervention after the fact, once the fix they made by hand has already
|
|
985
|
+
let the entry auto-resolve. It sets ``human_acted`` true and appends to
|
|
986
|
+
``intervention_categories``/``interventions`` without touching
|
|
987
|
+
``true_cause`` — what mechanically flipped the state is still whatever
|
|
988
|
+
the resolution said; #2540 only means the record also captures that a
|
|
989
|
+
human was in the loop, in a way the pre-#2540 log could not see at all.
|
|
831
990
|
"""
|
|
832
991
|
open_by_key: dict[str, dict[str, Any]] = {}
|
|
833
992
|
out: list[dict[str, Any]] = []
|
|
@@ -866,7 +1025,13 @@ def episodes(events: Sequence[Mapping[str, Any]]) -> list[dict[str, Any]]:
|
|
|
866
1025
|
"diagnosis_evidence": [],
|
|
867
1026
|
"diagnosis_contradicts_stated": False,
|
|
868
1027
|
"agreement": "",
|
|
1028
|
+
# #2540. Populated only by `intervention_event` records
|
|
1029
|
+
# folded on below — a fresh episode has neither.
|
|
1030
|
+
"interventions": [],
|
|
1031
|
+
"intervention_categories": [],
|
|
869
1032
|
}
|
|
1033
|
+
elif kind == EVENT_INTERVENTION:
|
|
1034
|
+
_fold_intervention(open_by_key, out, key, event)
|
|
870
1035
|
elif kind == EVENT_DIAGNOSIS:
|
|
871
1036
|
episode = open_by_key.get(key)
|
|
872
1037
|
if episode is None:
|
|
@@ -897,7 +1062,14 @@ def episodes(events: Sequence[Mapping[str, Any]]) -> list[dict[str, Any]]:
|
|
|
897
1062
|
"resolved": True,
|
|
898
1063
|
"resolution": event.get("resolution", ""),
|
|
899
1064
|
"true_cause": resolution_cause,
|
|
900
|
-
|
|
1065
|
+
# #2540: OR in whatever an earlier `intervention_event`
|
|
1066
|
+
# already set. Without the `or`, an ordinary auto
|
|
1067
|
+
# resolution's own `human_acted=False` would blindly
|
|
1068
|
+
# overwrite the `True` a logged intervention just
|
|
1069
|
+
# earned — exactly the undercount this issue is about,
|
|
1070
|
+
# relocated one line down instead of fixed.
|
|
1071
|
+
"human_acted": bool(event.get("human_acted"))
|
|
1072
|
+
or bool(episode.get("human_acted")),
|
|
901
1073
|
"resolved_at": resolved_at,
|
|
902
1074
|
"stalled_seconds": max(0.0, resolved_at - episode["entered_at"]),
|
|
903
1075
|
"source": event.get("source", ""),
|
|
@@ -937,11 +1109,27 @@ def summarize(items: Sequence[Mapping[str, Any]]) -> dict[str, Any]:
|
|
|
937
1109
|
counts the episodes where the live evidence positively ruled the queue's
|
|
938
1110
|
stated reason out — the five-of-seven number, finally measured instead of
|
|
939
1111
|
reconstructed by hand.
|
|
1112
|
+
|
|
1113
|
+
``human_acted_logged`` (#2540) is the subset of ``human_acted`` this build
|
|
1114
|
+
can actually SHOW ITS WORK for: episodes carrying at least one
|
|
1115
|
+
``coord drive-queue log-intervention`` record. The rest of ``human_acted``
|
|
1116
|
+
still comes from the pre-#2540 queue-command surface (an operator's
|
|
1117
|
+
``remove``, a Gate-A sign-off) — real, but with no evidence trail beyond
|
|
1118
|
+
"the resolve record said so". Neither of those two is a claim that
|
|
1119
|
+
*nothing else* happened: a night with ``human_acted_logged == 0`` means
|
|
1120
|
+
no intervention was LOGGED, not that none occurred — this module still
|
|
1121
|
+
cannot see a git rebase or a direct ``coord test`` call that nobody typed
|
|
1122
|
+
the one extra command for. That is the honest limit of what an
|
|
1123
|
+
append-only log fed only by this process's own choke points can claim,
|
|
1124
|
+
and it is why the CLI help for ``log-intervention`` asks operators to run
|
|
1125
|
+
it as a matter of habit rather than treating the count as automatically
|
|
1126
|
+
complete.
|
|
940
1127
|
"""
|
|
941
1128
|
by_state: dict[str, int] = {}
|
|
942
1129
|
by_cause: dict[str, int] = {}
|
|
943
1130
|
seen_pairs: dict[tuple[str, str], int] = {}
|
|
944
1131
|
human = 0
|
|
1132
|
+
human_logged = 0
|
|
945
1133
|
auto = 0
|
|
946
1134
|
still_open = 0
|
|
947
1135
|
diagnosed = 0
|
|
@@ -961,6 +1149,8 @@ def summarize(items: Sequence[Mapping[str, Any]]) -> dict[str, Any]:
|
|
|
961
1149
|
still_open += 1
|
|
962
1150
|
elif item.get("human_acted"):
|
|
963
1151
|
human += 1
|
|
1152
|
+
if item.get("intervention_categories"):
|
|
1153
|
+
human_logged += 1
|
|
964
1154
|
else:
|
|
965
1155
|
auto += 1
|
|
966
1156
|
cause = episode_category(item)
|
|
@@ -986,6 +1176,7 @@ def summarize(items: Sequence[Mapping[str, Any]]) -> dict[str, Any]:
|
|
|
986
1176
|
"by_state": by_state,
|
|
987
1177
|
"by_cause": by_cause,
|
|
988
1178
|
"human_acted": human,
|
|
1179
|
+
"human_acted_logged": human_logged,
|
|
989
1180
|
"auto_released": auto,
|
|
990
1181
|
"open": still_open,
|
|
991
1182
|
"repeat_causes": repeats,
|
|
@@ -141,8 +141,8 @@ def _dispatch_review_of(
|
|
|
141
141
|
finalize_interactive_exit,
|
|
142
142
|
launch_human_attended_interactive,
|
|
143
143
|
tmux_available as _tmux_avail,
|
|
144
|
-
tmux_session_alive as _tmux_alive,
|
|
145
144
|
tmux_session_name as _tmux_name,
|
|
145
|
+
tmux_session_running as _tmux_alive,
|
|
146
146
|
)
|
|
147
147
|
|
|
148
148
|
from coord.review import ( # noqa: PLC0415
|
|
@@ -648,8 +648,8 @@ def _dispatch_smoke_of(
|
|
|
648
648
|
launch_human_attended_interactive,
|
|
649
649
|
snapshot_live_checkout_for_smoke,
|
|
650
650
|
tmux_available as _tmux_avail,
|
|
651
|
-
tmux_session_alive as _tmux_alive,
|
|
652
651
|
tmux_session_name as _tmux_name,
|
|
652
|
+
tmux_session_running as _tmux_alive,
|
|
653
653
|
)
|
|
654
654
|
|
|
655
655
|
from coord.models import Assignment as _AssignmentSm # noqa: PLC0415
|
|
@@ -1142,8 +1142,8 @@ def _dispatch_audit_of(
|
|
|
1142
1142
|
finalize_interactive_exit,
|
|
1143
1143
|
launch_human_attended_interactive,
|
|
1144
1144
|
tmux_available as _tmux_avail,
|
|
1145
|
-
tmux_session_alive as _tmux_alive,
|
|
1146
1145
|
tmux_session_name as _tmux_name,
|
|
1146
|
+
tmux_session_running as _tmux_alive,
|
|
1147
1147
|
)
|
|
1148
1148
|
from coord.models import Assignment as _AssignmentAu # noqa: PLC0415
|
|
1149
1149
|
from coord.state import record_dispatched_assignment as _record_au # noqa: PLC0415
|
|
@@ -1486,8 +1486,8 @@ def _dispatch_milestone_chat_of(
|
|
|
1486
1486
|
finalize_interactive_exit,
|
|
1487
1487
|
launch_human_attended_interactive,
|
|
1488
1488
|
tmux_available as _tmux_avail,
|
|
1489
|
-
tmux_session_alive as _tmux_alive,
|
|
1490
1489
|
tmux_session_name as _tmux_name,
|
|
1490
|
+
tmux_session_running as _tmux_alive,
|
|
1491
1491
|
)
|
|
1492
1492
|
from coord.milestone_chat import resolve_milestone_chat_briefing # noqa: PLC0415
|
|
1493
1493
|
from coord.board_service import read_board as _read_board_mc # noqa: PLC0415
|
|
@@ -1682,8 +1682,8 @@ def _run_troubleshoot_or_chat(
|
|
|
1682
1682
|
finalize_interactive_exit,
|
|
1683
1683
|
launch_human_attended_interactive,
|
|
1684
1684
|
tmux_available as _tmux_avail,
|
|
1685
|
-
tmux_session_alive as _tmux_alive,
|
|
1686
1685
|
tmux_session_name as _tmux_name,
|
|
1686
|
+
tmux_session_running as _tmux_alive,
|
|
1687
1687
|
)
|
|
1688
1688
|
|
|
1689
1689
|
from coord.board_service import read_board as _read_board_ts # noqa: PLC0415
|
|
@@ -2044,8 +2044,8 @@ def _dispatch_fix_of(
|
|
|
2044
2044
|
launch_human_attended_interactive,
|
|
2045
2045
|
remote_worktree_exists as _remote_wt_exists,
|
|
2046
2046
|
tmux_available as _tmux_avail,
|
|
2047
|
-
tmux_session_alive as _tmux_alive,
|
|
2048
2047
|
tmux_session_name as _tmux_name,
|
|
2048
|
+
tmux_session_running as _tmux_alive,
|
|
2049
2049
|
)
|
|
2050
2050
|
|
|
2051
2051
|
from coord.auto_loop import ( # noqa: PLC0415
|
|
@@ -2731,8 +2731,8 @@ def _dispatch_rework_of(
|
|
|
2731
2731
|
launch_human_attended_interactive,
|
|
2732
2732
|
remote_worktree_exists as _remote_wt_exists,
|
|
2733
2733
|
tmux_available as _tmux_avail,
|
|
2734
|
-
tmux_session_alive as _tmux_alive,
|
|
2735
2734
|
tmux_session_name as _tmux_name,
|
|
2735
|
+
tmux_session_running as _tmux_alive,
|
|
2736
2736
|
)
|
|
2737
2737
|
|
|
2738
2738
|
from coord.agent import ( # noqa: PLC0415
|
|
@@ -3294,8 +3294,8 @@ def _dispatch_merge_of(
|
|
|
3294
3294
|
launch_human_attended_interactive,
|
|
3295
3295
|
remote_worktree_exists as _remote_wt_exists,
|
|
3296
3296
|
tmux_available as _tmux_avail,
|
|
3297
|
-
tmux_session_alive as _tmux_alive,
|
|
3298
3297
|
tmux_session_name as _tmux_name,
|
|
3298
|
+
tmux_session_running as _tmux_alive,
|
|
3299
3299
|
)
|
|
3300
3300
|
|
|
3301
3301
|
from coord.agent import ( # noqa: PLC0415
|
|
@@ -3932,8 +3932,8 @@ def _dispatch_interactive_work(
|
|
|
3932
3932
|
launch_human_attended_interactive,
|
|
3933
3933
|
remote_worktree_exists as _remote_wt_exists,
|
|
3934
3934
|
tmux_available as _tmux_avail,
|
|
3935
|
-
tmux_session_alive as _tmux_alive,
|
|
3936
3935
|
tmux_session_name as _tmux_name,
|
|
3936
|
+
tmux_session_running as _tmux_alive,
|
|
3937
3937
|
)
|
|
3938
3938
|
|
|
3939
3939
|
if _is_local:
|