code-coordinator 0.5.247__tar.gz → 0.5.248__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.247 → code_coordinator-0.5.248}/PKG-INFO +1 -1
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/agent.py +5 -1
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/github_ops.py +111 -5
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/providers/claude_pty.py +31 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/review.py +8 -36
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_review.py +84 -1
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/.gitignore +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/CLAUDE.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/GOAL.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/LICENSE +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/MANIFEST.in +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/README.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/__init__.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/audit.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/block_log.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/board_service.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/brain.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/claim.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/cli.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/client.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/comments.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/config.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/dao.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/db.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/deps.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/drive.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/events.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/filelock.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/freshness.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/gates.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/goal.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/context.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/models.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/render.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/health/units.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/hooks.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/interactive.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/models.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/network.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/notify.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/openapi.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/parentage.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/plans.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/progress.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/release_window.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/reports.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/self_health.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/smoke.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/split_work.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/sql.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/state.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/test_author.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/test_report.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/usage.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/install-agent.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/pyproject.toml +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/setup.cfg +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/__init__.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-67/contract.md +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-67/manifest.yml +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/conftest.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_config.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_db.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_events.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_init.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_models.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_network.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_session.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_split.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_state.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/approved.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/types/generated.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.247 → code_coordinator-0.5.248}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -4918,7 +4918,11 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
|
|
|
4918
4918
|
# (coord.providers.claude_pty.ClaudePtyProvider) intentionally keeps
|
|
4919
4919
|
# the default sources so an operator's own `coord init`-configured
|
|
4920
4920
|
# convenience allow-list still applies to a session they're
|
|
4921
|
-
# attached to and watching.
|
|
4921
|
+
# attached to and watching. #2821: that tradeoff also means the PTY
|
|
4922
|
+
# path pays for CLAUDE.md via ambient auto-discovery (~7.7k tok)
|
|
4923
|
+
# instead of the explicit `_claude_md_system_prompt_suffix` embed
|
|
4924
|
+
# below (~5.2k tok) — a deliberately accepted, documented cost; see
|
|
4925
|
+
# the argv comment in ClaudePtyProvider.build_command.
|
|
4922
4926
|
#
|
|
4923
4927
|
# #2462 tried `--bare` here (closes settings + hooks + .mcp.json +
|
|
4924
4928
|
# CLAUDE.md auto-discovery at once, vs. this flag's settings.json-only
|
|
@@ -2313,17 +2313,123 @@ def rerun_workflow_run_failed(repo: str, run_id: str) -> bool:
|
|
|
2313
2313
|
return True
|
|
2314
2314
|
|
|
2315
2315
|
|
|
2316
|
+
def diff_file_paths(diff_text: str) -> list[str]:
|
|
2317
|
+
"""Return every file path touched by *diff_text*, deduped, order-preserving.
|
|
2318
|
+
|
|
2319
|
+
Scans unified-diff file-header lines (``diff --git a/X b/Y``, ``---
|
|
2320
|
+
a/X``, ``+++ b/X``) — cheap, dependency-free (#944 sealing v1) ahead of a
|
|
2321
|
+
real diff parser. Lives here (rather than :mod:`coord.review`, its
|
|
2322
|
+
original home) because :func:`truncate_diff_text` needs it too (#2819)
|
|
2323
|
+
and ``coord.review`` imports :mod:`coord.github_ops`, not the reverse —
|
|
2324
|
+
:mod:`coord.review` re-uses this copy for its own sealed-path /
|
|
2325
|
+
missing-test-coverage checks instead of keeping a second one.
|
|
2326
|
+
"""
|
|
2327
|
+
paths: list[str] = []
|
|
2328
|
+
seen: set[str] = set()
|
|
2329
|
+
for line in diff_text.splitlines():
|
|
2330
|
+
candidates: list[str] = []
|
|
2331
|
+
if line.startswith("diff --git "):
|
|
2332
|
+
for part in line.split()[1:]:
|
|
2333
|
+
if part.startswith("a/") or part.startswith("b/"):
|
|
2334
|
+
candidates.append(part[2:])
|
|
2335
|
+
elif line.startswith("--- a/"):
|
|
2336
|
+
candidates.append(line[len("--- a/"):])
|
|
2337
|
+
elif line.startswith("+++ b/"):
|
|
2338
|
+
candidates.append(line[len("+++ b/"):])
|
|
2339
|
+
for c in candidates:
|
|
2340
|
+
if c not in seen:
|
|
2341
|
+
seen.add(c)
|
|
2342
|
+
paths.append(c)
|
|
2343
|
+
return paths
|
|
2344
|
+
|
|
2345
|
+
|
|
2346
|
+
_DIFF_FILE_BOUNDARY_RE = re.compile(r"^diff --git ", re.MULTILINE)
|
|
2347
|
+
|
|
2348
|
+
|
|
2316
2349
|
def truncate_diff_text(diff: str, max_chars: int = 60000) -> str:
|
|
2317
|
-
"""Truncate *diff* to *max_chars
|
|
2350
|
+
"""Truncate *diff* to at most *max_chars*, cutting on a ``diff --git``
|
|
2351
|
+
file boundary rather than mid-hunk, and naming the files that got cut.
|
|
2318
2352
|
|
|
2319
2353
|
Factored out of :func:`pr_diff` (#1475) so callers that need the full,
|
|
2320
2354
|
untruncated diff for content hashing (``compute_patch_id``) can still
|
|
2321
2355
|
apply the same display truncation to a *separate* copy shown to a human
|
|
2322
2356
|
reviewer or embedded in a briefing, without a second ``gh`` fetch.
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2357
|
+
|
|
2358
|
+
#2819: the original version was a blind character slice — handed the
|
|
2359
|
+
reviewer a diff that stopped mid-hunk, with no indication anything was
|
|
2360
|
+
even cut, on any PR whose diff crossed *max_chars* (61% of a review
|
|
2361
|
+
briefing at the flat 60k default). That's a silent coverage hole in a
|
|
2362
|
+
gate that's supposed to be adversarial. This version instead:
|
|
2363
|
+
|
|
2364
|
+
1. Cuts at the last ``diff --git`` boundary that fits within
|
|
2365
|
+
*max_chars* — every file kept in the output is complete, never a
|
|
2366
|
+
partial hunk.
|
|
2367
|
+
2. Appends the paths of every file that got dropped, so the reviewer
|
|
2368
|
+
knows exactly what it did not see and can inspect those files
|
|
2369
|
+
directly (e.g. ``git show``) instead of silently missing them.
|
|
2370
|
+
|
|
2371
|
+
Falls back to the old raw character slice — no boundary preference — when
|
|
2372
|
+
no file boundary fits within *max_chars* at all (a single file's own
|
|
2373
|
+
diff already exceeds the cap, or *diff* isn't a unified diff to begin
|
|
2374
|
+
with). Cutting nothing at that point would just emit an empty string,
|
|
2375
|
+
which is worse than the old behavior. #2819 follow-up: that fallback
|
|
2376
|
+
slice lands *inside* the first file's own diff (the loop below only
|
|
2377
|
+
leaves ``cut_at`` unset when the second file's boundary already exceeds
|
|
2378
|
+
*max_chars*, i.e. before any second file exists in the output) — so
|
|
2379
|
+
that file's header rides into ``head`` looking complete while its body
|
|
2380
|
+
is silently cut mid-hunk. Left unflagged, a reviewer who checks the
|
|
2381
|
+
omitted-files list and finds their file *not* on it would reasonably
|
|
2382
|
+
(and wrongly) conclude it was shown in full. That file is now always
|
|
2383
|
+
called out as truncated, separately from the fully-omitted list.
|
|
2384
|
+
"""
|
|
2385
|
+
if len(diff) <= max_chars:
|
|
2386
|
+
return diff
|
|
2387
|
+
|
|
2388
|
+
boundaries = [m.start() for m in _DIFF_FILE_BOUNDARY_RE.finditer(diff)]
|
|
2389
|
+
cut_at: int | None = None
|
|
2390
|
+
for b in boundaries:
|
|
2391
|
+
if b == 0:
|
|
2392
|
+
continue # the first file's own boundary — cutting here keeps nothing
|
|
2393
|
+
if b > max_chars:
|
|
2394
|
+
break
|
|
2395
|
+
cut_at = b
|
|
2396
|
+
|
|
2397
|
+
if cut_at is None:
|
|
2398
|
+
head = diff[:max_chars]
|
|
2399
|
+
# The cut point falls inside the first file's own diff (see the
|
|
2400
|
+
# docstring above) — flag that file as incomplete rather than
|
|
2401
|
+
# letting it silently pass as "not omitted, so fully shown".
|
|
2402
|
+
all_paths = diff_file_paths(diff)
|
|
2403
|
+
incomplete = all_paths[0] if all_paths else None
|
|
2404
|
+
else:
|
|
2405
|
+
head = diff[:cut_at].rstrip("\n")
|
|
2406
|
+
incomplete = None
|
|
2407
|
+
|
|
2408
|
+
dropped = [p for p in diff_file_paths(diff) if p not in diff_file_paths(head)]
|
|
2409
|
+
|
|
2410
|
+
note = f"\n... [diff truncated at {max_chars} chars"
|
|
2411
|
+
tallies = []
|
|
2412
|
+
if incomplete:
|
|
2413
|
+
tallies.append(f"1 file cut off mid-diff ({incomplete})")
|
|
2414
|
+
if dropped:
|
|
2415
|
+
tallies.append(f"{len(dropped)} file(s) omitted")
|
|
2416
|
+
if tallies:
|
|
2417
|
+
note += "; " + "; ".join(tallies)
|
|
2418
|
+
note += "] ..."
|
|
2419
|
+
if incomplete:
|
|
2420
|
+
note += (
|
|
2421
|
+
f"\nFile truncated mid-diff — the shown portion of `{incomplete}` "
|
|
2422
|
+
"is INCOMPLETE, not fully reviewed above; inspect the rest "
|
|
2423
|
+
f"directly (e.g. `git show <head-sha> -- {incomplete}`) before "
|
|
2424
|
+
"approving."
|
|
2425
|
+
)
|
|
2426
|
+
if dropped:
|
|
2427
|
+
note += (
|
|
2428
|
+
"\nFiles omitted by truncation — NOT reviewed above; inspect "
|
|
2429
|
+
"these directly (e.g. `git show <head-sha> -- <path>`) before "
|
|
2430
|
+
"approving:\n" + "\n".join(f" - {p}" for p in dropped)
|
|
2431
|
+
)
|
|
2432
|
+
return head + note
|
|
2327
2433
|
|
|
2328
2434
|
|
|
2329
2435
|
def pr_diff(repo_github: str, pr_number: int, *, max_chars: int | None = 60000) -> str | None:
|
|
@@ -582,6 +582,37 @@ class ClaudePtyProvider(Provider):
|
|
|
582
582
|
# --allowedTools / --permission-mode are still passed as a safety
|
|
583
583
|
# hedge even though enforcement is unverified in the PTY path
|
|
584
584
|
# (capabilities().enforces_deny_list == False).
|
|
585
|
+
#
|
|
586
|
+
# #2821: also deliberately NO `--setting-sources user` here, and no
|
|
587
|
+
# `_claude_md_system_prompt_suffix` embed — both of which
|
|
588
|
+
# `default_worker_command` (coord/agent.py) DOES use for the `-p`
|
|
589
|
+
# path. That's not an oversight; it was checked and rejected:
|
|
590
|
+
#
|
|
591
|
+
# 1. `--setting-sources user` would exclude the LOCAL settings
|
|
592
|
+
# scope, which is exactly where `coord init` (coord/commands/
|
|
593
|
+
# setup.py) writes the operator's own `.claude/settings.local.json`
|
|
594
|
+
# convenience allow-list (`Bash(coord *)` etc) for the repo
|
|
595
|
+
# they're interactively attached to. Restricting sources here
|
|
596
|
+
# would silently drop that allow-list for a session the operator
|
|
597
|
+
# is watching and expects to behave like their normal `claude`
|
|
598
|
+
# session — see coord/agent.py:~4919's identical tradeoff
|
|
599
|
+
# written up for the `-p` path (which deliberately keeps the
|
|
600
|
+
# default sources reasoning in reverse: it EXCLUDES project/local
|
|
601
|
+
# because a worker must NOT inherit host-local settings).
|
|
602
|
+
# 2. `--bare` would close the CLAUDE.md-ambient-discovery gap
|
|
603
|
+
# without touching settings sources, but it also unconditionally
|
|
604
|
+
# disables OAuth/keychain reads — this fleet authenticates via
|
|
605
|
+
# `claude login`/OAuth, not `ANTHROPIC_API_KEY` (see #2462's
|
|
606
|
+
# emergency revert in coord/agent.py for the fleet-wide outage
|
|
607
|
+
# that caused). Not usable here either.
|
|
608
|
+
#
|
|
609
|
+
# Net effect, measured (#2821): this path pays ~7.7k ambient-
|
|
610
|
+
# discovery tokens for CLAUDE.md vs. ~5.2k for the `-p` path's
|
|
611
|
+
# explicit embed — a known, accepted cost of preserving the
|
|
612
|
+
# operator's own interactive settings on a human-attended session,
|
|
613
|
+
# not an accident. Revisit if Claude Code ever exposes a way to
|
|
614
|
+
# suppress CLAUDE.md auto-discovery independent of settings-sources
|
|
615
|
+
# and `--bare`'s OAuth side effect.
|
|
585
616
|
argv: list[str] = [
|
|
586
617
|
binary,
|
|
587
618
|
"--system-prompt", system_prompt,
|
|
@@ -1242,35 +1242,6 @@ def read_repo_claude_md(repo_path: Path) -> str | None:
|
|
|
1242
1242
|
return None
|
|
1243
1243
|
|
|
1244
1244
|
|
|
1245
|
-
def _diff_file_paths(diff_text: str) -> list[str]:
|
|
1246
|
-
"""Return every file path touched by *diff_text*, deduped, order-preserving.
|
|
1247
|
-
|
|
1248
|
-
Scans unified-diff file-header lines (``diff --git a/X b/Y``, ``---
|
|
1249
|
-
a/X``, ``+++ b/X``) — cheap, dependency-free (#944 sealing v1) ahead of a
|
|
1250
|
-
real diff parser. Shared by :func:`_diff_touched_sealed_paths` (which
|
|
1251
|
-
sealed prefixes) and :func:`_diff_paths_outside_sealed` (which actual
|
|
1252
|
-
paths, #1175 — the test-author/mock-author inverse tamper check needs
|
|
1253
|
-
the offending files, not just which prefixes matched).
|
|
1254
|
-
"""
|
|
1255
|
-
paths: list[str] = []
|
|
1256
|
-
seen: set[str] = set()
|
|
1257
|
-
for line in diff_text.splitlines():
|
|
1258
|
-
candidates: list[str] = []
|
|
1259
|
-
if line.startswith("diff --git "):
|
|
1260
|
-
for part in line.split()[1:]:
|
|
1261
|
-
if part.startswith("a/") or part.startswith("b/"):
|
|
1262
|
-
candidates.append(part[2:])
|
|
1263
|
-
elif line.startswith("--- a/"):
|
|
1264
|
-
candidates.append(line[len("--- a/"):])
|
|
1265
|
-
elif line.startswith("+++ b/"):
|
|
1266
|
-
candidates.append(line[len("+++ b/"):])
|
|
1267
|
-
for c in candidates:
|
|
1268
|
-
if c not in seen:
|
|
1269
|
-
seen.add(c)
|
|
1270
|
-
paths.append(c)
|
|
1271
|
-
return paths
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
1245
|
def _path_is_sealed(path: str, sealed: str) -> bool:
|
|
1275
1246
|
"""Does *path* fall under the sealed entry *sealed*?
|
|
1276
1247
|
|
|
@@ -1294,7 +1265,7 @@ def _diff_touched_sealed_paths(diff_text: str, sealed_paths: list[str]) -> list[
|
|
|
1294
1265
|
easy to test.
|
|
1295
1266
|
"""
|
|
1296
1267
|
touched: set[str] = set()
|
|
1297
|
-
for c in
|
|
1268
|
+
for c in github_ops.diff_file_paths(diff_text):
|
|
1298
1269
|
for sealed in sealed_paths:
|
|
1299
1270
|
if _path_is_sealed(c, sealed):
|
|
1300
1271
|
touched.add(sealed)
|
|
@@ -1312,7 +1283,7 @@ def _diff_paths_outside_sealed(diff_text: str, sealed_paths: list[str]) -> list[
|
|
|
1312
1283
|
the ones inside it.
|
|
1313
1284
|
"""
|
|
1314
1285
|
return sorted(
|
|
1315
|
-
p for p in
|
|
1286
|
+
p for p in github_ops.diff_file_paths(diff_text)
|
|
1316
1287
|
if not any(_path_is_sealed(p, sealed) for sealed in sealed_paths)
|
|
1317
1288
|
)
|
|
1318
1289
|
|
|
@@ -1328,7 +1299,7 @@ def _diff_paths_outside_sealed(diff_text: str, sealed_paths: list[str]) -> list[
|
|
|
1328
1299
|
#
|
|
1329
1300
|
# This is intentionally a coarse, path-only heuristic — no diff semantics, no
|
|
1330
1301
|
# ``claude -p`` call, no LLM judgment, just the same cheap file-path
|
|
1331
|
-
# inspection ``
|
|
1302
|
+
# inspection ``github_ops.diff_file_paths``/``_diff_touched_sealed_paths`` already do
|
|
1332
1303
|
# above. It is a NUDGE, not a gate: callers only ever log it, never act on it
|
|
1333
1304
|
# to change dispatch behavior, so a false positive costs nothing (the
|
|
1334
1305
|
# reviewer remains the sole authority and, per CLAUDE.md, already honors a
|
|
@@ -1395,9 +1366,10 @@ def diff_missing_test_coverage(diff_text: str | None) -> bool:
|
|
|
1395
1366
|
"""#2192: True when *diff_text* touches user-visible source and zero
|
|
1396
1367
|
test files, the pattern behind 18.5% of #2132's blocking reviews.
|
|
1397
1368
|
|
|
1398
|
-
Pure, free, deterministic path inspection — reuses
|
|
1399
|
-
Returns False (never flags)
|
|
1400
|
-
|
|
1369
|
+
Pure, free, deterministic path inspection — reuses
|
|
1370
|
+
:func:`coord.github_ops.diff_file_paths`. Returns False (never flags)
|
|
1371
|
+
when the diff is empty, touches no recognized source file
|
|
1372
|
+
(docs-only/internal-tooling-only diffs — CLAUDE.md's
|
|
1401
1373
|
internal-only exemption), or already includes a test-file change.
|
|
1402
1374
|
|
|
1403
1375
|
The CLAUDE.md exemption is honored only at the granularity a path-only
|
|
@@ -1413,7 +1385,7 @@ def diff_missing_test_coverage(diff_text: str | None) -> bool:
|
|
|
1413
1385
|
"""
|
|
1414
1386
|
if not diff_text or not diff_text.strip():
|
|
1415
1387
|
return False
|
|
1416
|
-
paths =
|
|
1388
|
+
paths = github_ops.diff_file_paths(diff_text)
|
|
1417
1389
|
if not any(_is_user_visible_path(p) for p in paths):
|
|
1418
1390
|
return False
|
|
1419
1391
|
return not any(_is_test_path(p) for p in paths)
|
|
@@ -1062,6 +1062,84 @@ def test_truncate_diff_text_matches_pr_diff_truncation(monkeypatch) -> None:
|
|
|
1062
1062
|
assert via_pr_diff == via_helper
|
|
1063
1063
|
|
|
1064
1064
|
|
|
1065
|
+
def _diff_for(path: str, n_lines: int) -> str:
|
|
1066
|
+
lines = [f"diff --git a/{path} b/{path}", f"--- a/{path}", f"+++ b/{path}"]
|
|
1067
|
+
lines += [f"+line {i}" for i in range(n_lines)]
|
|
1068
|
+
return "\n".join(lines) + "\n"
|
|
1069
|
+
|
|
1070
|
+
|
|
1071
|
+
def test_truncate_diff_text_cuts_on_file_boundary_not_mid_hunk() -> None:
|
|
1072
|
+
"""#2819: truncation must never hand the reviewer a partial hunk — the
|
|
1073
|
+
cut lands on the last `diff --git` boundary that fits, so every file
|
|
1074
|
+
kept in the output is complete."""
|
|
1075
|
+
from coord import github_ops
|
|
1076
|
+
|
|
1077
|
+
diff = _diff_for("a.py", 20) + _diff_for("b.py", 20) + _diff_for("c.py", 2000)
|
|
1078
|
+
out = github_ops.truncate_diff_text(diff, max_chars=1000)
|
|
1079
|
+
|
|
1080
|
+
# Both kept files are present in full (their own last line included);
|
|
1081
|
+
# nothing stops mid-hunk.
|
|
1082
|
+
assert "+line 19\ndiff --git a/b.py" in out
|
|
1083
|
+
assert "+line 19\n... [diff truncated" in out
|
|
1084
|
+
assert "diff --git a/c.py" not in out
|
|
1085
|
+
|
|
1086
|
+
|
|
1087
|
+
def test_truncate_diff_text_lists_omitted_files() -> None:
|
|
1088
|
+
"""#2819: a reviewer handed a truncated diff must be told which files
|
|
1089
|
+
it did not see, so it can inspect them directly instead of silently
|
|
1090
|
+
missing them."""
|
|
1091
|
+
from coord import github_ops
|
|
1092
|
+
|
|
1093
|
+
diff = _diff_for("a.py", 20) + _diff_for("b.py", 20) + _diff_for("c.py", 2000)
|
|
1094
|
+
out = github_ops.truncate_diff_text(diff, max_chars=1000)
|
|
1095
|
+
|
|
1096
|
+
assert "1 file(s) omitted" in out
|
|
1097
|
+
assert "Files omitted by truncation" in out
|
|
1098
|
+
assert " - c.py" in out
|
|
1099
|
+
# Only the dropped file is listed — the kept files aren't flagged as omitted.
|
|
1100
|
+
assert " - a.py" not in out
|
|
1101
|
+
assert " - b.py" not in out
|
|
1102
|
+
|
|
1103
|
+
|
|
1104
|
+
def test_truncate_diff_text_falls_back_to_char_slice_when_no_boundary_fits() -> None:
|
|
1105
|
+
"""#2819: when even the first file's own diff exceeds max_chars (or the
|
|
1106
|
+
input has no `diff --git` boundaries at all), fall back to the old raw
|
|
1107
|
+
character slice rather than emitting an empty string."""
|
|
1108
|
+
from coord import github_ops
|
|
1109
|
+
|
|
1110
|
+
diff = _diff_for("huge.py", 5000)
|
|
1111
|
+
out = github_ops.truncate_diff_text(diff, max_chars=1000)
|
|
1112
|
+
|
|
1113
|
+
assert len(out) > 1000 # head (1000 chars) + trailing note
|
|
1114
|
+
assert out.startswith(diff[:1000])
|
|
1115
|
+
assert "omitted" not in out # no boundary found -> no file list to report
|
|
1116
|
+
|
|
1117
|
+
|
|
1118
|
+
def test_truncate_diff_text_flags_huge_first_file_as_incomplete() -> None:
|
|
1119
|
+
"""#2819 follow-up: when the *first* file's own diff already exceeds
|
|
1120
|
+
max_chars, the char-slice fallback used to let it ride into `head`
|
|
1121
|
+
looking complete (its header made it in, so it never appeared on the
|
|
1122
|
+
"omitted" list) while its body was silently cut mid-hunk. A reviewer
|
|
1123
|
+
trusting the omitted-files list would wrongly conclude the huge first
|
|
1124
|
+
file was shown in full. It must now be called out explicitly, distinct
|
|
1125
|
+
from files that were dropped entirely."""
|
|
1126
|
+
from coord import github_ops
|
|
1127
|
+
|
|
1128
|
+
diff = _diff_for("huge.py", 5000) + _diff_for("small.py", 5)
|
|
1129
|
+
out = github_ops.truncate_diff_text(diff, max_chars=1000)
|
|
1130
|
+
|
|
1131
|
+
# The huge first file is cut off mid-hunk, not omitted entirely — it
|
|
1132
|
+
# must be flagged as incomplete rather than silently passing review.
|
|
1133
|
+
assert "huge.py" in out
|
|
1134
|
+
assert "cut off mid-diff" in out
|
|
1135
|
+
assert "INCOMPLETE" in out
|
|
1136
|
+
# The trailing file is genuinely never shown at all — still on the
|
|
1137
|
+
# separate "omitted" list.
|
|
1138
|
+
assert "1 file(s) omitted" in out
|
|
1139
|
+
assert "Files omitted by truncation" in out
|
|
1140
|
+
assert " - small.py" in out
|
|
1141
|
+
|
|
1142
|
+
|
|
1065
1143
|
def test_pr_diff_returns_none_on_gh_error(monkeypatch) -> None:
|
|
1066
1144
|
"""#612: pr_diff is best-effort — a gh failure yields None, not a raise."""
|
|
1067
1145
|
from coord import github_ops
|
|
@@ -1928,7 +2006,12 @@ def test_dispatch_review_patch_id_hashes_untruncated_diff(
|
|
|
1928
2006
|
# display-truncated copy, so a huge diff still can't blow the briefing.
|
|
1929
2007
|
assert client.calls, "expected a dispatch POST"
|
|
1930
2008
|
_, payload = client.calls[0]
|
|
1931
|
-
|
|
2009
|
+
# #2819 follow-up: f.py is the *only* file and it alone exceeds the cap,
|
|
2010
|
+
# so the char-slice fallback fires and the note now also flags f.py
|
|
2011
|
+
# itself as cut off mid-diff (not just "truncated at N chars") — the
|
|
2012
|
+
# exact fix this test's own issue asked for.
|
|
2013
|
+
assert "[diff truncated at 60000 chars" in payload["briefing"]
|
|
2014
|
+
assert "cut off mid-diff (f.py)" in payload["briefing"]
|
|
1932
2015
|
assert len(payload["briefing"]) < len(big_diff)
|
|
1933
2016
|
|
|
1934
2017
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_coordinator-0.5.247 → code_coordinator-0.5.248}/code_coordinator.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.247 → code_coordinator-0.5.248}/code_coordinator.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.247 → code_coordinator-0.5.248}/code_coordinator.egg-info/requires.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.247 → code_coordinator-0.5.248}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
File without changes
|
{code_coordinator-0.5.247 → code_coordinator-0.5.248}/code_coordinator.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|