code-coordinator 0.5.188__tar.gz → 0.5.190__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.188 → code_coordinator-0.5.190}/PKG-INFO +1 -1
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/agent.py +170 -25
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/dispatch_workers.py +2 -2
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/providers/claude.py +38 -4
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/providers/claude_pty.py +11 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/review.py +8 -2
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent.py +192 -11
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_providers.py +85 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_providers_pty.py +34 -2
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_worker_test_scoping.py +23 -4
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.gitignore +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/CLAUDE.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/GOAL.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/LICENSE +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/MANIFEST.in +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/README.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/__init__.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/audit.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/block_log.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/board_service.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/brain.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/claim.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/cli.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/client.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/comments.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/config.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dao.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/db.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deps.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/drive.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/events.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/filelock.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/freshness.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/gates.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/goal.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/context.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/models.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/render.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/units.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/hooks.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/interactive.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/models.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/network.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notify.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/openapi.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/parentage.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/plans.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/progress.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/release_window.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/reports.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/self_health.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/smoke.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/split_work.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/state.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/test_author.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/test_report.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/usage.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/install-agent.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/pyproject.toml +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/setup.cfg +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/__init__.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/conftest.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_config.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_db.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_events.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_init.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_models.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_network.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_session.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_split.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_state.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -3678,6 +3678,49 @@ NEW_ISSUE_CHAT_DENY_COMMANDS: list[str] = [
|
|
|
3678
3678
|
]
|
|
3679
3679
|
|
|
3680
3680
|
|
|
3681
|
+
# Deny list applied to review workers (#2461). Unlike every other member of
|
|
3682
|
+
# WRITE_CAPABLE_SPEC_TYPES, a reviewer has ZERO legitimate mutations of its
|
|
3683
|
+
# own — coord.review.REVIEWER_SYSTEM_PROMPT already tells it "You are NOT
|
|
3684
|
+
# allowed to push commits or modify the PR's code. You only review" and "You
|
|
3685
|
+
# are NOT allowed to run any `gh` commands" (the coordinator posts the
|
|
3686
|
+
# review on its behalf after the session ends). Before #2461 that was
|
|
3687
|
+
# enforced by the PROMPT ALONE: `"review"` wasn't one of the explicit
|
|
3688
|
+
# branches in `default_worker_command`, so it fell through to the generic
|
|
3689
|
+
# `else` below and got the exact same `Read,Edit,Write,Bash,Monitor` grant as
|
|
3690
|
+
# a real work leg — nothing but the model's own good behaviour stood between
|
|
3691
|
+
# "read the diff" and "silently commit a fix and push it". This list is
|
|
3692
|
+
# wired into BOTH the system prompt (via `build_deny_prompt`, soft — a
|
|
3693
|
+
# reminder) AND `--disallowedTools` (CLI-enforced, hard — see the
|
|
3694
|
+
# `spec.type == "review"` branch below) so a reviewer that ignores its own
|
|
3695
|
+
# prompt still cannot shell out to a mutating git/gh command. The read-only
|
|
3696
|
+
# git the briefing actually tells reviewers to run (`git fetch`, `git diff`,
|
|
3697
|
+
# `git log`) stays allowed by omission.
|
|
3698
|
+
REVIEW_DENY_COMMANDS: list[str] = [
|
|
3699
|
+
"Bash(gh *)",
|
|
3700
|
+
"Bash(git push *)",
|
|
3701
|
+
"Bash(git commit *)",
|
|
3702
|
+
"Bash(git add *)",
|
|
3703
|
+
"Bash(git merge *)",
|
|
3704
|
+
"Bash(git rebase *)",
|
|
3705
|
+
"Bash(git cherry-pick *)",
|
|
3706
|
+
"Bash(git reset *)",
|
|
3707
|
+
"Bash(git checkout *)",
|
|
3708
|
+
"Bash(git switch *)",
|
|
3709
|
+
"Bash(git branch *)",
|
|
3710
|
+
"Bash(git stash *)",
|
|
3711
|
+
"Bash(git clean *)",
|
|
3712
|
+
"Bash(git rm *)",
|
|
3713
|
+
"Bash(git apply *)",
|
|
3714
|
+
"Bash(git am *)",
|
|
3715
|
+
"Bash(git tag *)",
|
|
3716
|
+
"Bash(rm -rf *)",
|
|
3717
|
+
"Bash(rm -fr *)",
|
|
3718
|
+
"Bash(coord approve *)",
|
|
3719
|
+
"Bash(coord merge *)",
|
|
3720
|
+
"Bash(coord assign *)",
|
|
3721
|
+
]
|
|
3722
|
+
|
|
3723
|
+
|
|
3681
3724
|
WorkerCommandBuilder = Callable[[AssignmentSpec], list[str]]
|
|
3682
3725
|
|
|
3683
3726
|
|
|
@@ -3858,13 +3901,16 @@ def _base_checkout_write_guard_tools(repo_path: str) -> list[str]:
|
|
|
3858
3901
|
# editing coordinator.yml/coord.db) silently also blocked every worker's own
|
|
3859
3902
|
# worktree under `~/.coord/worktrees/<id>/`, burning a full $5.23 session
|
|
3860
3903
|
# that reasoned, designed, and only discovered at the very end that it could
|
|
3861
|
-
# not save anything. `default_worker_command`'s `--
|
|
3862
|
-
#
|
|
3863
|
-
#
|
|
3864
|
-
#
|
|
3865
|
-
#
|
|
3866
|
-
#
|
|
3867
|
-
#
|
|
3904
|
+
# not save anything. `default_worker_command`'s `--bare` (above, #2462;
|
|
3905
|
+
# originally the narrower `--setting-sources user`) closes off the specific
|
|
3906
|
+
# mechanism for headless workers — they no longer load *any* Claude Code
|
|
3907
|
+
# settings.json (user, project, or local) — but this preflight check is kept
|
|
3908
|
+
# as a defense-in-depth: it still catches a blanket deny rule living in the
|
|
3909
|
+
# machine's *user*-level settings (`~/.claude/settings.json`) that would
|
|
3910
|
+
# affect the human-attended interactive PTY path (which intentionally keeps
|
|
3911
|
+
# the default setting sources, see the comment in `default_worker_command`),
|
|
3912
|
+
# and it catches plain OS-level write failures (read-only mount, wrong
|
|
3913
|
+
# ownership, full disk) that have nothing to do with Claude Code at all.
|
|
3868
3914
|
_DENY_PATTERN_RE = re.compile(r"^(Edit|Write)\(//(.+)\)$")
|
|
3869
3915
|
|
|
3870
3916
|
|
|
@@ -3934,11 +3980,13 @@ def find_blocking_deny_rule(
|
|
|
3934
3980
|
"""Scan Claude Code settings files for a deny rule blocking *worktree_path*.
|
|
3935
3981
|
|
|
3936
3982
|
Defaults to scanning just the machine's user-level settings
|
|
3937
|
-
(``~/.claude/settings.json``)
|
|
3938
|
-
|
|
3939
|
-
|
|
3940
|
-
|
|
3941
|
-
|
|
3983
|
+
(``~/.claude/settings.json``). Since #2462, headless workers run with
|
|
3984
|
+
``--bare`` and load no Claude Code settings.json at all (user, project,
|
|
3985
|
+
or local) — this file matters for the human-attended interactive PTY
|
|
3986
|
+
path (:class:`coord.providers.claude_pty.ClaudePtyProvider`), which
|
|
3987
|
+
intentionally keeps the default setting sources; a checkout-local
|
|
3988
|
+
``.claude/settings.local.json`` can no longer reach a headless worker at
|
|
3989
|
+
all either way, so it is intentionally not scanned here.
|
|
3942
3990
|
|
|
3943
3991
|
Returns a human-readable ``"'<pattern>' in <file>"`` message for the
|
|
3944
3992
|
first matching rule found, or ``None`` when no scanned file carries one
|
|
@@ -4008,6 +4056,34 @@ def check_worktree_writable(
|
|
|
4008
4056
|
return None
|
|
4009
4057
|
|
|
4010
4058
|
|
|
4059
|
+
def _claude_md_system_prompt_suffix(repo_path: str) -> str:
|
|
4060
|
+
"""Return a system-prompt suffix embedding the target repo's CLAUDE.md.
|
|
4061
|
+
|
|
4062
|
+
#2462: worker dispatch below passes ``--bare``, which disables Claude
|
|
4063
|
+
Code's own automatic CLAUDE.md auto-discovery (along with hooks,
|
|
4064
|
+
``.mcp.json``, and settings — see the ``--bare`` comment in
|
|
4065
|
+
:func:`default_worker_command`). Nothing else in a work-shaped leg's
|
|
4066
|
+
briefing embeds the target repo's actual CLAUDE.md text, so without this
|
|
4067
|
+
a worker would silently lose every per-repo convention, testing rule,
|
|
4068
|
+
and sealed-path note that isn't hardcoded into the repo-agnostic
|
|
4069
|
+
``WORKER_SYSTEM_PROMPT``.
|
|
4070
|
+
|
|
4071
|
+
Mirrors :func:`coord.review.read_repo_claude_md`, which the review leg
|
|
4072
|
+
already uses for the same reason (a review must never run blind to
|
|
4073
|
+
CLAUDE.md) — this repo's own CLAUDE.md says it is "loaded into every
|
|
4074
|
+
worker leg, every review leg, and every coordinator session", so the
|
|
4075
|
+
work-shaped legs need the identical defensive read now that ambient
|
|
4076
|
+
discovery is gone. Returns ``""`` (a no-op suffix) when the repo has no
|
|
4077
|
+
CLAUDE.md or it can't be read.
|
|
4078
|
+
"""
|
|
4079
|
+
from coord.review import read_repo_claude_md # noqa: PLC0415
|
|
4080
|
+
|
|
4081
|
+
claude_md = read_repo_claude_md(Path(repo_path).expanduser())
|
|
4082
|
+
if not claude_md:
|
|
4083
|
+
return ""
|
|
4084
|
+
return "\n\n## Project rules (from CLAUDE.md)\n\n" + claude_md.strip() + "\n"
|
|
4085
|
+
|
|
4086
|
+
|
|
4011
4087
|
def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER_BINARY) -> list[str]:
|
|
4012
4088
|
"""Build the argv for invoking the worker on this assignment.
|
|
4013
4089
|
|
|
@@ -4030,6 +4106,9 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
|
|
|
4030
4106
|
"""
|
|
4031
4107
|
if spec.type == "plan":
|
|
4032
4108
|
system_prompt = spec.system_prompt if spec.system_prompt else WORKER_PLAN_PROMPT
|
|
4109
|
+
# #2462: --bare drops CLAUDE.md auto-discovery; a plan leg still
|
|
4110
|
+
# needs the target repo's conventions to plan against.
|
|
4111
|
+
system_prompt += _claude_md_system_prompt_suffix(spec.repo_path)
|
|
4033
4112
|
allowed_tools = "Read,Bash"
|
|
4034
4113
|
elif spec.type == "refinement":
|
|
4035
4114
|
# #264: refinement is a developer-driven chat for scoping an issue.
|
|
@@ -4083,6 +4162,8 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
|
|
|
4083
4162
|
# and deny list instead of the generic WORKER_SYSTEM_PROMPT.
|
|
4084
4163
|
system_prompt = spec.system_prompt if spec.system_prompt else MOCK_AUTHOR_SYSTEM_PROMPT
|
|
4085
4164
|
system_prompt += build_deny_prompt(MOCK_AUTHOR_DENY_COMMANDS)
|
|
4165
|
+
# #2462: --bare drops CLAUDE.md auto-discovery.
|
|
4166
|
+
system_prompt += _claude_md_system_prompt_suffix(spec.repo_path)
|
|
4086
4167
|
allowed_tools = "Read,Edit,Write,Bash"
|
|
4087
4168
|
elif spec.type == "smoke":
|
|
4088
4169
|
# #2301: smoke gets its own branch instead of falling through to the
|
|
@@ -4111,9 +4192,34 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
|
|
|
4111
4192
|
system_prompt = spec.system_prompt if spec.system_prompt else SMOKE_SYSTEM_PROMPT
|
|
4112
4193
|
system_prompt += build_deny_prompt(spec.deny_commands)
|
|
4113
4194
|
allowed_tools = "Read,Bash"
|
|
4195
|
+
elif spec.type == "review":
|
|
4196
|
+
# #2461: give review its own branch instead of falling through to
|
|
4197
|
+
# the generic `else` below — see REVIEW_DENY_COMMANDS for the full
|
|
4198
|
+
# story. A reviewer reads the diff and reports a verdict; it edits
|
|
4199
|
+
# and pushes nothing, so it gets no Edit/Write. `Monitor` is
|
|
4200
|
+
# withheld too, for the same #1394/#2301 reason the `smoke` branch
|
|
4201
|
+
# above withholds it: a review leg is a one-shot `claude -p`
|
|
4202
|
+
# session, and an await-a-notification tool that only resumes an
|
|
4203
|
+
# INTERACTIVE session would silently kill it mid-run.
|
|
4204
|
+
#
|
|
4205
|
+
# A scratch/tmp path outside the worktree (e.g. `/tmp/...`) stays
|
|
4206
|
+
# writable for a reviewer that wants to stage its findings before
|
|
4207
|
+
# the final `coord report-result --body-file` call — Bash retains
|
|
4208
|
+
# ordinary shell redirection (`cat >`, heredocs) even with no Write
|
|
4209
|
+
# tool grant; only the Edit/Write *tools* (which target the
|
|
4210
|
+
# worktree/repo) and the mutating git/gh commands below are blocked.
|
|
4211
|
+
from coord.review import REVIEWER_SYSTEM_PROMPT # noqa: PLC0415
|
|
4212
|
+
system_prompt = spec.system_prompt if spec.system_prompt else REVIEWER_SYSTEM_PROMPT
|
|
4213
|
+
system_prompt += build_deny_prompt(REVIEW_DENY_COMMANDS)
|
|
4214
|
+
allowed_tools = "Read,Bash"
|
|
4114
4215
|
else:
|
|
4115
4216
|
system_prompt = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
|
|
4116
4217
|
system_prompt += build_deny_prompt(spec.deny_commands)
|
|
4218
|
+
# #2462: --bare drops CLAUDE.md auto-discovery for this catch-all
|
|
4219
|
+
# branch too — it covers "work", "fix", "conflict-fix", and
|
|
4220
|
+
# "test-author", every one of which edits code and needs the
|
|
4221
|
+
# target repo's conventions. See _claude_md_system_prompt_suffix.
|
|
4222
|
+
system_prompt += _claude_md_system_prompt_suffix(spec.repo_path)
|
|
4117
4223
|
# #2169: `Monitor` is the sanctioned way to poll a backgrounded
|
|
4118
4224
|
# long-running command in bounded steps (see the ONE-SHOT section of
|
|
4119
4225
|
# WORKER_SYSTEM_PROMPT) instead of a foreground loop that blocks
|
|
@@ -4141,8 +4247,8 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
|
|
|
4141
4247
|
"--system-prompt", system_prompt,
|
|
4142
4248
|
"--allowedTools", allowed_tools,
|
|
4143
4249
|
"--permission-mode", "acceptEdits",
|
|
4144
|
-
# #1445: a worker must not inherit whatever project/local
|
|
4145
|
-
# settings the host's checkout happens to carry — e.g. a
|
|
4250
|
+
# #1445 / #2462: a worker must not inherit whatever project/local
|
|
4251
|
+
# Claude Code settings the host's checkout happens to carry — e.g. a
|
|
4146
4252
|
# `.claude/settings.local.json` deny rule the OPERATOR added for
|
|
4147
4253
|
# their own interactive session in that checkout (meant to protect
|
|
4148
4254
|
# ~/.coord/coordinator.yml etc from an interactive session, but
|
|
@@ -4153,17 +4259,48 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
|
|
|
4153
4259
|
# has no .claude/ dir of its own (it's untracked/gitignored there),
|
|
4154
4260
|
# so a deny rule that never touches the worktree's working directory
|
|
4155
4261
|
# still blocked Edit/Write calls from a `claude -p` session cwd'd
|
|
4156
|
-
# into that worktree.
|
|
4157
|
-
#
|
|
4158
|
-
#
|
|
4159
|
-
#
|
|
4160
|
-
#
|
|
4161
|
-
#
|
|
4162
|
-
#
|
|
4163
|
-
#
|
|
4164
|
-
#
|
|
4165
|
-
#
|
|
4166
|
-
|
|
4262
|
+
# into that worktree.
|
|
4263
|
+
#
|
|
4264
|
+
# `--setting-sources user` (the original #1445 fix) only closed this
|
|
4265
|
+
# for *settings.json* — a checkout's `.claude/hooks/` and `.mcp.json`
|
|
4266
|
+
# are governed separately and kept loading regardless, so a
|
|
4267
|
+
# never-trusted repo's hooks would still run and its MCP servers
|
|
4268
|
+
# would still connect in every worker session, because a `-p`
|
|
4269
|
+
# session shows neither the workspace-trust dialog nor the
|
|
4270
|
+
# per-server MCP approval prompt that would normally gate that (see
|
|
4271
|
+
# code.claude.com/docs/en/headless.md). `--bare` is the flag that
|
|
4272
|
+
# closes all three sources (settings, hooks, .mcp.json) at once, plus
|
|
4273
|
+
# LSP/plugin-sync/CLAUDE.md auto-discovery — none of which a headless
|
|
4274
|
+
# worker should be picking up *ambiently* from the target repo's own
|
|
4275
|
+
# checkout either. A worker's permission profile is fully controlled
|
|
4276
|
+
# by the --allowedTools / --disallowedTools / --permission-mode
|
|
4277
|
+
# flags in this function (and its own hard-coded system prompt); it
|
|
4278
|
+
# needs no MCP servers (no spec.type grants the `Agent` tool, so
|
|
4279
|
+
# `--agents` is unneeded too) and no `--settings`.
|
|
4280
|
+
#
|
|
4281
|
+
# CLAUDE.md is the one exception worth calling out: losing its
|
|
4282
|
+
# *ambient* auto-discovery does NOT mean a work-shaped leg loses the
|
|
4283
|
+
# content. `_claude_md_system_prompt_suffix` (see the branches
|
|
4284
|
+
# above: "plan", "mock-author", and this catch-all "else") reads it
|
|
4285
|
+
# explicitly off *spec.repo_path* and embeds it into --system-prompt
|
|
4286
|
+
# instead — the same defensive pattern coord.review.read_repo_claude_md
|
|
4287
|
+
# already used for review legs (#2462).
|
|
4288
|
+
#
|
|
4289
|
+
# AUTH CAVEAT: per Claude Code's own docs, `--bare` "never reads
|
|
4290
|
+
# OAuth credentials or the system keychain" — only `ANTHROPIC_API_KEY`
|
|
4291
|
+
# (env, inherited via `_worker_subprocess_env`) or an `apiKeyHelper`
|
|
4292
|
+
# supplied via `--settings` authenticate. This is a behavior change
|
|
4293
|
+
# for any fleet machine whose worker auth today comes from
|
|
4294
|
+
# `claude setup-token` / `CLAUDE_CODE_OAUTH_TOKEN` or an interactive
|
|
4295
|
+
# `claude login` (the pattern docs/CONTROL_CENTER.md §14 documents for
|
|
4296
|
+
# per-person subscription auth) rather than an API key — such a
|
|
4297
|
+
# machine must switch to `ANTHROPIC_API_KEY` (or an `apiKeyHelper`)
|
|
4298
|
+
# for headless dispatch to keep authenticating. This is the
|
|
4299
|
+
# headless/`claude -p` path only — the human-attended interactive PTY
|
|
4300
|
+
# path (coord.providers.claude_pty.ClaudePtyProvider) intentionally
|
|
4301
|
+
# keeps the default sources, so OAuth/keychain login still works for
|
|
4302
|
+
# a session an operator is attached to and watching.
|
|
4303
|
+
"--bare",
|
|
4167
4304
|
]
|
|
4168
4305
|
if spec.model:
|
|
4169
4306
|
argv.extend(["--model", spec.model])
|
|
@@ -4177,6 +4314,14 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
|
|
|
4177
4314
|
for pattern in _base_checkout_write_guard_tools(spec.repo_path):
|
|
4178
4315
|
if pattern not in disallowed_tools:
|
|
4179
4316
|
disallowed_tools.append(pattern)
|
|
4317
|
+
# #2461: review gets its mutating-command deny list wired into
|
|
4318
|
+
# --disallowedTools too, not just the soft system-prompt reminder from
|
|
4319
|
+
# build_deny_prompt above — the CLI enforces this one even if the model
|
|
4320
|
+
# decides to ignore its own prompt.
|
|
4321
|
+
if spec.type == "review":
|
|
4322
|
+
for pattern in REVIEW_DENY_COMMANDS:
|
|
4323
|
+
if pattern not in disallowed_tools:
|
|
4324
|
+
disallowed_tools.append(pattern)
|
|
4180
4325
|
if disallowed_tools:
|
|
4181
4326
|
argv.extend(["--disallowedTools", ",".join(disallowed_tools)])
|
|
4182
4327
|
# #315: when resuming a prior chat session, load the prior conversation so
|
|
@@ -147,8 +147,8 @@ def _dispatch_review_of(
|
|
|
147
147
|
|
|
148
148
|
from coord.review import ( # noqa: PLC0415
|
|
149
149
|
REVIEWER_SYSTEM_PROMPT,
|
|
150
|
-
_read_repo_claude_md,
|
|
151
150
|
build_review_briefing,
|
|
151
|
+
read_repo_claude_md,
|
|
152
152
|
)
|
|
153
153
|
from coord.models import Assignment # noqa: PLC0415
|
|
154
154
|
from coord.state import ( # noqa: PLC0415
|
|
@@ -194,7 +194,7 @@ def _dispatch_review_of(
|
|
|
194
194
|
# have the reviewer read ./CLAUDE.md in the remote checkout it sits
|
|
195
195
|
# in (its actual rules, not the coordinator's possibly-divergent copy).
|
|
196
196
|
claude_md = (
|
|
197
|
-
|
|
197
|
+
read_repo_claude_md(Path(review_repo_path)) if _is_local else ""
|
|
198
198
|
)
|
|
199
199
|
|
|
200
200
|
# #612: embed the merge-base (three-dot) diff so the reviewer has
|
|
@@ -113,13 +113,16 @@ class ClaudeProvider(Provider):
|
|
|
113
113
|
NEW_ISSUE_CHAT_DENY_COMMANDS,
|
|
114
114
|
NEW_ISSUE_CHAT_SYSTEM_PROMPT,
|
|
115
115
|
REFINEMENT_SYSTEM_PROMPT,
|
|
116
|
+
REVIEW_DENY_COMMANDS,
|
|
116
117
|
TEST_CHAT_SYSTEM_PROMPT,
|
|
117
118
|
WORKER_PLAN_PROMPT,
|
|
118
119
|
WORKER_SYSTEM_PROMPT,
|
|
119
120
|
_base_checkout_write_guard_tools,
|
|
121
|
+
_claude_md_system_prompt_suffix,
|
|
120
122
|
_sealed_write_guard_tools,
|
|
121
123
|
build_deny_prompt,
|
|
122
124
|
)
|
|
125
|
+
from coord.review import REVIEWER_SYSTEM_PROMPT # noqa: PLC0415
|
|
123
126
|
from coord.smoke import SMOKE_SYSTEM_PROMPT # noqa: PLC0415
|
|
124
127
|
|
|
125
128
|
binary = self._binary if self._binary is not None else DEFAULT_WORKER_BINARY
|
|
@@ -140,6 +143,10 @@ class ClaudeProvider(Provider):
|
|
|
140
143
|
if system_prompt is None or allowed_tools is None:
|
|
141
144
|
if spec.type == "plan":
|
|
142
145
|
_sp = spec.system_prompt if spec.system_prompt else WORKER_PLAN_PROMPT
|
|
146
|
+
# #2462: keep in sync with default_worker_command's identical
|
|
147
|
+
# branch — `--bare` below drops CLAUDE.md auto-discovery, so a
|
|
148
|
+
# plan leg needs the target repo's conventions embedded here.
|
|
149
|
+
_sp += _claude_md_system_prompt_suffix(spec.repo_path)
|
|
143
150
|
_at = "Read,Bash"
|
|
144
151
|
elif spec.type == "refinement":
|
|
145
152
|
_sp = spec.system_prompt if spec.system_prompt else REFINEMENT_SYSTEM_PROMPT
|
|
@@ -170,6 +177,9 @@ class ClaudeProvider(Provider):
|
|
|
170
177
|
elif spec.type == "mock-author":
|
|
171
178
|
_sp = spec.system_prompt if spec.system_prompt else MOCK_AUTHOR_SYSTEM_PROMPT
|
|
172
179
|
_sp += build_deny_prompt(MOCK_AUTHOR_DENY_COMMANDS)
|
|
180
|
+
# #2462: keep in sync with default_worker_command — `--bare`
|
|
181
|
+
# drops CLAUDE.md auto-discovery.
|
|
182
|
+
_sp += _claude_md_system_prompt_suffix(spec.repo_path)
|
|
173
183
|
_at = "Read,Edit,Write,Bash"
|
|
174
184
|
elif spec.type == "smoke":
|
|
175
185
|
# #2301: keep in sync with default_worker_command's identical
|
|
@@ -180,9 +190,26 @@ class ClaudeProvider(Provider):
|
|
|
180
190
|
_sp = spec.system_prompt if spec.system_prompt else SMOKE_SYSTEM_PROMPT
|
|
181
191
|
_sp += build_deny_prompt(spec.deny_commands)
|
|
182
192
|
_at = "Read,Bash"
|
|
193
|
+
elif spec.type == "review":
|
|
194
|
+
# #2461: keep in sync with default_worker_command's identical
|
|
195
|
+
# branch — a reviewer reads the diff and reports a verdict,
|
|
196
|
+
# it edits and pushes nothing, so Read,Bash only (no
|
|
197
|
+
# Edit/Write, no Monitor — same one-shot-session reasoning as
|
|
198
|
+
# the `smoke` branch above). See REVIEW_DENY_COMMANDS for why
|
|
199
|
+
# its mutating-command deny list also lands in
|
|
200
|
+
# --disallowedTools below, not just this prompt text.
|
|
201
|
+
_sp = spec.system_prompt if spec.system_prompt else REVIEWER_SYSTEM_PROMPT
|
|
202
|
+
_sp += build_deny_prompt(REVIEW_DENY_COMMANDS)
|
|
203
|
+
_at = "Read,Bash"
|
|
183
204
|
else:
|
|
184
205
|
_sp = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
|
|
185
206
|
_sp += build_deny_prompt(spec.deny_commands)
|
|
207
|
+
# #2462: keep in sync with default_worker_command's identical
|
|
208
|
+
# catch-all branch — it covers "work", "fix", "conflict-fix"
|
|
209
|
+
# and "test-author", every one of which edits code and needs
|
|
210
|
+
# the target repo's CLAUDE.md conventions, which `--bare`
|
|
211
|
+
# below stops Claude Code from auto-discovering.
|
|
212
|
+
_sp += _claude_md_system_prompt_suffix(spec.repo_path)
|
|
186
213
|
# #2169: keep in sync with default_worker_command's identical
|
|
187
214
|
# branch — Monitor is the sanctioned bounded-poll tool for a
|
|
188
215
|
# backgrounded long-running command. #2301: this grant is for
|
|
@@ -202,10 +229,11 @@ class ClaudeProvider(Provider):
|
|
|
202
229
|
"--system-prompt", system_prompt,
|
|
203
230
|
"--allowedTools", allowed_tools,
|
|
204
231
|
"--permission-mode", permission_mode,
|
|
205
|
-
# #1445: see the matching comment in
|
|
206
|
-
# workers must not inherit the host
|
|
207
|
-
# Claude Code settings
|
|
208
|
-
|
|
232
|
+
# #1445 / #2462: see the matching comment in
|
|
233
|
+
# default_worker_command — workers must not inherit the host
|
|
234
|
+
# checkout's project/local Claude Code settings, hooks, or
|
|
235
|
+
# .mcp.json MCP servers. `--bare` closes all of those at once.
|
|
236
|
+
"--bare",
|
|
209
237
|
]
|
|
210
238
|
if effective_model:
|
|
211
239
|
argv.extend(["--model", effective_model])
|
|
@@ -217,6 +245,12 @@ class ClaudeProvider(Provider):
|
|
|
217
245
|
for pattern in _base_checkout_write_guard_tools(spec.repo_path):
|
|
218
246
|
if pattern not in disallowed_tools:
|
|
219
247
|
disallowed_tools.append(pattern)
|
|
248
|
+
# #2461: same CLI-enforced hard block as default_worker_command —
|
|
249
|
+
# see REVIEW_DENY_COMMANDS.
|
|
250
|
+
if spec.type == "review":
|
|
251
|
+
for pattern in REVIEW_DENY_COMMANDS:
|
|
252
|
+
if pattern not in disallowed_tools:
|
|
253
|
+
disallowed_tools.append(pattern)
|
|
220
254
|
if disallowed_tools:
|
|
221
255
|
argv.extend(["--disallowedTools", ",".join(disallowed_tools)])
|
|
222
256
|
if spec.resume_session_id:
|
|
@@ -433,6 +433,7 @@ class ClaudePtyProvider(Provider):
|
|
|
433
433
|
NEW_ISSUE_CHAT_DENY_COMMANDS,
|
|
434
434
|
NEW_ISSUE_CHAT_SYSTEM_PROMPT,
|
|
435
435
|
REFINEMENT_SYSTEM_PROMPT,
|
|
436
|
+
REVIEW_DENY_COMMANDS,
|
|
436
437
|
TEST_CHAT_SYSTEM_PROMPT,
|
|
437
438
|
WORKER_PLAN_PROMPT,
|
|
438
439
|
WORKER_SYSTEM_PROMPT,
|
|
@@ -497,6 +498,16 @@ class ClaudePtyProvider(Provider):
|
|
|
497
498
|
_sp = spec.system_prompt if spec.system_prompt else SMOKE_SYSTEM_PROMPT
|
|
498
499
|
_sp += build_deny_prompt(spec.deny_commands)
|
|
499
500
|
_at = "Read,Bash"
|
|
501
|
+
elif spec.type == "review":
|
|
502
|
+
# #2461: keep in sync with default_worker_command's identical
|
|
503
|
+
# branch — a reviewer reads the diff and reports a verdict,
|
|
504
|
+
# it edits and pushes nothing, so Read,Bash only (no
|
|
505
|
+
# Edit/Write, no Monitor — same one-shot-session reasoning as
|
|
506
|
+
# the `smoke` branch above).
|
|
507
|
+
from coord.review import REVIEWER_SYSTEM_PROMPT # noqa: PLC0415
|
|
508
|
+
_sp = spec.system_prompt if spec.system_prompt else REVIEWER_SYSTEM_PROMPT
|
|
509
|
+
_sp += build_deny_prompt(REVIEW_DENY_COMMANDS)
|
|
510
|
+
_at = "Read,Bash"
|
|
500
511
|
else:
|
|
501
512
|
_sp = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
|
|
502
513
|
_sp += build_deny_prompt(spec.deny_commands)
|
|
@@ -1213,7 +1213,7 @@ def _ranked_reviewer_candidates(
|
|
|
1213
1213
|
|
|
1214
1214
|
# ── Briefing construction ───────────────────────────────────────────────────
|
|
1215
1215
|
|
|
1216
|
-
def
|
|
1216
|
+
def read_repo_claude_md(repo_path: Path) -> str | None:
|
|
1217
1217
|
"""Return the contents of CLAUDE.md at the repo root, or None.
|
|
1218
1218
|
|
|
1219
1219
|
The coordinator runs on the machine that dispatches; the reviewer runs on
|
|
@@ -1221,6 +1221,12 @@ def _read_repo_claude_md(repo_path: Path) -> str | None:
|
|
|
1221
1221
|
here so the briefing is self-contained — if the reviewer's checkout is
|
|
1222
1222
|
behind, the worker's diff still gets reviewed against the rules the
|
|
1223
1223
|
coordinator thought were current.
|
|
1224
|
+
|
|
1225
|
+
Public (no leading underscore) because #2462 reuses it from
|
|
1226
|
+
:mod:`coord.agent` — since worker dispatch switched to ``--bare``,
|
|
1227
|
+
Claude Code's own CLAUDE.md auto-discovery no longer runs for
|
|
1228
|
+
work-shaped legs, so ``default_worker_command`` embeds this the same
|
|
1229
|
+
defensive way the review briefing already did.
|
|
1224
1230
|
"""
|
|
1225
1231
|
candidate = repo_path / "CLAUDE.md"
|
|
1226
1232
|
if not candidate.exists():
|
|
@@ -1883,7 +1889,7 @@ def dispatch_review(
|
|
|
1883
1889
|
*,
|
|
1884
1890
|
http_client: httpx.Client | None = None,
|
|
1885
1891
|
pr_lookup=_find_or_open_pr,
|
|
1886
|
-
claude_md_reader=
|
|
1892
|
+
claude_md_reader=read_repo_claude_md,
|
|
1887
1893
|
issue_body_fetcher=None,
|
|
1888
1894
|
now: float | None = None,
|
|
1889
1895
|
terminal_cache: dict | None = None,
|