code-coordinator 0.5.240__tar.gz → 0.5.241__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.240 → code_coordinator-0.5.241}/PKG-INFO +1 -1
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/drive_queue.py +147 -6
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/milestone.py +12 -2
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/overlap_predict.py +51 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_drive_queue.py +99 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_overlap_predict.py +50 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/.gitignore +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/CLAUDE.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/GOAL.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/LICENSE +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/MANIFEST.in +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/README.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/__init__.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/agent.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/audit.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/block_log.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/board_service.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/brain.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/claim.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/cli.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/client.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/comments.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/config.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/dao.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/db.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/deps.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/drive.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/events.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/filelock.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/freshness.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/gates.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/goal.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/context.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/models.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/render.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/health/units.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/hooks.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/interactive.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/models.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/network.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/notify.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/openapi.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/parentage.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/plans.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/progress.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/release_window.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/reports.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/review.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/self_health.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/smoke.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/split_work.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/state.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/test_author.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/test_report.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/usage.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/install-agent.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/pyproject.toml +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/setup.cfg +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/__init__.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-67/contract.md +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-67/manifest.yml +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/conftest.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_config.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_db.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_events.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_init.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_models.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_network.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_review.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_session.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_split.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_state.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/approved.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.240 → code_coordinator-0.5.241}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -91,7 +91,9 @@ from coord.overlap_predict import (
|
|
|
91
91
|
classify_outcome,
|
|
92
92
|
collect_candidate_files,
|
|
93
93
|
declared_footprints,
|
|
94
|
+
fanout_warnings,
|
|
94
95
|
inflight_footprints,
|
|
96
|
+
parse_declared_files,
|
|
95
97
|
predict_overlap,
|
|
96
98
|
predictions_from_audit,
|
|
97
99
|
tally,
|
|
@@ -296,9 +298,12 @@ def drive_queue_add(
|
|
|
296
298
|
# yields an empty prediction and this add behaves exactly as it did before
|
|
297
299
|
# the feature existed.
|
|
298
300
|
prediction = Prediction()
|
|
301
|
+
staleness_note = ""
|
|
299
302
|
auto_after: list[str] = []
|
|
300
303
|
if not no_predict_overlap:
|
|
301
|
-
prediction = _predict_overlap(
|
|
304
|
+
prediction, staleness_note = _predict_overlap(
|
|
305
|
+
config_path, repo, issue, existing_entries
|
|
306
|
+
)
|
|
302
307
|
auto_after = _applicable_auto_after(
|
|
303
308
|
existing_entries, repo, issue, after, prediction
|
|
304
309
|
)
|
|
@@ -326,7 +331,17 @@ def drive_queue_add(
|
|
|
326
331
|
gate += " (fleet-wide — nothing anywhere launches)"
|
|
327
332
|
if resume_when:
|
|
328
333
|
gate += f" (auto-resume when `{resume_when}` passes)"
|
|
329
|
-
|
|
334
|
+
# #2601: the reason (if an edge was actually applied), any high-fanout
|
|
335
|
+
# directory-token warning (independent of whether the edge stuck — a
|
|
336
|
+
# cycle-dropped edge's token is just as worth narrowing), and a staleness
|
|
337
|
+
# note when the candidate's own body could only be read from cache.
|
|
338
|
+
overlap_notes: list[str] = []
|
|
339
|
+
if auto_after:
|
|
340
|
+
overlap_notes.append(prediction.reason)
|
|
341
|
+
overlap_notes.extend(fanout_warnings(prediction))
|
|
342
|
+
if staleness_note:
|
|
343
|
+
overlap_notes.append(staleness_note)
|
|
344
|
+
overlap_note = ("\n" + "\n".join(overlap_notes)) if overlap_notes else ""
|
|
330
345
|
click.echo(
|
|
331
346
|
f"queued {entry_key(repo, issue)}{pinned}{suffix}{gate}"
|
|
332
347
|
f"{scope_downgrade_warning}{overlap_note}"
|
|
@@ -372,6 +387,121 @@ def _issue_body(repo_name: str, issue_number: int) -> str:
|
|
|
372
387
|
return ""
|
|
373
388
|
|
|
374
389
|
|
|
390
|
+
def _live_issue_body(repo_github: str, issue_number: int) -> str | None:
|
|
391
|
+
"""A live ``gh issue view`` body for the ONE entry actually being enqueued.
|
|
392
|
+
|
|
393
|
+
#2601: `_issue_body` above is a cache read by design — cheap, and correct
|
|
394
|
+
for the overwhelmingly common case (no ``## Files`` block at all) and for
|
|
395
|
+
every OTHER issue's declaration this module consults for a footprint. But
|
|
396
|
+
that same design let a `gh issue edit` made directly against the
|
|
397
|
+
tracker — bypassing `coord.state.edit_issue_content`'s cache mirror — go
|
|
398
|
+
unnoticed: the predictor kept citing the removed line forever, because
|
|
399
|
+
nothing had ever told the cache the edit happened.
|
|
400
|
+
|
|
401
|
+
Called ONLY for the candidate (see `_candidate_body`), and only when its
|
|
402
|
+
cached body already parses to a declaration — never on the common
|
|
403
|
+
empty-declaration path, so this does not reintroduce the per-``add``
|
|
404
|
+
GitHub round-trip the module was built to avoid.
|
|
405
|
+
|
|
406
|
+
Fails open like every other fetch here: ``None`` on any error, and the
|
|
407
|
+
caller falls back to the cached body.
|
|
408
|
+
"""
|
|
409
|
+
if not repo_github:
|
|
410
|
+
return None
|
|
411
|
+
try:
|
|
412
|
+
from coord import github_ops # noqa: PLC0415
|
|
413
|
+
|
|
414
|
+
data = github_ops.get_issue(repo_github, int(issue_number))
|
|
415
|
+
except Exception: # noqa: BLE001 — see docstring
|
|
416
|
+
return None
|
|
417
|
+
if not data:
|
|
418
|
+
return None
|
|
419
|
+
return str(data.get("body") or "")
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
def _mirror_issue_body(repo_name: str, issue_number: int, body: str) -> None:
|
|
423
|
+
"""Write a freshly live-fetched body back into the local cache (#2601).
|
|
424
|
+
|
|
425
|
+
Best-effort, mirroring `_edit_issue_content_local`'s own cache write: the
|
|
426
|
+
live fetch above is authoritative, this only makes the freshness outlive
|
|
427
|
+
the one predict call it was fetched for — a later `add` for a DIFFERENT
|
|
428
|
+
issue that compares declaration-to-declaration against this one, or
|
|
429
|
+
`overlap-report`, should see the same answer without a second round-trip.
|
|
430
|
+
"""
|
|
431
|
+
try:
|
|
432
|
+
from coord.db import get_connection # noqa: PLC0415
|
|
433
|
+
|
|
434
|
+
conn = get_connection()
|
|
435
|
+
conn.execute(
|
|
436
|
+
"UPDATE issues SET body = ?, synced_at = ? "
|
|
437
|
+
"WHERE repo_name = ? AND number = ?",
|
|
438
|
+
(body, time.time(), repo_name, int(issue_number)),
|
|
439
|
+
)
|
|
440
|
+
conn.commit()
|
|
441
|
+
except Exception: # noqa: BLE001 — the cache write is advisory
|
|
442
|
+
pass
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
def _cached_body_age_note(repo_name: str, issue_number: int) -> str:
|
|
446
|
+
"""#2601 point 1's fallback: when a live re-read wasn't possible, say how
|
|
447
|
+
old the cached body actually is, so a stale prediction is at least
|
|
448
|
+
visible instead of silently trusted.
|
|
449
|
+
"""
|
|
450
|
+
row = None
|
|
451
|
+
try:
|
|
452
|
+
from coord.db import get_connection # noqa: PLC0415
|
|
453
|
+
|
|
454
|
+
row = get_connection().execute(
|
|
455
|
+
"SELECT synced_at FROM issues WHERE repo_name = ? AND number = ?",
|
|
456
|
+
(repo_name, int(issue_number)),
|
|
457
|
+
).fetchone()
|
|
458
|
+
except Exception: # noqa: BLE001 — an unreadable age is still worth flagging
|
|
459
|
+
pass
|
|
460
|
+
synced_at = row["synced_at"] if row is not None else None
|
|
461
|
+
if not synced_at:
|
|
462
|
+
return (
|
|
463
|
+
"note: predicted from a cached issue body of unknown age "
|
|
464
|
+
"(live refresh failed) — the declaration may be stale"
|
|
465
|
+
)
|
|
466
|
+
age = _age_str(max(0.0, time.time() - float(synced_at)))
|
|
467
|
+
return (
|
|
468
|
+
f"note: predicted from a cached issue body synced {age} ago "
|
|
469
|
+
"(live refresh failed) — the declaration may be stale"
|
|
470
|
+
)
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
def _candidate_body(
|
|
474
|
+
repo_name: str, issue_number: int, repo_github: str,
|
|
475
|
+
) -> tuple[str, str]:
|
|
476
|
+
"""This entry's OWN body — refreshed live when staleness could matter (#2601).
|
|
477
|
+
|
|
478
|
+
The natural correction to a bad prediction is editing the issue's ``##
|
|
479
|
+
Files`` block and re-adding. That did nothing (#2601) because the
|
|
480
|
+
predictor always read `_issue_body`'s cache, which a direct
|
|
481
|
+
``gh issue edit`` never invalidates.
|
|
482
|
+
|
|
483
|
+
So the candidate gets one extra check the rest of the module does not:
|
|
484
|
+
if its cached body already parses to a declaration, re-read it live and
|
|
485
|
+
mirror the answer back into the cache. A body with NO cached declaration
|
|
486
|
+
skips the live round-trip entirely — there is nothing to have gone
|
|
487
|
+
stale, and a declaration ADDED since the last sync just falls back to
|
|
488
|
+
today's "no prediction" (rule 3), exactly as an unreadable body would.
|
|
489
|
+
|
|
490
|
+
Returns ``(body, staleness_note)``: *body* is what prediction runs
|
|
491
|
+
against; *staleness_note* is non-empty only when a live re-read was
|
|
492
|
+
warranted but failed.
|
|
493
|
+
"""
|
|
494
|
+
cached = _issue_body(repo_name, issue_number)
|
|
495
|
+
if not parse_declared_files(cached):
|
|
496
|
+
return cached, ""
|
|
497
|
+
fresh = _live_issue_body(repo_github, issue_number)
|
|
498
|
+
if fresh is None:
|
|
499
|
+
return cached, _cached_body_age_note(repo_name, issue_number)
|
|
500
|
+
if fresh != cached:
|
|
501
|
+
_mirror_issue_body(repo_name, issue_number, fresh)
|
|
502
|
+
return fresh, ""
|
|
503
|
+
|
|
504
|
+
|
|
375
505
|
def _repo_coordinates(config_path: Path, repo: str) -> tuple[str, str] | None:
|
|
376
506
|
"""``(github slug, default branch)`` for *repo*, or ``None``."""
|
|
377
507
|
try:
|
|
@@ -387,27 +517,38 @@ def _repo_coordinates(config_path: Path, repo: str) -> tuple[str, str] | None:
|
|
|
387
517
|
|
|
388
518
|
def _predict_overlap(
|
|
389
519
|
config_path: Path, repo: str, issue: int, existing_entries: list[QueueEntry],
|
|
390
|
-
) -> Prediction:
|
|
520
|
+
) -> tuple[Prediction, str]:
|
|
391
521
|
"""Compare this issue's declared files against work already in flight.
|
|
392
522
|
|
|
393
523
|
Same-repo only: two repos' paths cannot collide, and comparing them would
|
|
394
524
|
manufacture overlaps out of a shared filename. In-flight branches are
|
|
395
525
|
checked first (ground truth); a queued entry with no branch yet is
|
|
396
526
|
compared declaration-to-declaration, and only when it has one.
|
|
527
|
+
|
|
528
|
+
Returns ``(prediction, staleness_note)`` — see `_candidate_body` for when
|
|
529
|
+
the note is non-empty. Every OTHER body this consults (an in-flight
|
|
530
|
+
branch's own declaration, an unrelated queued entry's) still comes from
|
|
531
|
+
the plain cache: re-reading fifteen bodies live on every `add` is exactly
|
|
532
|
+
the cost the module's docstring rejects, and #2601's own report is about
|
|
533
|
+
correcting THIS entry's declaration, not anyone else's.
|
|
397
534
|
"""
|
|
398
535
|
coordinates = _repo_coordinates(config_path, repo)
|
|
399
536
|
if coordinates is None:
|
|
400
|
-
return Prediction()
|
|
537
|
+
return Prediction(), ""
|
|
401
538
|
repo_github, base_branch = coordinates
|
|
402
539
|
|
|
540
|
+
candidate_body, staleness_note = _candidate_body(repo, issue, repo_github)
|
|
541
|
+
|
|
403
542
|
def body_fetcher(repo_name: str, number: int) -> str:
|
|
543
|
+
if repo_name == repo and number == issue:
|
|
544
|
+
return candidate_body
|
|
404
545
|
return _issue_body(repo_name, number)
|
|
405
546
|
|
|
406
547
|
candidate = collect_candidate_files(repo, issue, body_fetcher)
|
|
407
548
|
if not candidate:
|
|
408
549
|
# Rule 3: no prediction is a valid answer. Nothing is fetched, nothing
|
|
409
550
|
# is compared, and the add is byte-identical to the pre-#2247 one.
|
|
410
|
-
return Prediction()
|
|
551
|
+
return Prediction(), ""
|
|
411
552
|
|
|
412
553
|
key = entry_key(repo, issue)
|
|
413
554
|
footprints = inflight_footprints(
|
|
@@ -422,7 +563,7 @@ def _predict_overlap(
|
|
|
422
563
|
and e.state not in TERMINAL_QUEUE_STATES
|
|
423
564
|
]
|
|
424
565
|
footprints.extend(declared_footprints(queued, body_fetcher, exclude_keys=covered))
|
|
425
|
-
return predict_overlap(candidate, footprints, exclude_keys={key})
|
|
566
|
+
return predict_overlap(candidate, footprints, exclude_keys={key}), staleness_note
|
|
426
567
|
|
|
427
568
|
|
|
428
569
|
def _applicable_auto_after(
|
|
@@ -1127,6 +1127,7 @@ def milestone_dispatch_cmd(
|
|
|
1127
1127
|
_predict_overlap,
|
|
1128
1128
|
_record_overlap_prediction,
|
|
1129
1129
|
)
|
|
1130
|
+
from coord.overlap_predict import fanout_warnings # noqa: PLC0415
|
|
1130
1131
|
from coord.drive_queue import ( # noqa: PLC0415
|
|
1131
1132
|
QueueError,
|
|
1132
1133
|
entries_from_rows,
|
|
@@ -1150,7 +1151,7 @@ def milestone_dispatch_cmd(
|
|
|
1150
1151
|
click.echo(f" {key}: not queued: {exc}", err=True)
|
|
1151
1152
|
failures += 1
|
|
1152
1153
|
continue
|
|
1153
|
-
prediction = _predict_overlap(
|
|
1154
|
+
prediction, staleness_note = _predict_overlap(
|
|
1154
1155
|
config_path, repo_entry.name, qe.issue_number, existing
|
|
1155
1156
|
)
|
|
1156
1157
|
auto_after = _applicable_auto_after(
|
|
@@ -1163,7 +1164,16 @@ def milestone_dispatch_cmd(
|
|
|
1163
1164
|
repo_entry.name, qe.issue_number, prediction, auto_after
|
|
1164
1165
|
)
|
|
1165
1166
|
suffix = f" after {', '.join(after)}" if after else ""
|
|
1166
|
-
|
|
1167
|
+
# #2601: same notes `drive-queue add` surfaces — the applied reason,
|
|
1168
|
+
# any high-fanout directory-token warning, and a staleness note when
|
|
1169
|
+
# this entry's own body could only be read from cache.
|
|
1170
|
+
notes = []
|
|
1171
|
+
if auto_after:
|
|
1172
|
+
notes.append(prediction.reason)
|
|
1173
|
+
notes.extend(fanout_warnings(prediction))
|
|
1174
|
+
if staleness_note:
|
|
1175
|
+
notes.append(staleness_note)
|
|
1176
|
+
overlap_note = ("\n " + "\n ".join(notes)) if notes else ""
|
|
1167
1177
|
click.echo(f" queued {key}{suffix}{overlap_note}")
|
|
1168
1178
|
queued += 1
|
|
1169
1179
|
|
|
@@ -45,6 +45,16 @@ author's own declaration. The seam for it is
|
|
|
45
45
|
one up yet, because rule 3 says a missing prediction is fine and a *bad* one
|
|
46
46
|
is not. Ship the cheap, exact source first and let the recorded accuracy
|
|
47
47
|
(see :func:`classify_outcome`) justify adding a fuzzier one.
|
|
48
|
+
|
|
49
|
+
DELIBERATELY NOT IMPLEMENTED (#2601): a hardcoded exclusion list for
|
|
50
|
+
"universal" directory tokens (``tests/``, ``docs/``) that every issue touches.
|
|
51
|
+
It was considered — #2601 found that a single bare ``tests/`` declaration
|
|
52
|
+
chained one issue behind fourteen others that each named a specific,
|
|
53
|
+
disjoint file — but excluding it outright would make rule 1 lie: those
|
|
54
|
+
fourteen ARE what :func:`paths_overlap`'s directory rule says they are, a
|
|
55
|
+
match. The chosen fix is :func:`fanout_warnings`, which leaves the ORDER
|
|
56
|
+
alone and instead tells the author their token was too broad to carry much
|
|
57
|
+
signal, so they can narrow it on the next ``add``.
|
|
48
58
|
"""
|
|
49
59
|
|
|
50
60
|
from __future__ import annotations
|
|
@@ -345,6 +355,47 @@ def predict_overlap(
|
|
|
345
355
|
return Prediction(predicted_files=files, overlaps=tuple(overlaps))
|
|
346
356
|
|
|
347
357
|
|
|
358
|
+
# Above this many DISTINCT entries hit by one declared directory token, the
|
|
359
|
+
# match is far more likely a token that happens to be common across the whole
|
|
360
|
+
# repo (``tests/``, ``docs/``) than a deliberate "this covers one feature's
|
|
361
|
+
# tests" declaration. #2601's incident was 14 against a threshold this
|
|
362
|
+
# conservative; two or three files genuinely clustered under one directory is
|
|
363
|
+
# unremarkable and must not warn.
|
|
364
|
+
FANOUT_WARN_THRESHOLD = 3
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
def fanout_warnings(
|
|
368
|
+
prediction: Prediction, *, threshold: int = FANOUT_WARN_THRESHOLD,
|
|
369
|
+
) -> list[str]:
|
|
370
|
+
"""Declared directory tokens that matched implausibly many entries (#2601).
|
|
371
|
+
|
|
372
|
+
:func:`paths_overlap`'s directory rule — a trailing-slash declaration
|
|
373
|
+
covers everything beneath it — is deliberate: it is the one
|
|
374
|
+
generalisation an author can write down unambiguously. But a token that
|
|
375
|
+
is common across the whole repo (``tests/``, ``docs/``) satisfies that
|
|
376
|
+
rule while carrying almost no signal: #2601 watched one bare ``tests/``
|
|
377
|
+
declaration chain an issue behind fourteen others it never actually
|
|
378
|
+
conflicted with.
|
|
379
|
+
|
|
380
|
+
This does NOT change the ORDER — rule 1 ("order, never refuse") holds
|
|
381
|
+
regardless of fanout; every one of those fourteen edges is still applied.
|
|
382
|
+
It only surfaces the count, so an author can tell a token was too broad
|
|
383
|
+
and narrow it to a specific file on the next ``add``.
|
|
384
|
+
"""
|
|
385
|
+
counts: dict[str, int] = {}
|
|
386
|
+
for overlap in prediction.overlaps:
|
|
387
|
+
for path in overlap.files:
|
|
388
|
+
if path.endswith("/"):
|
|
389
|
+
counts[path] = counts.get(path, 0) + 1
|
|
390
|
+
return [
|
|
391
|
+
f"warning: `{path}` matched {count} entries — did you mean a "
|
|
392
|
+
"specific file? (#2247 orders against all of them regardless — this "
|
|
393
|
+
"changes nothing, it only flags the token)"
|
|
394
|
+
for path, count in sorted(counts.items())
|
|
395
|
+
if count > threshold
|
|
396
|
+
]
|
|
397
|
+
|
|
398
|
+
|
|
348
399
|
# ── gathering the two sides ──────────────────────────────────────────────────
|
|
349
400
|
|
|
350
401
|
# ``(repo_github, base, head) -> changed paths or None`` — same shape as
|
|
@@ -398,6 +398,105 @@ def test_an_inferred_edge_never_fails_an_add_it_would_cycle(cli, declare):
|
|
|
398
398
|
assert queued(306)["after_json"] == []
|
|
399
399
|
|
|
400
400
|
|
|
401
|
+
# ── #2601: fanout warning + fresh-body re-read ───────────────────────────────
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
def test_a_bare_directory_declaration_warns_about_high_fanout(cli, declare):
|
|
405
|
+
# `tests/` matches every one of these disjoint, precisely-declared files —
|
|
406
|
+
# a real match under #2247's directory rule (still ORDERED, never
|
|
407
|
+
# refused), but a signal-free one that deserves a warning, not silence.
|
|
408
|
+
for i, number in enumerate((401, 402, 403, 404)):
|
|
409
|
+
declare(number, f"tests/test_worker_{i}.py")
|
|
410
|
+
assert cli("add", REPO, str(number)).exit_code == 0
|
|
411
|
+
|
|
412
|
+
declare(405, "tests/")
|
|
413
|
+
result = cli("add", REPO, "405")
|
|
414
|
+
|
|
415
|
+
assert result.exit_code == 0, result.output
|
|
416
|
+
assert "warning:" in result.output
|
|
417
|
+
assert "`tests/`" in result.output
|
|
418
|
+
assert "4 entries" in result.output
|
|
419
|
+
# ORDER, never REFUSE — every one of the four is still applied.
|
|
420
|
+
assert len(queued(405)["after_json"]) == 4
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
def test_a_directory_declaration_under_the_fanout_threshold_does_not_warn(cli, declare):
|
|
424
|
+
declare(410, "tests/test_a.py")
|
|
425
|
+
declare(411, "tests/test_b.py")
|
|
426
|
+
assert cli("add", REPO, "410").exit_code == 0
|
|
427
|
+
assert cli("add", REPO, "411").exit_code == 0
|
|
428
|
+
|
|
429
|
+
declare(412, "tests/")
|
|
430
|
+
result = cli("add", REPO, "412")
|
|
431
|
+
|
|
432
|
+
assert result.exit_code == 0, result.output
|
|
433
|
+
assert "warning:" not in result.output
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
def test_editing_the_issue_live_narrows_a_stale_bare_directory_declaration(
|
|
437
|
+
cli, declare, monkeypatch,
|
|
438
|
+
):
|
|
439
|
+
# #2601: the cache still holds the old, bare `tests/` declaration — but
|
|
440
|
+
# the author has since edited the issue directly on the tracker (`gh
|
|
441
|
+
# issue edit`, which never mirrors into coord's cache) to a specific file
|
|
442
|
+
# that touches neither #510 nor #511. A re-`add` must predict from the
|
|
443
|
+
# LIVE body, not the stale cached one that would otherwise chain it
|
|
444
|
+
# behind both.
|
|
445
|
+
declare(510, "tests/test_a.py")
|
|
446
|
+
declare(511, "tests/test_b.py")
|
|
447
|
+
assert cli("add", REPO, "510").exit_code == 0
|
|
448
|
+
assert cli("add", REPO, "511").exit_code == 0
|
|
449
|
+
|
|
450
|
+
declare(512, "tests/")
|
|
451
|
+
monkeypatch.setattr(
|
|
452
|
+
"coord.github_ops.get_issue",
|
|
453
|
+
lambda repo, number: {"body": "## Files\n- `coord/only_mine.py`\n"},
|
|
454
|
+
)
|
|
455
|
+
|
|
456
|
+
result = cli("add", REPO, "512")
|
|
457
|
+
|
|
458
|
+
assert result.exit_code == 0, result.output
|
|
459
|
+
assert queued(512)["after_json"] == []
|
|
460
|
+
assert "predicted file overlap" not in result.output
|
|
461
|
+
assert "warning:" not in result.output
|
|
462
|
+
# The live body is mirrored into the cache, not just used for this call.
|
|
463
|
+
from coord.db import get_connection
|
|
464
|
+
|
|
465
|
+
row = get_connection().execute(
|
|
466
|
+
"SELECT body FROM issues WHERE repo_name = ? AND number = ?", (REPO, 512),
|
|
467
|
+
).fetchone()
|
|
468
|
+
assert "only_mine.py" in row["body"]
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
def test_a_live_refresh_failure_falls_back_to_cache_with_a_staleness_note(
|
|
472
|
+
cli, declare, monkeypatch,
|
|
473
|
+
):
|
|
474
|
+
declare(520, "coord/only_mine.py")
|
|
475
|
+
monkeypatch.setattr(
|
|
476
|
+
"coord.github_ops.get_issue",
|
|
477
|
+
lambda repo, number: (_ for _ in ()).throw(RuntimeError("gh unreachable")),
|
|
478
|
+
)
|
|
479
|
+
|
|
480
|
+
result = cli("add", REPO, "520")
|
|
481
|
+
|
|
482
|
+
assert result.exit_code == 0, result.output
|
|
483
|
+
assert "note: predicted from a cached issue body" in result.output
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
def test_an_issue_with_no_cached_declaration_never_triggers_a_live_fetch(
|
|
487
|
+
cli, monkeypatch,
|
|
488
|
+
):
|
|
489
|
+
calls: list[int] = []
|
|
490
|
+
monkeypatch.setattr(
|
|
491
|
+
"coord.github_ops.get_issue",
|
|
492
|
+
lambda repo, number: calls.append(number) or {"body": ""},
|
|
493
|
+
)
|
|
494
|
+
# No `## Files` block at all — the common case #2247's docstring is
|
|
495
|
+
# built around; this must stay a pure cache read with zero GitHub calls.
|
|
496
|
+
assert cli("add", REPO, "521").exit_code == 0
|
|
497
|
+
assert calls == []
|
|
498
|
+
|
|
499
|
+
|
|
401
500
|
def test_overlap_report_scores_a_prediction_against_the_real_diffs(
|
|
402
501
|
cli, declare, seed, branch_diff,
|
|
403
502
|
):
|
|
@@ -11,6 +11,7 @@ from __future__ import annotations
|
|
|
11
11
|
from types import SimpleNamespace
|
|
12
12
|
|
|
13
13
|
from coord.overlap_predict import (
|
|
14
|
+
FANOUT_WARN_THRESHOLD,
|
|
14
15
|
OUTCOME_CONFIRMED,
|
|
15
16
|
OUTCOME_FALSE_POSITIVE,
|
|
16
17
|
OUTCOME_UNKNOWN,
|
|
@@ -22,6 +23,7 @@ from coord.overlap_predict import (
|
|
|
22
23
|
classify_outcome,
|
|
23
24
|
collect_candidate_files,
|
|
24
25
|
declared_footprints,
|
|
26
|
+
fanout_warnings,
|
|
25
27
|
inflight_assignments,
|
|
26
28
|
inflight_footprints,
|
|
27
29
|
parse_declared_files,
|
|
@@ -144,6 +146,54 @@ def test_excluded_keys_never_become_pre_reqs():
|
|
|
144
146
|
assert not prediction
|
|
145
147
|
|
|
146
148
|
|
|
149
|
+
# ── fanout_warnings (#2601) ──────────────────────────────────────────────────
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
def _footprints_declaring_specific_files(count: int) -> list[Footprint]:
|
|
153
|
+
return [
|
|
154
|
+
Footprint(
|
|
155
|
+
key=f"{REPO}#{100 + i}",
|
|
156
|
+
issue_number=100 + i,
|
|
157
|
+
files=(f"tests/test_{i}.py",),
|
|
158
|
+
source=SOURCE_DECLARED,
|
|
159
|
+
)
|
|
160
|
+
for i in range(count)
|
|
161
|
+
]
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
def test_a_bare_directory_declaration_matching_many_entries_warns():
|
|
165
|
+
footprints = _footprints_declaring_specific_files(FANOUT_WARN_THRESHOLD + 1)
|
|
166
|
+
prediction = predict_overlap(["tests/"], footprints)
|
|
167
|
+
assert len(prediction.overlaps) == FANOUT_WARN_THRESHOLD + 1
|
|
168
|
+
|
|
169
|
+
warnings = fanout_warnings(prediction)
|
|
170
|
+
assert len(warnings) == 1
|
|
171
|
+
assert "`tests/`" in warnings[0]
|
|
172
|
+
assert str(FANOUT_WARN_THRESHOLD + 1) in warnings[0]
|
|
173
|
+
# The order is NOT touched by the warning — every edge is still applied.
|
|
174
|
+
assert len(prediction.after_keys) == FANOUT_WARN_THRESHOLD + 1
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def test_a_directory_declaration_at_or_under_the_threshold_does_not_warn():
|
|
178
|
+
footprints = _footprints_declaring_specific_files(FANOUT_WARN_THRESHOLD)
|
|
179
|
+
prediction = predict_overlap(["tests/"], footprints)
|
|
180
|
+
assert fanout_warnings(prediction) == []
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def test_a_specific_file_match_never_warns_regardless_of_count():
|
|
184
|
+
footprints = [
|
|
185
|
+
Footprint(
|
|
186
|
+
key=f"{REPO}#{200 + i}",
|
|
187
|
+
issue_number=200 + i,
|
|
188
|
+
files=("coord/drive_queue.py",),
|
|
189
|
+
source=SOURCE_DECLARED,
|
|
190
|
+
)
|
|
191
|
+
for i in range(FANOUT_WARN_THRESHOLD + 5)
|
|
192
|
+
]
|
|
193
|
+
prediction = predict_overlap(["coord/drive_queue.py"], footprints)
|
|
194
|
+
assert fanout_warnings(prediction) == []
|
|
195
|
+
|
|
196
|
+
|
|
147
197
|
def test_audit_details_carry_both_sides_of_the_claim():
|
|
148
198
|
prediction = Prediction(
|
|
149
199
|
predicted_files=("coord/a.py",),
|
|
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.240 → code_coordinator-0.5.241}/code_coordinator.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.240 → code_coordinator-0.5.241}/code_coordinator.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.240 → code_coordinator-0.5.241}/code_coordinator.egg-info/requires.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.240 → code_coordinator-0.5.241}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
File without changes
|
{code_coordinator-0.5.240 → code_coordinator-0.5.241}/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
|