code-coordinator 0.5.255__tar.gz → 0.5.256__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.255 → code_coordinator-0.5.256}/PKG-INFO +1 -1
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/code_coordinator.egg-info/SOURCES.txt +1 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/code_coordinator.egg-info/scm_file_list.json +1 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/state.py +247 -150
- code_coordinator-0.5.256/tests/test_lock_contention_ratchet.py +208 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_state.py +248 -1
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/.gitignore +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/CLAUDE.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/GOAL.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/LICENSE +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/MANIFEST.in +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/README.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/__init__.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/agent.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/audit.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/block_log.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/board_service.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/brain.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/claim.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/cli.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/client.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/comments.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/config.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/dao.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/db.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/deps.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/drive.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/events.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/filelock.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/freshness.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/gates.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/goal.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/context.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/models.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/render.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/health/units.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/hooks.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/interactive.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/models.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/network.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/notify.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/openapi.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/parentage.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/plans.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/progress.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/release_window.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/reports.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/review.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/self_health.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/smoke.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/split_work.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/sql.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/test_author.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/test_report.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/usage.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/install-agent.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/pyproject.toml +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/setup.cfg +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/__init__.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-67/contract.md +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-67/manifest.yml +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/conftest.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_config.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_db.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_events.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_init.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_models.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_network.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_review.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_session.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_split.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/approved.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/types/generated.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.255 → code_coordinator-0.5.256}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -592,6 +592,7 @@ tests/test_interactive_worktree.py
|
|
|
592
592
|
tests/test_issue_store_seam.py
|
|
593
593
|
tests/test_liveness_auditor.py
|
|
594
594
|
tests/test_liveness_notify.py
|
|
595
|
+
tests/test_lock_contention_ratchet.py
|
|
595
596
|
tests/test_machine_pause.py
|
|
596
597
|
tests/test_merge_queue.py
|
|
597
598
|
tests/test_merge_verify.py
|
{code_coordinator-0.5.255 → code_coordinator-0.5.256}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -664,6 +664,7 @@
|
|
|
664
664
|
"tests/test_issue_store_seam.py",
|
|
665
665
|
"tests/test_liveness_auditor.py",
|
|
666
666
|
"tests/test_liveness_notify.py",
|
|
667
|
+
"tests/test_lock_contention_ratchet.py",
|
|
667
668
|
"tests/test_machine_pause.py",
|
|
668
669
|
"tests/test_merge_queue.py",
|
|
669
670
|
"tests/test_merge_verify.py",
|
|
@@ -4464,15 +4464,42 @@ def _update_issue_labels_local(
|
|
|
4464
4464
|
|
|
4465
4465
|
Returns ``True`` when a row was updated, ``False`` when no row matched (the
|
|
4466
4466
|
issue isn't in the local cache yet — it'll be inserted on the next sync; not
|
|
4467
|
-
an error here)
|
|
4467
|
+
an error here) **or** when a lock outlasted the retry budget (#2846, see
|
|
4468
|
+
below) — both self-heal on the next sync, so callers can't and shouldn't
|
|
4469
|
+
tell them apart. Does not touch ``state`` or ``synced_at`` — only ``labels``.
|
|
4470
|
+
|
|
4471
|
+
#2846: this is the seam both ``/issue-labels`` (this function called
|
|
4472
|
+
directly) and ``_apply_issue_labels_local``'s ``/issue-label`` (the GitHub
|
|
4473
|
+
write already landed there) route their cache-mirror write through — same
|
|
4474
|
+
shape as the sibling mirrors #2689 guarded. ``retry_on_locked`` absorbs
|
|
4475
|
+
transient contention (a concurrent writer elsewhere in the daemon, not a
|
|
4476
|
+
real bug); if it's still locked after the retry budget, log loudly and
|
|
4477
|
+
report "no row touched" rather than raising a 503 that would read as
|
|
4478
|
+
"nothing happened" when the label change already happened upstream.
|
|
4468
4479
|
"""
|
|
4469
|
-
|
|
4470
|
-
|
|
4471
|
-
|
|
4472
|
-
|
|
4473
|
-
|
|
4474
|
-
|
|
4475
|
-
|
|
4480
|
+
def _write() -> int:
|
|
4481
|
+
conn = get_connection()
|
|
4482
|
+
cursor = sql.execute(conn,
|
|
4483
|
+
"UPDATE issues SET labels = ? WHERE repo_name = ? AND number = ?",
|
|
4484
|
+
(json.dumps(sorted(set(labels))), repo_name, issue_number),
|
|
4485
|
+
)
|
|
4486
|
+
conn.commit()
|
|
4487
|
+
return cursor.rowcount
|
|
4488
|
+
|
|
4489
|
+
try:
|
|
4490
|
+
rowcount = retry_on_locked(_write)
|
|
4491
|
+
except sql.driver_errors() as exc: # #2784: was sqlite3.OperationalError only
|
|
4492
|
+
if not is_lock_contention_error(exc):
|
|
4493
|
+
raise
|
|
4494
|
+
_log.error(
|
|
4495
|
+
"#2846: cache mirror for issue %s#%s label update hit a lock "
|
|
4496
|
+
"that never cleared after retrying; the upstream label change "
|
|
4497
|
+
"already happened, so not failing the call — the cache row "
|
|
4498
|
+
"will catch up on the next sync: %s",
|
|
4499
|
+
repo_name, issue_number, exc,
|
|
4500
|
+
)
|
|
4501
|
+
return False
|
|
4502
|
+
return rowcount > 0
|
|
4476
4503
|
|
|
4477
4504
|
|
|
4478
4505
|
def get_cached_issue_labels(repo_name: str, issue_number: int) -> list[str] | None:
|
|
@@ -4558,24 +4585,12 @@ def _apply_issue_labels_local(
|
|
|
4558
4585
|
slug, issue_number, add=add, remove=remove
|
|
4559
4586
|
)
|
|
4560
4587
|
|
|
4561
|
-
# #2689:
|
|
4562
|
-
#
|
|
4563
|
-
#
|
|
4564
|
-
#
|
|
4565
|
-
|
|
4566
|
-
|
|
4567
|
-
lambda: _update_issue_labels_local(repo_name, issue_number, new_labels)
|
|
4568
|
-
)
|
|
4569
|
-
except sql.driver_errors() as exc: # #2784: was sqlite3.OperationalError only
|
|
4570
|
-
if not is_lock_contention_error(exc):
|
|
4571
|
-
raise
|
|
4572
|
-
_log.error(
|
|
4573
|
-
"#2689: cache mirror for relabeled issue %s#%s hit a lock that "
|
|
4574
|
-
"never cleared after retrying; the GitHub label change already "
|
|
4575
|
-
"succeeded, so not failing the call — the cache row will catch "
|
|
4576
|
-
"up on the next sync: %s",
|
|
4577
|
-
repo_name, issue_number, exc,
|
|
4578
|
-
)
|
|
4588
|
+
# #2689 / #2846: the GitHub label write above already landed and is
|
|
4589
|
+
# irreversible. The retry-then-log-and-swallow lock-contention guard now
|
|
4590
|
+
# lives inside `_update_issue_labels_local` itself (shared with the
|
|
4591
|
+
# `/issue-labels` plural endpoint's direct caller, which had the same gap
|
|
4592
|
+
# unguarded) — so this call site no longer needs its own wrapper.
|
|
4593
|
+
_update_issue_labels_local(repo_name, issue_number, new_labels)
|
|
4579
4594
|
return new_labels, changed
|
|
4580
4595
|
|
|
4581
4596
|
|
|
@@ -5459,9 +5474,21 @@ def _record_issue_comment_capture_local(
|
|
|
5459
5474
|
author: str | None = None,
|
|
5460
5475
|
created_at: float | None = None,
|
|
5461
5476
|
) -> None:
|
|
5477
|
+
"""Best-effort durable mirror of a just-posted comment (#873).
|
|
5478
|
+
|
|
5479
|
+
#2846: the GitHub comment this mirrors has already posted — irreversibly
|
|
5480
|
+
— by the time this runs (the daemon's own ``/issue-comment``, and every
|
|
5481
|
+
remote caller via ``github_ops._capture_comment_write``, only reach here
|
|
5482
|
+
after ``gh issue comment`` succeeded). Same shape as the sibling mirrors
|
|
5483
|
+
#2689 guarded: ``retry_on_locked`` absorbs transient contention, and if
|
|
5484
|
+
it's still locked after the retry budget, log loudly and return rather
|
|
5485
|
+
than raising — a 503 out of the ``/issue-comments`` capture route would
|
|
5486
|
+
read as "nothing happened" when the comment already exists on GitHub,
|
|
5487
|
+
and the missing mirror row self-heals on the next backfill sync
|
|
5488
|
+
(``sync_issue_comments``).
|
|
5489
|
+
"""
|
|
5462
5490
|
from coord.comments import parse_coord_comment_marker # noqa: PLC0415
|
|
5463
5491
|
|
|
5464
|
-
conn = get_connection()
|
|
5465
5492
|
now = time.time()
|
|
5466
5493
|
ts = created_at if created_at is not None else now
|
|
5467
5494
|
marker = parse_coord_comment_marker(body)
|
|
@@ -5470,51 +5497,67 @@ def _record_issue_comment_capture_local(
|
|
|
5470
5497
|
machine = marker["machine"] if marker else None
|
|
5471
5498
|
verdict = marker["verdict"] if marker else None
|
|
5472
5499
|
|
|
5473
|
-
|
|
5474
|
-
|
|
5475
|
-
|
|
5476
|
-
|
|
5477
|
-
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
|
|
5483
|
-
|
|
5484
|
-
|
|
5485
|
-
|
|
5486
|
-
|
|
5487
|
-
|
|
5488
|
-
|
|
5489
|
-
|
|
5490
|
-
|
|
5491
|
-
|
|
5492
|
-
|
|
5493
|
-
|
|
5494
|
-
|
|
5495
|
-
|
|
5496
|
-
|
|
5497
|
-
|
|
5498
|
-
|
|
5499
|
-
|
|
5500
|
-
|
|
5501
|
-
|
|
5502
|
-
|
|
5503
|
-
|
|
5504
|
-
|
|
5505
|
-
|
|
5506
|
-
|
|
5507
|
-
|
|
5508
|
-
|
|
5509
|
-
|
|
5510
|
-
|
|
5511
|
-
|
|
5512
|
-
|
|
5513
|
-
|
|
5514
|
-
|
|
5515
|
-
|
|
5500
|
+
def _write() -> None:
|
|
5501
|
+
conn = get_connection()
|
|
5502
|
+
if gh_comment_id is not None:
|
|
5503
|
+
# Idempotent upsert keyed on the natural key (the GitHub comment
|
|
5504
|
+
# id) — capture-at-write and the backfill sync converge on the
|
|
5505
|
+
# same row regardless of which wrote it first. COALESCE keeps a
|
|
5506
|
+
# real author captured-at-write time even if a later call (e.g.
|
|
5507
|
+
# a race with the backfill sync) supplies None.
|
|
5508
|
+
sql.execute(conn,
|
|
5509
|
+
"""
|
|
5510
|
+
INSERT INTO issue_comments (
|
|
5511
|
+
gh_comment_id, repo_name, issue_number, author, created_at,
|
|
5512
|
+
updated_at, body, coord_event, coord_assignment_id, machine, verdict
|
|
5513
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
5514
|
+
ON CONFLICT (gh_comment_id) DO UPDATE SET
|
|
5515
|
+
repo_name = excluded.repo_name,
|
|
5516
|
+
issue_number = excluded.issue_number,
|
|
5517
|
+
author = COALESCE(excluded.author, issue_comments.author),
|
|
5518
|
+
updated_at = excluded.updated_at,
|
|
5519
|
+
body = excluded.body,
|
|
5520
|
+
coord_event = excluded.coord_event,
|
|
5521
|
+
coord_assignment_id = excluded.coord_assignment_id,
|
|
5522
|
+
machine = excluded.machine,
|
|
5523
|
+
verdict = excluded.verdict
|
|
5524
|
+
""",
|
|
5525
|
+
(
|
|
5526
|
+
gh_comment_id, repo_name, issue_number, author, ts, ts, body,
|
|
5527
|
+
coord_event, coord_assignment_id, machine, verdict,
|
|
5528
|
+
),
|
|
5529
|
+
)
|
|
5530
|
+
else:
|
|
5531
|
+
# gh didn't hand back a parseable comment id (should be rare —
|
|
5532
|
+
# see github_ops.parse_comment_id) — durability still wins over
|
|
5533
|
+
# dedup here; the row just can't be upserted against by a later
|
|
5534
|
+
# sync.
|
|
5535
|
+
sql.execute(conn,
|
|
5536
|
+
"""
|
|
5537
|
+
INSERT INTO issue_comments (
|
|
5538
|
+
gh_comment_id, repo_name, issue_number, author, created_at,
|
|
5539
|
+
updated_at, body, coord_event, coord_assignment_id, machine, verdict
|
|
5540
|
+
) VALUES (NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
5541
|
+
""",
|
|
5542
|
+
(
|
|
5543
|
+
repo_name, issue_number, author, ts, ts, body,
|
|
5544
|
+
coord_event, coord_assignment_id, machine, verdict,
|
|
5545
|
+
),
|
|
5546
|
+
)
|
|
5547
|
+
conn.commit()
|
|
5548
|
+
|
|
5549
|
+
try:
|
|
5550
|
+
retry_on_locked(_write)
|
|
5551
|
+
except sql.driver_errors() as exc: # #2784: was sqlite3.OperationalError only
|
|
5552
|
+
if not is_lock_contention_error(exc):
|
|
5553
|
+
raise
|
|
5554
|
+
_log.error(
|
|
5555
|
+
"#2846: durable comment-capture mirror for issue %s#%s hit a "
|
|
5556
|
+
"lock that never cleared after retrying; the GitHub comment "
|
|
5557
|
+
"already posted, so not failing the call — the mirror row will "
|
|
5558
|
+
"catch up on the next backfill sync: %s",
|
|
5559
|
+
repo_name, issue_number, exc,
|
|
5516
5560
|
)
|
|
5517
|
-
conn.commit()
|
|
5518
5561
|
|
|
5519
5562
|
|
|
5520
5563
|
def sync_issue_comments(
|
|
@@ -6187,7 +6230,6 @@ def _enqueue_drive_queue_local(
|
|
|
6187
6230
|
max_fix_rounds: int | None = None,
|
|
6188
6231
|
no_acceptance: bool = False,
|
|
6189
6232
|
) -> int:
|
|
6190
|
-
conn = get_connection()
|
|
6191
6233
|
now = time.time()
|
|
6192
6234
|
after_json = json.dumps([str(a) for a in (after or [])])
|
|
6193
6235
|
# #1757: the gate's declared shape AND its starting run state, derived
|
|
@@ -6210,40 +6252,48 @@ def _enqueue_drive_queue_local(
|
|
|
6210
6252
|
if max_fix_rounds is not None and int(max_fix_rounds) < 1:
|
|
6211
6253
|
max_fix_rounds = None
|
|
6212
6254
|
no_acceptance_int = 1 if no_acceptance else 0
|
|
6213
|
-
|
|
6214
|
-
|
|
6215
|
-
|
|
6216
|
-
).
|
|
6217
|
-
|
|
6218
|
-
|
|
6219
|
-
|
|
6220
|
-
|
|
6221
|
-
|
|
6222
|
-
|
|
6223
|
-
|
|
6224
|
-
|
|
6225
|
-
|
|
6226
|
-
|
|
6227
|
-
|
|
6228
|
-
|
|
6229
|
-
|
|
6230
|
-
|
|
6231
|
-
|
|
6232
|
-
|
|
6233
|
-
|
|
6234
|
-
|
|
6235
|
-
|
|
6236
|
-
|
|
6237
|
-
|
|
6238
|
-
|
|
6239
|
-
max_fix_rounds,
|
|
6240
|
-
|
|
6241
|
-
|
|
6242
|
-
|
|
6243
|
-
|
|
6244
|
-
|
|
6245
|
-
|
|
6246
|
-
|
|
6255
|
+
|
|
6256
|
+
# #2846: wrapped in retry_on_locked like every other write in this
|
|
6257
|
+
# module — this upsert is idempotent by natural key (repo_name,
|
|
6258
|
+
# issue_number), so re-running the whole closure on a retry is safe. A
|
|
6259
|
+
# transient lock from a concurrent writer elsewhere in the daemon now
|
|
6260
|
+
# resolves instead of 503ing the caller.
|
|
6261
|
+
def _write() -> int:
|
|
6262
|
+
conn = get_connection()
|
|
6263
|
+
existing = sql.execute(conn,
|
|
6264
|
+
"SELECT id FROM drive_queue WHERE repo_name = ? AND issue_number = ?",
|
|
6265
|
+
(repo_name, issue_number),
|
|
6266
|
+
).fetchone()
|
|
6267
|
+
if existing is not None:
|
|
6268
|
+
# Already queued → update the operator-declared fields in place
|
|
6269
|
+
# rather than creating a second row for the same issue. Run
|
|
6270
|
+
# state (attempts / state / last_reason) is deliberately left
|
|
6271
|
+
# alone: that is the tick's column set, written via
|
|
6272
|
+
# `update_drive_queue_entry`. The gate is the exception,
|
|
6273
|
+
# because `hold_state`/`hold_probes` are derived from the
|
|
6274
|
+
# operator-declared `hold_after` and would otherwise survive
|
|
6275
|
+
# their own declaration being withdrawn. `max_fix_rounds`
|
|
6276
|
+
# (#2604) is fully replaced too, same as `machine`/`after` — see
|
|
6277
|
+
# the public `enqueue_drive_queue`'s docstring.
|
|
6278
|
+
sql.execute(conn,
|
|
6279
|
+
"UPDATE drive_queue SET machine = ?, after_json = ?, hold_after = ?, "
|
|
6280
|
+
"hold_reason = ?, resume_when = ?, hold_state = ?, hold_probes = 0, "
|
|
6281
|
+
"hold_scope = ?, max_fix_rounds = ?, no_acceptance = ? WHERE id = ?",
|
|
6282
|
+
(
|
|
6283
|
+
machine,
|
|
6284
|
+
after_json,
|
|
6285
|
+
hold_after_int,
|
|
6286
|
+
hold_reason,
|
|
6287
|
+
resume_when,
|
|
6288
|
+
hold_state,
|
|
6289
|
+
hold_scope,
|
|
6290
|
+
max_fix_rounds,
|
|
6291
|
+
no_acceptance_int,
|
|
6292
|
+
existing["id"],
|
|
6293
|
+
),
|
|
6294
|
+
)
|
|
6295
|
+
conn.commit()
|
|
6296
|
+
return int(existing["id"])
|
|
6247
6297
|
tail = sql.execute(conn,
|
|
6248
6298
|
"SELECT MAX(position) AS m FROM drive_queue"
|
|
6249
6299
|
).fetchone()
|
|
@@ -6273,9 +6323,33 @@ def _enqueue_drive_queue_local(
|
|
|
6273
6323
|
pk_column="id",
|
|
6274
6324
|
)
|
|
6275
6325
|
conn.commit()
|
|
6276
|
-
|
|
6326
|
+
return int(new_id)
|
|
6327
|
+
|
|
6328
|
+
entry_id = retry_on_locked(_write)
|
|
6277
6329
|
if position is not None:
|
|
6278
|
-
|
|
6330
|
+
# #2846: the row above is already durably committed (upsert by
|
|
6331
|
+
# natural key) by the time we get here — the enqueue itself
|
|
6332
|
+
# happened. The position move is a *separate* transaction
|
|
6333
|
+
# (`_move_drive_queue_entry_local`), and if its own retry budget is
|
|
6334
|
+
# exhausted by sustained contention, re-raising here would surface a
|
|
6335
|
+
# 503 for a call that in fact succeeded, same shape as the cache-mirror
|
|
6336
|
+
# sites above. Log loudly and still return `entry_id`: a position
|
|
6337
|
+
# that didn't land self-heals on the next explicit move/renumber
|
|
6338
|
+
# (e.g. queue drift correction, or another `add --position`), same
|
|
6339
|
+
# self-heal framing used there.
|
|
6340
|
+
try:
|
|
6341
|
+
_move_drive_queue_entry_local(repo_name, issue_number, position)
|
|
6342
|
+
except sql.driver_errors() as exc: # #2784: was sqlite3.OperationalError only
|
|
6343
|
+
if not is_lock_contention_error(exc):
|
|
6344
|
+
raise
|
|
6345
|
+
_log.error(
|
|
6346
|
+
"#2846: positioning drive-queue entry %s (repo=%s, issue=%s) "
|
|
6347
|
+
"at %s hit a lock that never cleared after retrying; the "
|
|
6348
|
+
"entry itself was already enqueued, so not failing the call "
|
|
6349
|
+
"— the position will catch up on the next explicit move or "
|
|
6350
|
+
"renumber: %s",
|
|
6351
|
+
entry_id, repo_name, issue_number, position, exc,
|
|
6352
|
+
)
|
|
6279
6353
|
return entry_id
|
|
6280
6354
|
|
|
6281
6355
|
|
|
@@ -6301,16 +6375,23 @@ def dequeue_drive_queue(repo_name: str, issue_number: int) -> bool:
|
|
|
6301
6375
|
|
|
6302
6376
|
|
|
6303
6377
|
def _dequeue_drive_queue_local(repo_name: str, issue_number: int) -> bool:
|
|
6304
|
-
|
|
6305
|
-
|
|
6306
|
-
|
|
6307
|
-
|
|
6308
|
-
)
|
|
6309
|
-
|
|
6310
|
-
|
|
6311
|
-
|
|
6312
|
-
|
|
6313
|
-
|
|
6378
|
+
# #2846: wrapped in retry_on_locked like every other write in this
|
|
6379
|
+
# module (DELETE-by-natural-key is idempotent, so extending the retry
|
|
6380
|
+
# budget here is pure upside — a transient lock from a concurrent writer
|
|
6381
|
+
# elsewhere in the daemon now resolves instead of 503ing the caller).
|
|
6382
|
+
def _write() -> bool:
|
|
6383
|
+
conn = get_connection()
|
|
6384
|
+
cur = sql.execute(conn,
|
|
6385
|
+
"DELETE FROM drive_queue WHERE repo_name = ? AND issue_number = ?",
|
|
6386
|
+
(repo_name, issue_number),
|
|
6387
|
+
)
|
|
6388
|
+
removed = cur.rowcount > 0
|
|
6389
|
+
if removed:
|
|
6390
|
+
_renumber_drive_queue(conn)
|
|
6391
|
+
conn.commit()
|
|
6392
|
+
return removed
|
|
6393
|
+
|
|
6394
|
+
return retry_on_locked(_write)
|
|
6314
6395
|
|
|
6315
6396
|
|
|
6316
6397
|
def update_drive_queue_entry(repo_name: str, issue_number: int, **fields) -> bool:
|
|
@@ -6365,15 +6446,23 @@ def _update_drive_queue_entry_local(
|
|
|
6365
6446
|
# daemon's `/drive-queue` update handler call this same function),
|
|
6366
6447
|
# so no caller can set one without the other.
|
|
6367
6448
|
fields = {**fields, "reason_at": time.time()}
|
|
6368
|
-
|
|
6369
|
-
|
|
6370
|
-
|
|
6371
|
-
|
|
6372
|
-
|
|
6373
|
-
|
|
6374
|
-
|
|
6375
|
-
|
|
6376
|
-
|
|
6449
|
+
|
|
6450
|
+
# #2846: wrapped in retry_on_locked like every other write in this
|
|
6451
|
+
# module (UPDATE-by-natural-key is idempotent, so extending the retry
|
|
6452
|
+
# budget here is pure upside — a transient lock from a concurrent writer
|
|
6453
|
+
# elsewhere in the daemon now resolves instead of 503ing the caller).
|
|
6454
|
+
def _write() -> bool:
|
|
6455
|
+
conn = get_connection()
|
|
6456
|
+
assignments = ", ".join(f"{name} = ?" for name in fields)
|
|
6457
|
+
cur = sql.execute(conn,
|
|
6458
|
+
f"UPDATE drive_queue SET {assignments} " # noqa: S608 — names whitelisted above
|
|
6459
|
+
"WHERE repo_name = ? AND issue_number = ?",
|
|
6460
|
+
(*fields.values(), repo_name, issue_number),
|
|
6461
|
+
)
|
|
6462
|
+
conn.commit()
|
|
6463
|
+
return cur.rowcount > 0
|
|
6464
|
+
|
|
6465
|
+
return retry_on_locked(_write)
|
|
6377
6466
|
|
|
6378
6467
|
|
|
6379
6468
|
def move_drive_queue_entry(
|
|
@@ -6407,30 +6496,38 @@ def move_drive_queue_entry(
|
|
|
6407
6496
|
def _move_drive_queue_entry_local(
|
|
6408
6497
|
repo_name: str, issue_number: int, to_position: int
|
|
6409
6498
|
) -> bool:
|
|
6410
|
-
|
|
6411
|
-
|
|
6412
|
-
|
|
6413
|
-
|
|
6414
|
-
|
|
6415
|
-
|
|
6416
|
-
(
|
|
6417
|
-
|
|
6418
|
-
|
|
6419
|
-
|
|
6420
|
-
)
|
|
6421
|
-
|
|
6422
|
-
|
|
6423
|
-
|
|
6424
|
-
|
|
6425
|
-
|
|
6426
|
-
|
|
6427
|
-
|
|
6428
|
-
for index, row_id in enumerate(order):
|
|
6429
|
-
sql.execute(conn,
|
|
6430
|
-
"UPDATE drive_queue SET position = ? WHERE id = ?", (index, row_id)
|
|
6499
|
+
# #2846: wrapped in retry_on_locked like every other write in this
|
|
6500
|
+
# module. Re-running this whole read-then-renumber closure on a retry is
|
|
6501
|
+
# safe — it recomputes the target order fresh against the *current*
|
|
6502
|
+
# queue each attempt, so a transient lock from a concurrent writer
|
|
6503
|
+
# elsewhere in the daemon now resolves instead of 503ing the caller.
|
|
6504
|
+
def _write() -> bool:
|
|
6505
|
+
conn = get_connection()
|
|
6506
|
+
rows = sql.execute(conn,
|
|
6507
|
+
"SELECT id, repo_name, issue_number FROM drive_queue ORDER BY position, id"
|
|
6508
|
+
).fetchall()
|
|
6509
|
+
order = [int(r["id"]) for r in rows]
|
|
6510
|
+
target = next(
|
|
6511
|
+
(
|
|
6512
|
+
int(r["id"])
|
|
6513
|
+
for r in rows
|
|
6514
|
+
if r["repo_name"] == repo_name and int(r["issue_number"]) == issue_number
|
|
6515
|
+
),
|
|
6516
|
+
None,
|
|
6431
6517
|
)
|
|
6432
|
-
|
|
6433
|
-
|
|
6518
|
+
if target is None:
|
|
6519
|
+
return False
|
|
6520
|
+
order.remove(target)
|
|
6521
|
+
dest = max(0, min(int(to_position), len(order)))
|
|
6522
|
+
order.insert(dest, target)
|
|
6523
|
+
for index, row_id in enumerate(order):
|
|
6524
|
+
sql.execute(conn,
|
|
6525
|
+
"UPDATE drive_queue SET position = ? WHERE id = ?", (index, row_id)
|
|
6526
|
+
)
|
|
6527
|
+
conn.commit()
|
|
6528
|
+
return True
|
|
6529
|
+
|
|
6530
|
+
return retry_on_locked(_write)
|
|
6434
6531
|
|
|
6435
6532
|
|
|
6436
6533
|
def get_drive_queue_entry(repo_name: str, issue_number: int) -> dict | None:
|