code-coordinator 0.5.511__tar.gz → 0.5.512__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.511 → code_coordinator-0.5.512}/PKG-INFO +1 -1
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/code_coordinator.egg-info/SOURCES.txt +2 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/code_coordinator.egg-info/scm_file_list.json +2 -0
- code_coordinator-0.5.512/code_coordinator.egg-info/scm_version.json +8 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/board_schema.py +235 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/drive_queue.py +103 -0
- code_coordinator-0.5.512/coord/drive_sessions_snapshot.py +177 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/serve_app.py +226 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_board_read_path.py +22 -7
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_board_schema.py +122 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_config_effective.py +96 -0
- code_coordinator-0.5.512/tests/test_drive_sessions_snapshot.py +120 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_serve.py +390 -0
- code_coordinator-0.5.511/code_coordinator.egg-info/scm_version.json +0 -8
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/.gitignore +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/CLAUDE.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/GOAL.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/LICENSE +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/MANIFEST.in +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/README.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/__init__.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/agent.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/audit.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/backup.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/block_log.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/board_service.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/brain.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/claim.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/claude_setup_token.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/cli.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/client.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/codegen.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/backup.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/ci.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/codegen.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/dr.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/comments.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/config.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/dao.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/db.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/deps.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/dispatch_liveness.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/dr_promote.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/dr_verify.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/drive.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/events.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/failure_classifier.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/filelock.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/freshness.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/gates.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/goal.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/config_drift.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/pr_churn.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/context.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/models.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/render.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/health/units.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/hooks.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/interactive.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/invariant_alarms.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/machine_fault.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/machine_metrics.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/machine_stats.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/models.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/network.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/notify.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/openapi.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/parentage.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/plans.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/progress.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/release_window.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/repo_dormancy.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/reports.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/restart_cmd.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/review.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/self_health.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/smoke.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/split_work.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/sql.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/state.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/store_parity.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/templates/deploy-cloudflare.node.yml +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/test_author.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/test_report.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/uat_checks.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/usage.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/DATA_STORE_SELECTION.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/DISASTER_RECOVERY.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/install-agent.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/pyproject.toml +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/azure-workers/dr-down.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/azure-workers/dr-up.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/azure-workers/provision-server.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/azure-workers/throwaway-vm.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/lib/provision-core.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/provision-machine.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/setup-macmini.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/verify-provision-noble.sh +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/setup.cfg +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/__init__.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/backends.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/conftest.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_approve_capability_reroute_3241.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_approved_work_2996.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_backup.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_ci_github.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_claude_setup_token.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_ci.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_codegen.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_doctor_store_backend_3084.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_serve_store_backend_3084.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_status_invariant_alarms.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_status_machine_fault.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_status_retried_3340.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_status_supervisor_3366.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_client.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_client_config_cache_atomic_3052.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_config.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_config_drift_check.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_dashboard_api.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_dashboard_server.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_db.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_deploy_db_backup_unit.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_dispatch_liveness.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_dispatch_workers.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_dr_azure_scripts.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_dr_promote.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_dr_verify.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_drive_machine_fault.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_drive_queue_max_parallel_config.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_events.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_failure_classifier.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_fix_escalation_classifier.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_pr_churn.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_health_wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_housekeeping.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_init.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_invariant_alarms.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_machine_fault.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_machine_metrics.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_machine_stats.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_models.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_network.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_provision_core.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_provision_machine.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_release_cordon_drain_stall_3336.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_repo_dormancy.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_repo_max_parallel_3423.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_restart_cmd.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_retry_escalation_classify_3360.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_review.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_serve_app.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_session.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_smoke_fanout_manifest_3333.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_split.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_state.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_throwaway_vm.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_uat_checks.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.511 → code_coordinator-0.5.512}/tests/write_parity.py +0 -0
|
@@ -76,6 +76,7 @@ coord/dr_promote.py
|
|
|
76
76
|
coord/dr_verify.py
|
|
77
77
|
coord/drive.py
|
|
78
78
|
coord/drive_queue.py
|
|
79
|
+
coord/drive_sessions_snapshot.py
|
|
79
80
|
coord/drive_state.py
|
|
80
81
|
coord/events.py
|
|
81
82
|
coord/failure_class.py
|
|
@@ -622,6 +623,7 @@ tests/test_drive_queue_max_parallel_config.py
|
|
|
622
623
|
tests/test_drive_queue_max_parallel_per_repo_config.py
|
|
623
624
|
tests/test_drive_queue_roll_pending.py
|
|
624
625
|
tests/test_drive_queue_self_cordon_escalation.py
|
|
626
|
+
tests/test_drive_sessions_snapshot.py
|
|
625
627
|
tests/test_drive_state.py
|
|
626
628
|
tests/test_drive_tmux.py
|
|
627
629
|
tests/test_epic_up_capability_detection.py
|
{code_coordinator-0.5.511 → code_coordinator-0.5.512}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -136,6 +136,7 @@
|
|
|
136
136
|
"coord/dr_verify.py",
|
|
137
137
|
"coord/drive.py",
|
|
138
138
|
"coord/drive_queue.py",
|
|
139
|
+
"coord/drive_sessions_snapshot.py",
|
|
139
140
|
"coord/drive_state.py",
|
|
140
141
|
"coord/events.py",
|
|
141
142
|
"coord/failure_class.py",
|
|
@@ -648,6 +649,7 @@
|
|
|
648
649
|
"tests/test_drive_queue_max_parallel_per_repo_config.py",
|
|
649
650
|
"tests/test_drive_queue_roll_pending.py",
|
|
650
651
|
"tests/test_drive_queue_self_cordon_escalation.py",
|
|
652
|
+
"tests/test_drive_sessions_snapshot.py",
|
|
651
653
|
"tests/test_drive_state.py",
|
|
652
654
|
"tests/test_drive_tmux.py",
|
|
653
655
|
"tests/test_epic_up_capability_detection.py",
|
|
@@ -62,6 +62,11 @@ import typing
|
|
|
62
62
|
from collections.abc import Mapping
|
|
63
63
|
from typing import Any, Union
|
|
64
64
|
|
|
65
|
+
# #3428: the `concurrency` block's `occupancy_state` value set — owned by the
|
|
66
|
+
# snapshot module that produces it (see `BoardConcurrency` below). Safe at
|
|
67
|
+
# module scope: that module imports nothing from `coord` at import time.
|
|
68
|
+
from coord.drive_sessions_snapshot import OCCUPANCY_UNOBSERVED
|
|
69
|
+
|
|
65
70
|
#: What the read path actually hands the projection. ``sqlite3.Row`` is *not*
|
|
66
71
|
#: a ``Mapping`` (see :func:`_as_dict`), so it has to be named explicitly.
|
|
67
72
|
RowLike = Union[Mapping[str, Any], sqlite3.Row]
|
|
@@ -310,6 +315,236 @@ class BoardDriveQueueEntry:
|
|
|
310
315
|
apply_verdict_at: float | None = None
|
|
311
316
|
|
|
312
317
|
|
|
318
|
+
# ── #3428 (#3408 item 3): concurrency ceilings + provenance + occupancy ──────
|
|
319
|
+
#
|
|
320
|
+
# The three dataclasses below are NOT a table projection — there is no
|
|
321
|
+
# `concurrency` table — so they are absent from `BOARD_PROJECTIONS` and
|
|
322
|
+
# `decode_row()` never touches them. They exist to give the *computed*
|
|
323
|
+
# `coord.drive_queue.CeilingResolution` (already resolved on the daemon host
|
|
324
|
+
# by `coord config --effective`'s own machinery — see that command's
|
|
325
|
+
# docstring) an explicit wire shape, the same way `BoardAssignment` etc. give
|
|
326
|
+
# one to a raw DB row. `coord/serve_app.py`'s `board()` handler builds a
|
|
327
|
+
# `BoardConcurrency` per request (never persisted) and adds it to the
|
|
328
|
+
# `/board` payload as the sibling key ``concurrency`` — same posture as
|
|
329
|
+
# ``roll_pending``/``goal_header``: additive, absent-tolerant, never required.
|
|
330
|
+
#
|
|
331
|
+
# Deliberately does NOT import `coord.drive_queue` at module scope:
|
|
332
|
+
# `coord.drive_queue` transitively imports THIS module (via
|
|
333
|
+
# `coord.merge_queue` -> `coord.state` -> `coord.board_schema`), so a
|
|
334
|
+
# top-level `from coord.drive_queue import CeilingResolution` here would be a
|
|
335
|
+
# real import cycle, not just an ugly one. `CeilingResolution` is referenced
|
|
336
|
+
# only for typing (`from __future__ import annotations` makes the annotation
|
|
337
|
+
# itself lazy) and duck-typed at runtime by :func:`board_ceiling_from_resolution`.
|
|
338
|
+
# (`coord.drive_sessions_snapshot`, which owns the `occupancy_state` value
|
|
339
|
+
# set `BoardConcurrency` below defaults to, is by contrast imported at the
|
|
340
|
+
# TOP of this file: it imports nothing from `coord` at module scope — its own
|
|
341
|
+
# tmux/queue imports are deferred into `refresh()` — so it cannot close a
|
|
342
|
+
# cycle back through here.)
|
|
343
|
+
if typing.TYPE_CHECKING: # pragma: no cover — typing only
|
|
344
|
+
from coord.drive_queue import CeilingResolution
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
#: `BoardCeiling.source_kind` / `BoardCeilingSource.source_kind`'s closed
|
|
348
|
+
#: value set (#3428) — a machine-readable classification of
|
|
349
|
+
#: `CeilingResolution.source`'s free-text prose (written for `coord config
|
|
350
|
+
#: --effective`'s human-readable output), so a client can style/filter a
|
|
351
|
+
#: ceiling's provenance without string-matching wording that is free to
|
|
352
|
+
#: change. See :func:`classify_ceiling_source` for the mapping.
|
|
353
|
+
CEILING_SOURCE_KIND_SYSTEMD_FLAG = "systemd_flag"
|
|
354
|
+
CEILING_SOURCE_KIND_CLI_FLAG = "cli_flag"
|
|
355
|
+
CEILING_SOURCE_KIND_COORDINATOR_YML_REPO = "coordinator_yml_repo"
|
|
356
|
+
CEILING_SOURCE_KIND_COORDINATOR_YML_PIPELINE = "coordinator_yml_pipeline"
|
|
357
|
+
CEILING_SOURCE_KIND_COORDINATOR_YML_CONCURRENCY = "coordinator_yml_concurrency"
|
|
358
|
+
CEILING_SOURCE_KIND_DERIVED = "derived"
|
|
359
|
+
CEILING_SOURCE_KIND_DEFAULT = "default"
|
|
360
|
+
#: A `CeilingResolution.source` this classifier doesn't recognise — should
|
|
361
|
+
#: never actually appear on a real `/board` payload (every source string
|
|
362
|
+
#: `coord.drive_queue`'s resolvers produce is covered below), but a client
|
|
363
|
+
#: must still be able to parse it rather than choke: unlike the DTOs above,
|
|
364
|
+
#: `source_kind` degrading to "unknown" is a display nit, not a #632-class
|
|
365
|
+
#: parse failure.
|
|
366
|
+
CEILING_SOURCE_KIND_UNKNOWN = "unknown"
|
|
367
|
+
|
|
368
|
+
CEILING_SOURCE_KINDS: frozenset[str] = frozenset(
|
|
369
|
+
{
|
|
370
|
+
CEILING_SOURCE_KIND_SYSTEMD_FLAG,
|
|
371
|
+
CEILING_SOURCE_KIND_CLI_FLAG,
|
|
372
|
+
CEILING_SOURCE_KIND_COORDINATOR_YML_REPO,
|
|
373
|
+
CEILING_SOURCE_KIND_COORDINATOR_YML_PIPELINE,
|
|
374
|
+
CEILING_SOURCE_KIND_COORDINATOR_YML_CONCURRENCY,
|
|
375
|
+
CEILING_SOURCE_KIND_DERIVED,
|
|
376
|
+
CEILING_SOURCE_KIND_DEFAULT,
|
|
377
|
+
CEILING_SOURCE_KIND_UNKNOWN,
|
|
378
|
+
}
|
|
379
|
+
)
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
def classify_ceiling_source(source: str) -> str:
|
|
383
|
+
"""Map one `CeilingResolution.source` (or one of its `losing` entries'
|
|
384
|
+
source names) prose string to a :data:`CEILING_SOURCE_KINDS` enum value.
|
|
385
|
+
|
|
386
|
+
Ordered by specificity, matching the exact strings
|
|
387
|
+
`coord.drive_queue`'s resolvers / `coord.commands.setup._print_effective_
|
|
388
|
+
concurrency` actually construct today:
|
|
389
|
+
|
|
390
|
+
* ``"systemd ExecStart --max-parallel..."`` (`read_systemd_max_parallel_
|
|
391
|
+
flags` via `coord.commands.setup`'s ``per_repo_source``/
|
|
392
|
+
``max_parallel_source``) -> ``systemd_flag`` — the #3408 incident
|
|
393
|
+
source: a machine-local flag a thin client can never see for itself.
|
|
394
|
+
* ``"--max-parallel[-per-repo] flag"`` (an explicit CLI override on
|
|
395
|
+
`coord drive-queue tick`'s own invocation) -> ``cli_flag``.
|
|
396
|
+
* ``"coordinator.yml repos[<name>].max_parallel"`` (#3423 per-repo
|
|
397
|
+
override) -> ``coordinator_yml_repo``.
|
|
398
|
+
* ``"coordinator.yml pipeline.max_parallel..."`` -> ``coordinator_yml_pipeline``.
|
|
399
|
+
* ``"coordinator.yml concurrency.max_workers"`` (this module's own
|
|
400
|
+
synthetic resolution for the fleet worker cap — see
|
|
401
|
+
:func:`board_ceiling_from_resolution`'s caller in `coord/serve_app.py`)
|
|
402
|
+
-> ``coordinator_yml_concurrency``.
|
|
403
|
+
* ``"derived (...)"`` (`default_max_parallel`'s repo-shape derivation)
|
|
404
|
+
-> ``derived``.
|
|
405
|
+
* ``"default (...)"`` (the hardcoded fallback, config unreadable) ->
|
|
406
|
+
``default``.
|
|
407
|
+
* anything else -> ``unknown`` (fail-soft; see that constant's docstring).
|
|
408
|
+
"""
|
|
409
|
+
if source.startswith("systemd ExecStart"):
|
|
410
|
+
return CEILING_SOURCE_KIND_SYSTEMD_FLAG
|
|
411
|
+
if source.startswith("coordinator.yml repos["):
|
|
412
|
+
return CEILING_SOURCE_KIND_COORDINATOR_YML_REPO
|
|
413
|
+
if source.startswith("coordinator.yml pipeline."):
|
|
414
|
+
return CEILING_SOURCE_KIND_COORDINATOR_YML_PIPELINE
|
|
415
|
+
if source.startswith("coordinator.yml concurrency."):
|
|
416
|
+
return CEILING_SOURCE_KIND_COORDINATOR_YML_CONCURRENCY
|
|
417
|
+
if source.startswith("derived"):
|
|
418
|
+
return CEILING_SOURCE_KIND_DERIVED
|
|
419
|
+
if source.startswith("default"):
|
|
420
|
+
return CEILING_SOURCE_KIND_DEFAULT
|
|
421
|
+
if source.startswith("--") and source.endswith("flag"):
|
|
422
|
+
return CEILING_SOURCE_KIND_CLI_FLAG
|
|
423
|
+
return CEILING_SOURCE_KIND_UNKNOWN
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
@dataclasses.dataclass(kw_only=True)
|
|
427
|
+
class BoardCeilingSource:
|
|
428
|
+
"""One LOSING source's own opinion for a :class:`BoardCeiling` (#3428) —
|
|
429
|
+
the wire twin of one ``(name, value)`` pair in a
|
|
430
|
+
`coord.drive_queue.CeilingResolution.losing` tuple. This is the whole
|
|
431
|
+
point of shipping provenance at all: it is what tells an operator that
|
|
432
|
+
editing ``coordinator.yml``/``coord-settings`` is futile while a
|
|
433
|
+
machine-local systemd flag outranks it (#3408's reported incident).
|
|
434
|
+
"""
|
|
435
|
+
|
|
436
|
+
source: str
|
|
437
|
+
source_kind: str
|
|
438
|
+
value: int
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
@dataclasses.dataclass(kw_only=True)
|
|
442
|
+
class BoardCeiling:
|
|
443
|
+
"""One resolved concurrency ceiling + provenance (#3428) — the `/board`
|
|
444
|
+
wire twin of `coord.drive_queue.CeilingResolution`, the exact resolution
|
|
445
|
+
`coord config --effective` and `coord drive-queue tick` itself already
|
|
446
|
+
use (#2085 "one question, one answer": this block is never a second,
|
|
447
|
+
independently-derived answer).
|
|
448
|
+
|
|
449
|
+
``source`` carries the same free-text `CeilingResolution.source` a human
|
|
450
|
+
reads in `coord config --effective`'s output; ``source_kind`` is the
|
|
451
|
+
machine-readable classification of it (:func:`classify_ceiling_source`)
|
|
452
|
+
a client should actually branch on. ``losing`` is ``None`` (not ``[]``)
|
|
453
|
+
when nothing else was configured, matching `CeilingResolution.losing`'s
|
|
454
|
+
own "empty means nobody else had an opinion" contract.
|
|
455
|
+
"""
|
|
456
|
+
|
|
457
|
+
name: str
|
|
458
|
+
value: int
|
|
459
|
+
source: str
|
|
460
|
+
source_kind: str
|
|
461
|
+
losing: list[BoardCeilingSource] | None = None
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
def board_ceiling_from_resolution(resolution: "CeilingResolution") -> BoardCeiling:
|
|
465
|
+
"""`coord.drive_queue.CeilingResolution` -> its `/board` wire shape.
|
|
466
|
+
|
|
467
|
+
Duck-typed on purpose (reads ``.name``/``.value``/``.source``/``.losing``
|
|
468
|
+
rather than importing the real class) — see the module note above this
|
|
469
|
+
section for why `coord.drive_queue` cannot be imported here at runtime.
|
|
470
|
+
"""
|
|
471
|
+
losing = [
|
|
472
|
+
BoardCeilingSource(
|
|
473
|
+
source=name, source_kind=classify_ceiling_source(name), value=value
|
|
474
|
+
)
|
|
475
|
+
for name, value in resolution.losing
|
|
476
|
+
] or None
|
|
477
|
+
return BoardCeiling(
|
|
478
|
+
name=resolution.name,
|
|
479
|
+
value=resolution.value,
|
|
480
|
+
source=resolution.source,
|
|
481
|
+
source_kind=classify_ceiling_source(resolution.source),
|
|
482
|
+
losing=losing,
|
|
483
|
+
)
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
@dataclasses.dataclass(kw_only=True)
|
|
487
|
+
class BoardConcurrency:
|
|
488
|
+
"""The `/board` payload's ``concurrency`` block (#3428, #3408 item 3):
|
|
489
|
+
every ceiling `coord drive-queue tick` actually enforces, resolved on
|
|
490
|
+
THIS (the daemon) host, plus current occupancy against each.
|
|
491
|
+
|
|
492
|
+
**Resolved server-side, always** — the systemd-flag source
|
|
493
|
+
(:data:`CEILING_SOURCE_KIND_SYSTEMD_FLAG`) is machine-local and invisible
|
|
494
|
+
to a thin client (a Rust TUI, a phone webapp) by construction; a client
|
|
495
|
+
deriving ceilings from its own cached ``coordinator.yml`` would
|
|
496
|
+
confidently print the config value while a host-local flag silently
|
|
497
|
+
outranked it — the exact #3408 failure this block exists to end.
|
|
498
|
+
|
|
499
|
+
``repo_overrides`` carries only the repos whose OWN ``repos[].max_parallel``
|
|
500
|
+
(#3423) actually differs from ``max_parallel_per_repo``'s fleet-wide
|
|
501
|
+
value — mirroring `coord.drive_queue.effective_repo_capacities`'s own
|
|
502
|
+
"only the repos that disagree" trim (see that function's docstring):
|
|
503
|
+
listing every repo would bury the ones that matter and make an
|
|
504
|
+
all-default fleet look like something was overridden everywhere.
|
|
505
|
+
|
|
506
|
+
``occupied``/``repo_occupied`` are `coord.drive_queue.
|
|
507
|
+
compute_running_occupancy`'s own output, verbatim — the SAME "is this
|
|
508
|
+
entry still occupying a slot" verdict `plan_tick` enforces, never a
|
|
509
|
+
second, independently-recounted number (#2085 "one question, one
|
|
510
|
+
answer").
|
|
511
|
+
|
|
512
|
+
**Occupancy is nullable, and says why (#2096).** That verdict's first
|
|
513
|
+
question about a `running` entry is "is its drive session live?", which
|
|
514
|
+
only a ``tmux list-sessions`` reading can answer — and that reading is a
|
|
515
|
+
SUBPROCESS, so it is taken on the daemon's tick cadence
|
|
516
|
+
(`coord.drive_sessions_snapshot`), never inline off this read path (the
|
|
517
|
+
`/board` invariant 1 that `tests/test_board_read_path.py` enforces). When
|
|
518
|
+
the daemon has not taken a reading yet, or its refresh loop has stalled
|
|
519
|
+
(#2862) and the last one is too old to be evidence about now,
|
|
520
|
+
``occupied``/``repo_occupied`` are ``None`` and ``occupancy_state`` says
|
|
521
|
+
which — never a confidently-wrong ``0`` that a client would render as
|
|
522
|
+
"all slots free". ``occupancy_observed_at`` is the wall-clock moment of
|
|
523
|
+
the reading behind the numbers (``None`` when there has never been one),
|
|
524
|
+
so a client can show — and age out — the numbers itself.
|
|
525
|
+
|
|
526
|
+
The CEILINGS are unaffected by any of that: they are resolved from
|
|
527
|
+
config + this host's systemd unit on every build, so they stay populated
|
|
528
|
+
even when occupancy is unknown.
|
|
529
|
+
|
|
530
|
+
Absent-tolerant in both directions (#3428 acceptance): an older daemon
|
|
531
|
+
simply omits the ``concurrency`` key entirely (never ships it as e.g. an
|
|
532
|
+
empty object), and a newer client must not require the key to parse an
|
|
533
|
+
otherwise-valid board.
|
|
534
|
+
"""
|
|
535
|
+
|
|
536
|
+
max_parallel: BoardCeiling
|
|
537
|
+
max_parallel_per_repo: BoardCeiling
|
|
538
|
+
max_workers: BoardCeiling
|
|
539
|
+
repo_overrides: dict[str, BoardCeiling]
|
|
540
|
+
#: ``None`` unless ``occupancy_state`` is
|
|
541
|
+
#: :data:`~coord.drive_sessions_snapshot.OCCUPANCY_OBSERVED`.
|
|
542
|
+
occupied: int | None = None
|
|
543
|
+
repo_occupied: dict[str, int] | None = None
|
|
544
|
+
#: One of :data:`~coord.drive_sessions_snapshot.OCCUPANCY_STATES`.
|
|
545
|
+
occupancy_state: str = OCCUPANCY_UNOBSERVED
|
|
546
|
+
occupancy_observed_at: float | None = None
|
|
547
|
+
|
|
313
548
|
|
|
314
549
|
#: ``table name`` → the DTO that defines its ``/board`` wire shape. These are
|
|
315
550
|
#: exactly the seven projections ``coord/serve_app.py`` publishes under
|
|
@@ -988,6 +988,109 @@ def compute_running_occupancy(
|
|
|
988
988
|
return occupied, repo_occupied
|
|
989
989
|
|
|
990
990
|
|
|
991
|
+
@dataclass(frozen=True)
|
|
992
|
+
class ConcurrencyReport:
|
|
993
|
+
"""Every concurrency ceiling `coord drive-queue tick` enforces, resolved
|
|
994
|
+
together in the SAME order + SAME primitives ``coord config --effective``
|
|
995
|
+
(`coord.commands.setup._print_effective_concurrency`) already applies
|
|
996
|
+
(#3408), plus current occupancy against each — the one call a daemon-host
|
|
997
|
+
caller should make rather than re-deriving the wiring itself (#3428,
|
|
998
|
+
#2085 "one question, one answer").
|
|
999
|
+
|
|
1000
|
+
``repo_resolutions`` is EVERY repo's own :class:`CeilingResolution`
|
|
1001
|
+
(#3423), keyed by name — :func:`resolve_repo_ceilings`'s full table.
|
|
1002
|
+
``repo_overrides`` is the trimmed subset that actually differs from
|
|
1003
|
+
``max_parallel_per_repo``'s fleet-wide value —
|
|
1004
|
+
:func:`effective_repo_capacities`'s own shape, and also what
|
|
1005
|
+
``max_parallel``'s own resolution is computed against (a repo with no
|
|
1006
|
+
override contributes the fleet figure to that sum, not its own name).
|
|
1007
|
+
"""
|
|
1008
|
+
|
|
1009
|
+
max_parallel: CeilingResolution
|
|
1010
|
+
max_parallel_per_repo: CeilingResolution
|
|
1011
|
+
max_workers: CeilingResolution
|
|
1012
|
+
repo_resolutions: dict[str, CeilingResolution]
|
|
1013
|
+
repo_overrides: dict[str, int]
|
|
1014
|
+
occupied: int
|
|
1015
|
+
repo_occupied: dict[str, int]
|
|
1016
|
+
|
|
1017
|
+
|
|
1018
|
+
def resolve_concurrency_report(
|
|
1019
|
+
*,
|
|
1020
|
+
repo_overrides: Mapping[str, int | None],
|
|
1021
|
+
pipeline_max_parallel: int | None,
|
|
1022
|
+
pipeline_max_parallel_per_repo: int | None,
|
|
1023
|
+
max_workers_cap: int,
|
|
1024
|
+
systemd_flags: Mapping[str, int] | None = None,
|
|
1025
|
+
entries: Sequence["QueueEntry"] = (),
|
|
1026
|
+
board: "BoardView | None" = None,
|
|
1027
|
+
max_attempts: int = DEFAULT_MAX_ATTEMPTS,
|
|
1028
|
+
now: float | None = None,
|
|
1029
|
+
local_host: str | None = None,
|
|
1030
|
+
) -> ConcurrencyReport:
|
|
1031
|
+
"""Resolve every concurrency ceiling in one call (#3428).
|
|
1032
|
+
|
|
1033
|
+
*repo_overrides* is ``{repo_name: repos[].max_parallel or None}`` for
|
|
1034
|
+
EVERY repo in the fleet (not just the overridden ones — see
|
|
1035
|
+
:func:`resolve_repo_ceilings`). *systemd_flags* defaults to a fresh
|
|
1036
|
+
:func:`read_systemd_max_parallel_flags` read of THIS machine's own
|
|
1037
|
+
installed unit when not given (a caller with an already-read dict, e.g.
|
|
1038
|
+
a test, passes it explicitly rather than touching the filesystem).
|
|
1039
|
+
|
|
1040
|
+
*board*/*entries* are `compute_running_occupancy`'s own arguments;
|
|
1041
|
+
*board* left ``None`` (the default) skips occupancy entirely
|
|
1042
|
+
(``occupied=0``, ``repo_occupied={}``) rather than raising — a caller
|
|
1043
|
+
that only wants the ceilings (no live queue state) does not need to
|
|
1044
|
+
fabricate an empty :class:`BoardView`.
|
|
1045
|
+
"""
|
|
1046
|
+
flags = systemd_flags if systemd_flags is not None else read_systemd_max_parallel_flags()
|
|
1047
|
+
|
|
1048
|
+
per_repo_resolution = resolve_max_parallel_per_repo(
|
|
1049
|
+
override_value=flags.get("max_parallel_per_repo"),
|
|
1050
|
+
override_source="systemd ExecStart --max-parallel-per-repo",
|
|
1051
|
+
config_value=pipeline_max_parallel_per_repo,
|
|
1052
|
+
)
|
|
1053
|
+
repo_resolutions = resolve_repo_ceilings(repo_overrides, fleet=per_repo_resolution)
|
|
1054
|
+
effective_repo_overrides = effective_repo_capacities(
|
|
1055
|
+
repo_resolutions, fleet_value=per_repo_resolution.value
|
|
1056
|
+
)
|
|
1057
|
+
|
|
1058
|
+
global_resolution = resolve_max_parallel(
|
|
1059
|
+
override_value=flags.get("max_parallel"),
|
|
1060
|
+
override_source="systemd ExecStart --max-parallel",
|
|
1061
|
+
config_value=pipeline_max_parallel,
|
|
1062
|
+
repo_count=len(repo_overrides),
|
|
1063
|
+
max_parallel_per_repo=per_repo_resolution.value,
|
|
1064
|
+
max_workers_cap=max_workers_cap,
|
|
1065
|
+
repo_overrides=effective_repo_overrides,
|
|
1066
|
+
)
|
|
1067
|
+
# `concurrency.max_workers` has exactly one source today — nothing can
|
|
1068
|
+
# beat `coordinator.yml`'s own value — but the wire/report shape stays
|
|
1069
|
+
# uniform across all three ceilings (#3428's own contract), so it is
|
|
1070
|
+
# wrapped in the same `CeilingResolution` shape the other two use, with
|
|
1071
|
+
# an always-empty `losing`.
|
|
1072
|
+
max_workers_resolution = CeilingResolution(
|
|
1073
|
+
"max_workers", max_workers_cap, "coordinator.yml concurrency.max_workers"
|
|
1074
|
+
)
|
|
1075
|
+
|
|
1076
|
+
if board is not None:
|
|
1077
|
+
occupied, repo_occupied = compute_running_occupancy(
|
|
1078
|
+
entries, board, max_attempts, now=now, local_host=local_host
|
|
1079
|
+
)
|
|
1080
|
+
else:
|
|
1081
|
+
occupied, repo_occupied = 0, {}
|
|
1082
|
+
|
|
1083
|
+
return ConcurrencyReport(
|
|
1084
|
+
max_parallel=global_resolution,
|
|
1085
|
+
max_parallel_per_repo=per_repo_resolution,
|
|
1086
|
+
max_workers=max_workers_resolution,
|
|
1087
|
+
repo_resolutions=repo_resolutions,
|
|
1088
|
+
repo_overrides=effective_repo_overrides,
|
|
1089
|
+
occupied=occupied,
|
|
1090
|
+
repo_occupied=repo_occupied,
|
|
1091
|
+
)
|
|
1092
|
+
|
|
1093
|
+
|
|
991
1094
|
# ── the startup grace window (#1794) ─────────────────────────────────────────
|
|
992
1095
|
#
|
|
993
1096
|
# A drive is NOT established the instant `coord drive --tmux` exits 0. #1606's
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"""Tick-refreshed snapshot of this host's live drive tmux sessions (#3428).
|
|
2
|
+
|
|
3
|
+
**Invariant 1 of the ``/board`` read path: read endpoints perform no
|
|
4
|
+
third-party I/O** (``coord.gate_snapshot``'s own opening line, and the
|
|
5
|
+
enforcement test ``tests/test_board_read_path.py::
|
|
6
|
+
test_board_read_makes_zero_gh_calls``, which fails the build on *any*
|
|
7
|
+
subprocess spawned while a board is built).
|
|
8
|
+
|
|
9
|
+
:func:`coord.drive.list_drive_sessions` is a ``tmux list-sessions``
|
|
10
|
+
**subprocess** with a 5 s timeout. The #3428 ``concurrency`` block needs its
|
|
11
|
+
answer — occupancy is computed by :func:`coord.drive_queue.
|
|
12
|
+
compute_running_occupancy`, whose very first question about a ``running``
|
|
13
|
+
entry is "is its drive session live?" — but calling it inline off the board
|
|
14
|
+
handler would put a process spawn (and, on a wedged tmux server, a 5 s stall)
|
|
15
|
+
on the hottest read path in the daemon, once per cold build. That is exactly
|
|
16
|
+
the ``gh``-on-``/board`` mechanism of the #762/#715/#1336 timeout-overrun
|
|
17
|
+
class, with tmux swapped in for GitHub.
|
|
18
|
+
|
|
19
|
+
So the reading moves to the daemon's tick cadence, the same shape
|
|
20
|
+
``GateSnapshotRefresher`` / ``FleetHealthRefresher`` / ``MachineMetricsSampler``
|
|
21
|
+
already use: :meth:`DriveSessionsRefresher.refresh` (tick side, the ONLY
|
|
22
|
+
subprocess) publishes an immutable :class:`DriveSessionsSnapshot`, and the
|
|
23
|
+
board handler consumes the last one published with a bare attribute read.
|
|
24
|
+
|
|
25
|
+
**The snapshot states its own freshness, and "I did not observe this" is a
|
|
26
|
+
reachable verdict (#2096).** An occupancy count is only as true as the
|
|
27
|
+
session reading behind it, and *two* real conditions leave that reading
|
|
28
|
+
absent rather than merely empty:
|
|
29
|
+
|
|
30
|
+
* the daemon has not taken one yet — a just-restarted ``coord serve``, or a
|
|
31
|
+
deployment with the refresh loop disabled (``COORD_DRIVE_SESSIONS_REFRESH_
|
|
32
|
+
INTERVAL=0``); and
|
|
33
|
+
* the refresh loop stopped — the bare ``asyncio.create_task`` loops in
|
|
34
|
+
``coord/serve_app.py`` have no supervisor (#2862), so a loop that dies
|
|
35
|
+
stays dead until the daemon restarts, and its last snapshot would otherwise
|
|
36
|
+
keep being served as current forever.
|
|
37
|
+
|
|
38
|
+
In both cases occupancy is reported as ``None`` with an
|
|
39
|
+
:data:`OCCUPANCY_STATES` label saying which, never as a confidently-wrong
|
|
40
|
+
``0``. A "0 of 4 slots in use" that actually meant "nobody looked" is the
|
|
41
|
+
same defect class as a green gate that only proves the request was issued.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
from __future__ import annotations
|
|
45
|
+
|
|
46
|
+
import time
|
|
47
|
+
from dataclasses import dataclass, field
|
|
48
|
+
from typing import Any
|
|
49
|
+
|
|
50
|
+
#: How old the last reading may be before it stops counting as current.
|
|
51
|
+
#: Deliberately several multiples of the daemon's default refresh cadence
|
|
52
|
+
#: (``COORD_DRIVE_SESSIONS_REFRESH_INTERVAL``, 15 s) so an ordinary slow tick
|
|
53
|
+
#: — or one pass that lost its race with a 5 s ``tmux`` timeout — does not
|
|
54
|
+
#: flap the label, while a loop that has genuinely stopped (#2862) crosses it
|
|
55
|
+
#: within a minute.
|
|
56
|
+
STALE_AFTER_SECONDS = 90.0
|
|
57
|
+
|
|
58
|
+
#: A reading was taken within :data:`STALE_AFTER_SECONDS` — the occupancy
|
|
59
|
+
#: numbers built from it are current.
|
|
60
|
+
OCCUPANCY_OBSERVED = "observed"
|
|
61
|
+
#: No reading has EVER been taken by this daemon (fresh start, or the refresh
|
|
62
|
+
#: loop is disabled). Occupancy is unknown, not zero.
|
|
63
|
+
OCCUPANCY_UNOBSERVED = "unobserved"
|
|
64
|
+
#: A reading was taken, but too long ago to be evidence about now — the
|
|
65
|
+
#: refresh loop has stalled or died. Occupancy is unknown, not last-known.
|
|
66
|
+
OCCUPANCY_STALE = "stale"
|
|
67
|
+
|
|
68
|
+
#: The closed value set for the ``/board`` ``concurrency.occupancy_state``
|
|
69
|
+
#: field (#3428). Only :data:`OCCUPANCY_OBSERVED` carries numbers.
|
|
70
|
+
OCCUPANCY_STATES: frozenset[str] = frozenset(
|
|
71
|
+
{OCCUPANCY_OBSERVED, OCCUPANCY_UNOBSERVED, OCCUPANCY_STALE}
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
@dataclass(frozen=True)
|
|
76
|
+
class DriveSessionsSnapshot:
|
|
77
|
+
"""One immutable reading of this host's live ``coord-drive-*`` sessions.
|
|
78
|
+
|
|
79
|
+
*keys* are ``coord.drive_queue.entry_key`` strings (``"repo#N"``) —
|
|
80
|
+
exactly what :func:`coord.drive_queue.build_board_view` accepts as its
|
|
81
|
+
``live_sessions`` argument, so the board's occupancy is computed from the
|
|
82
|
+
identical input ``coord drive-queue tick`` feeds it.
|
|
83
|
+
|
|
84
|
+
*observed_at* is the wall-clock (``time.time()``) moment the reading was
|
|
85
|
+
taken, or ``None`` for the never-refreshed default — the distinction
|
|
86
|
+
:meth:`state` turns into a label. Wall-clock rather than monotonic on
|
|
87
|
+
purpose: it is also carried on the wire so a client can show how old the
|
|
88
|
+
numbers are.
|
|
89
|
+
"""
|
|
90
|
+
|
|
91
|
+
keys: frozenset[str] = field(default_factory=frozenset)
|
|
92
|
+
observed_at: float | None = None
|
|
93
|
+
|
|
94
|
+
def state(
|
|
95
|
+
self,
|
|
96
|
+
*,
|
|
97
|
+
now: float | None = None,
|
|
98
|
+
stale_after: float = STALE_AFTER_SECONDS,
|
|
99
|
+
) -> str:
|
|
100
|
+
"""This snapshot's freshness as one of :data:`OCCUPANCY_STATES`."""
|
|
101
|
+
if self.observed_at is None:
|
|
102
|
+
return OCCUPANCY_UNOBSERVED
|
|
103
|
+
age = (time.time() if now is None else now) - self.observed_at
|
|
104
|
+
if age > stale_after:
|
|
105
|
+
return OCCUPANCY_STALE
|
|
106
|
+
return OCCUPANCY_OBSERVED
|
|
107
|
+
|
|
108
|
+
def is_current(
|
|
109
|
+
self,
|
|
110
|
+
*,
|
|
111
|
+
now: float | None = None,
|
|
112
|
+
stale_after: float = STALE_AFTER_SECONDS,
|
|
113
|
+
) -> bool:
|
|
114
|
+
"""Whether occupancy derived from this snapshot may be reported as a
|
|
115
|
+
number at all (``state() == OCCUPANCY_OBSERVED``)."""
|
|
116
|
+
return self.state(now=now, stale_after=stale_after) == OCCUPANCY_OBSERVED
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
class DriveSessionsRefresher:
|
|
120
|
+
"""Owns the current :class:`DriveSessionsSnapshot`; refreshed by the tick.
|
|
121
|
+
|
|
122
|
+
:meth:`snapshot` is what the read path consumes — a bare attribute read
|
|
123
|
+
(atomic under CPython), never I/O. :meth:`refresh` is the only method
|
|
124
|
+
that spawns ``tmux`` and must only ever run from the daemon's tick
|
|
125
|
+
machinery (or a test driving it explicitly).
|
|
126
|
+
"""
|
|
127
|
+
|
|
128
|
+
def __init__(self, initial: DriveSessionsSnapshot | None = None) -> None:
|
|
129
|
+
"""*initial* seeds the published snapshot — for tests that need a
|
|
130
|
+
specific freshness (a reading from 20 minutes ago, say) without
|
|
131
|
+
waiting on a real tick or spawning ``tmux``. Production callers
|
|
132
|
+
omit it and get the never-refreshed default, whose
|
|
133
|
+
:meth:`DriveSessionsSnapshot.state` is
|
|
134
|
+
:data:`OCCUPANCY_UNOBSERVED`."""
|
|
135
|
+
self._snapshot = initial if initial is not None else DriveSessionsSnapshot()
|
|
136
|
+
|
|
137
|
+
def snapshot(self) -> DriveSessionsSnapshot:
|
|
138
|
+
return self._snapshot
|
|
139
|
+
|
|
140
|
+
# ── the tick-side refresh (the ONLY subprocess) ─────────────────────────
|
|
141
|
+
def refresh(self) -> DriveSessionsSnapshot:
|
|
142
|
+
"""Take one ``tmux list-sessions`` reading and publish it.
|
|
143
|
+
|
|
144
|
+
Reads through :func:`coord.drive.list_drive_sessions` rather than
|
|
145
|
+
re-implementing the tmux call, so the board's notion of "which drives
|
|
146
|
+
are live" is literally the same function ``coord drive-queue tick``
|
|
147
|
+
consults before deciding whether a slot is occupied (#2085 "one
|
|
148
|
+
question, one answer") — including its own fail-soft contract, where
|
|
149
|
+
an unavailable tmux and a genuinely idle host both read as "no live
|
|
150
|
+
sessions".
|
|
151
|
+
|
|
152
|
+
Raises nothing of its own; a failure inside ``list_drive_sessions``
|
|
153
|
+
propagates to the caller's loop (which logs and keeps serving the
|
|
154
|
+
PREVIOUS snapshot, which then ages into :data:`OCCUPANCY_STALE` on
|
|
155
|
+
its own if the failures persist). Publishes only after the read
|
|
156
|
+
returned — a pass that raised must never stamp a fresh
|
|
157
|
+
``observed_at`` on data nobody actually observed.
|
|
158
|
+
"""
|
|
159
|
+
from coord.drive import list_drive_sessions # noqa: PLC0415
|
|
160
|
+
from coord.drive_queue import entry_key # noqa: PLC0415
|
|
161
|
+
|
|
162
|
+
rows: list[dict[str, Any]] = list_drive_sessions()
|
|
163
|
+
keys: set[str] = set()
|
|
164
|
+
for row in rows:
|
|
165
|
+
repo = row.get("repo") or ""
|
|
166
|
+
number = row.get("issue")
|
|
167
|
+
if not repo or number is None:
|
|
168
|
+
continue
|
|
169
|
+
try:
|
|
170
|
+
keys.add(entry_key(repo, int(number)))
|
|
171
|
+
except (TypeError, ValueError):
|
|
172
|
+
continue
|
|
173
|
+
snapshot = DriveSessionsSnapshot(
|
|
174
|
+
keys=frozenset(keys), observed_at=time.time()
|
|
175
|
+
)
|
|
176
|
+
self._snapshot = snapshot
|
|
177
|
+
return snapshot
|