code-coordinator 0.5.551__tar.gz → 0.5.553__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.551 → code_coordinator-0.5.553}/PKG-INFO +1 -1
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/config.py +105 -14
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/reports.py +41 -1
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/review.py +183 -6
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_config.py +20 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_config_acceptance.py +124 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_reports.py +27 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_review.py +269 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/.gitignore +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/CLAUDE.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/GOAL.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/LICENSE +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/MANIFEST.in +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/README.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/__init__.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/agent.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/audit.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/backup.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/block_log.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/board_service.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/brain.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/bugbash.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/claim.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/claude_setup_token.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/cli.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/client.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/codegen.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/backup.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/bugbash.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/ci.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/codegen.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/dr.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/comments.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/dao.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/db.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/deps.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/dispatch_liveness.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/dr_promote.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/dr_verify.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/drive.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/events.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/failure_classifier.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/filelock.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/freshness.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/gates.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/goal.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/gtk_native_driver.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/_ci_pin.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/config_drift.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/local_machine_identity.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/pr_churn.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/context.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/models.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/render.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/health/units.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/hooks.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/interactive.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/invariant_alarms.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/mac_native_driver.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/machine_fault.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/machine_metrics.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/machine_stats.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/models.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/network.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/notify.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/openapi.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/parentage.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/plans.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/progress.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/release_gate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/release_window.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/repo_dormancy.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/restart_cmd.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/self_health.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/smoke.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/smoke_tags.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/split_work.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/sql.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/state.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/store_parity.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/templates/deploy-cloudflare.node.yml +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/test_author.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/test_report.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/tui_pty_driver.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/uat_checks.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/usage.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/win_native_driver.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-backup.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-backup.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-dr-verify.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-dr-verify.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/ADR_COORD_TUI_CI.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/DATA_STORE_SELECTION.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/DISASTER_RECOVERY.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/install-agent.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/pyproject.toml +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/azure-workers/dr-down.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/azure-workers/dr-up.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/azure-workers/provision-server.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/azure-workers/throwaway-vm.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/extract-coord-tui.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/lib/provision-core.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/provision-machine.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/setup-macmini.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/verify-provision-noble.sh +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/setup.cfg +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/__init__.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/backends.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/conftest.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_approve_capability_reroute_3241.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_approved_work_2996.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_backup.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_bugbash.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_ci_github.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_claude_setup_token.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_ci.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_codegen.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_diagnose_capability_rules.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_diagnose_test_coverage.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_doctor_store_backend_3084.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_issues.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_serve_store_backend_3084.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_status_invariant_alarms.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_status_machine_fault.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_status_retried_3340.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_status_supervisor_3366.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_client.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_client_config_cache_atomic_3052.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_client_resource_migration_1946.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_config_drift_check.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_config_effective.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_dashboard_api.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_dashboard_server.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_db.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_deploy_db_backup_unit.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_deprecation_telemetry.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_dispatch_liveness.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_dispatch_workers.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_dr_azure_scripts.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_dr_promote.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_dr_verify.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_drive_machine_fault.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_drive_queue_max_parallel_config.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_drive_sessions_snapshot.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_events.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_failure_classifier.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_fix_escalation_classifier.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_generated_rust_requests.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_gtk_native_driver.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_coord_tui_ci_pin.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_pr_churn.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_health_wedged_drive_queue.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_housekeeping.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_init.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_interactive.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_invariant_alarms.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_mac_native_driver.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_machine_fault.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_machine_metrics.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_machine_stats.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_models.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_network.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_provision_core.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_provision_machine.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_py_rust_mirror_inventory.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_release_cordon_drain_stall_3336.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_release_gate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_repo_dormancy.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_repo_max_parallel_3423.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_restart_cmd.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_retry_escalation_classify_3360.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_serve_app.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_session.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_smoke_fanout_manifest_3333.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_split.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_state.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_throwaway_vm.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_tui_pty_driver.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_uat_checks.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_win_native_driver.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.551 → code_coordinator-0.5.553}/tests/write_parity.py +0 -0
|
@@ -427,6 +427,20 @@ class AcceptanceDriverConfig:
|
|
|
427
427
|
``pytest tests/acceptance/{ms}`` legitimately has no entry point, which
|
|
428
428
|
is exactly why #1175's blanket refusal only ever broke the Rust route.
|
|
429
429
|
|
|
430
|
+
#3509: the four Tier-2 lane kinds (:data:`TIER2_LANE_KINDS` —
|
|
431
|
+
``tui-pty``/``win-native``/``mac-native``/``gtk-native``) are the one
|
|
432
|
+
exception to "folded into the sealed set" above. Their ``entrypoint:``
|
|
433
|
+
is a smoke spec that ``coord bugbash`` (#3487) expects every fix to
|
|
434
|
+
GROW, with no independent ``test-author`` the way ``tests/acceptance/``
|
|
435
|
+
has one — full sealing made it impossible for a ``type="work"`` worker
|
|
436
|
+
to add the smoke-spec step its own fix is required to ship. See
|
|
437
|
+
:meth:`AcceptanceConfig.sealed_paths` and
|
|
438
|
+
:meth:`AcceptanceConfig.additive_only_entrypoints` for the derived sets,
|
|
439
|
+
and :func:`coord.review._lane_entrypoint_violation_lines` for the
|
|
440
|
+
mandatory (but narrower) rule that still applies: additions are
|
|
441
|
+
unrestricted, but removing or rewriting a pre-existing line is still a
|
|
442
|
+
mandatory ``request-changes``.
|
|
443
|
+
|
|
430
444
|
``match`` and ``routes`` implement #1125's in-repo path routing: a repo
|
|
431
445
|
entry with a non-empty ``routes`` list is a *router* — its own
|
|
432
446
|
``kind``/``run``/``mock``/``capability``/``setup``/``entrypoint`` are
|
|
@@ -469,6 +483,20 @@ class AcceptanceDriverConfig:
|
|
|
469
483
|
# directory without the trailing slash.
|
|
470
484
|
SEALED_ACCEPTANCE_DIR = "tests/acceptance/"
|
|
471
485
|
|
|
486
|
+
# #3509: the four Tier-2 (epic #3482) platform-lane acceptance driver kinds
|
|
487
|
+
# whose `entrypoint:` is a smoke spec `coord bugbash` (#3487) grows one step
|
|
488
|
+
# at a time, not an oracle a `test-author` writes once and a worker is
|
|
489
|
+
# graded against — see `AcceptanceConfig.sealed_paths`'s docstring for why
|
|
490
|
+
# that makes full sealing wrong for exactly these four kinds. Kept in sync
|
|
491
|
+
# with `coord.bugbash.LANE_DRIVER_KINDS` by hand rather than imported — the
|
|
492
|
+
# same hand-sync discipline `coord.acceptance_drivers.SUPPORTED_KINDS` and
|
|
493
|
+
# `coord.bugbash.LANE_DRIVER_KINDS` already use for each other, for the same
|
|
494
|
+
# reason: `coord.bugbash` deliberately takes a duck-typed `config: Any`
|
|
495
|
+
# rather than importing this (foundational, widely-imported) module, so
|
|
496
|
+
# this module returns the favor instead of introducing a config->feature
|
|
497
|
+
# dependency from the other side.
|
|
498
|
+
TIER2_LANE_KINDS = frozenset({"tui-pty", "win-native", "mac-native", "gtk-native"})
|
|
499
|
+
|
|
472
500
|
|
|
473
501
|
def entrypoint_sibling_acceptance_dir(entrypoint: str) -> str:
|
|
474
502
|
"""The ``acceptance/`` directory an entrypoint-linked driver ``include!``s
|
|
@@ -496,6 +524,27 @@ class AcceptanceConfig:
|
|
|
496
524
|
|
|
497
525
|
drivers: dict[str, AcceptanceDriverConfig] = field(default_factory=dict)
|
|
498
526
|
|
|
527
|
+
def _entrypoint_kind_pairs(self, repo_name: str) -> list[tuple[str, str]]:
|
|
528
|
+
"""``(entrypoint, kind)`` for every declared entrypoint of
|
|
529
|
+
*repo_name*, deduped on the entrypoint, declaration order preserved
|
|
530
|
+
— the one traversal :meth:`entrypoints`, :meth:`sealed_paths` and
|
|
531
|
+
(#3509) :meth:`additive_only_entrypoints` all build on, so "which
|
|
532
|
+
driver kind owns this entrypoint" is answered in exactly one place
|
|
533
|
+
rather than three copies of the same ``for cfg in [entry,
|
|
534
|
+
*entry.routes]`` walk silently drifting apart.
|
|
535
|
+
"""
|
|
536
|
+
entry = self.drivers.get(repo_name)
|
|
537
|
+
if entry is None:
|
|
538
|
+
return []
|
|
539
|
+
out: list[tuple[str, str]] = []
|
|
540
|
+
seen: set[str] = set()
|
|
541
|
+
for cfg in [entry, *entry.routes]:
|
|
542
|
+
ep = cfg.entrypoint.strip()
|
|
543
|
+
if ep and ep not in seen:
|
|
544
|
+
seen.add(ep)
|
|
545
|
+
out.append((ep, cfg.kind))
|
|
546
|
+
return out
|
|
547
|
+
|
|
499
548
|
def entrypoints(self, repo_name: str) -> list[str]:
|
|
500
549
|
"""Every ``entrypoint:`` declared by *repo_name*'s acceptance driver
|
|
501
550
|
(#1552), deduped, declaration order preserved.
|
|
@@ -508,16 +557,31 @@ class AcceptanceConfig:
|
|
|
508
557
|
flat repo contributes at most its own. Repos with no driver — and
|
|
509
558
|
drivers whose suite is directory-discovered (``cli-pytest``) —
|
|
510
559
|
return ``[]``.
|
|
560
|
+
|
|
561
|
+
Includes Tier-2 lane-kind entrypoints (:data:`TIER2_LANE_KINDS`) —
|
|
562
|
+
this is "every entrypoint the repo declares", not "every SEALED
|
|
563
|
+
entrypoint"; use :meth:`sealed_paths` for the sealed subset and
|
|
564
|
+
:meth:`additive_only_entrypoints` for the lane-kind one (#3509).
|
|
511
565
|
"""
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
566
|
+
return [ep for ep, _kind in self._entrypoint_kind_pairs(repo_name)]
|
|
567
|
+
|
|
568
|
+
def additive_only_entrypoints(self, repo_name: str) -> list[str]:
|
|
569
|
+
"""(#3509) The subset of :meth:`entrypoints` declared by a Tier-2
|
|
570
|
+
lane-kind driver (``tui-pty``/``win-native``/``mac-native``/
|
|
571
|
+
``gtk-native``, :data:`TIER2_LANE_KINDS`) — deliberately excluded
|
|
572
|
+
from :meth:`sealed_paths`, see that method's docstring for why.
|
|
573
|
+
|
|
574
|
+
These paths are not a free-for-all: :func:`coord.review
|
|
575
|
+
._lane_entrypoint_violation_lines` still mandatorily rejects a
|
|
576
|
+
``type="work"`` diff that removes or rewrites a pre-existing line in
|
|
577
|
+
one of them (a deleted step, a loosened ``expect_*`` field, a raised
|
|
578
|
+
latency budget, a shortened idle window) — only ADDING to them (a
|
|
579
|
+
new step, or a wholly new spec file beside them) is unrestricted.
|
|
580
|
+
"""
|
|
581
|
+
return [
|
|
582
|
+
ep for ep, kind in self._entrypoint_kind_pairs(repo_name)
|
|
583
|
+
if kind in TIER2_LANE_KINDS
|
|
584
|
+
]
|
|
521
585
|
|
|
522
586
|
def sealed_paths(self, repo_name: str) -> list[str]:
|
|
523
587
|
"""The full sealed-oracle path set for *repo_name* (#944 sealing v1,
|
|
@@ -554,11 +618,33 @@ class AcceptanceConfig:
|
|
|
554
618
|
standalone ``coord-tui`` repo's flat ``tests/acceptance.rs``) has
|
|
555
619
|
that sibling collapse onto ``SEALED_ACCEPTANCE_DIR`` itself — see the
|
|
556
620
|
dedup below.
|
|
621
|
+
|
|
622
|
+
#3509: a Tier-2 lane-kind entrypoint (:data:`TIER2_LANE_KINDS` —
|
|
623
|
+
``tui-pty``/``win-native``/``mac-native``/``gtk-native``) is
|
|
624
|
+
deliberately excluded from this set, entrypoint AND sibling dir
|
|
625
|
+
both. Those four kinds' ``entrypoint:`` is a smoke spec
|
|
626
|
+
``coord bugbash`` (#3487) files findings against on the acceptance
|
|
627
|
+
line "the fix must add a Tier-1 shared conformance scenario or a
|
|
628
|
+
Tier-2 smoke-spec step that fails first" — a regression ratchet
|
|
629
|
+
every fix is expected to GROW, with no independent author the way
|
|
630
|
+
``tests/acceptance/`` has one. Full sealing made that structurally
|
|
631
|
+
impossible: a ``type="work"`` diff adding the very step its own fix
|
|
632
|
+
requires tripped the same mandatory tamper banner as rewriting the
|
|
633
|
+
oracle it's graded against. Excluded here does not mean
|
|
634
|
+
unrestricted — :func:`coord.review._lane_entrypoint_violation_lines`
|
|
635
|
+
(fed by :meth:`additive_only_entrypoints`) still mandatorily rejects
|
|
636
|
+
a diff that removes or weakens a pre-existing line in one of these
|
|
637
|
+
files; only growing them is unconstrained. ``tui-tuidriver`` and
|
|
638
|
+
``cli-pytest`` are unaffected — neither kind is in
|
|
639
|
+
:data:`TIER2_LANE_KINDS`, so their entrypoints stay fully sealed
|
|
640
|
+
exactly as before.
|
|
557
641
|
"""
|
|
558
642
|
if not self.has_driver(repo_name):
|
|
559
643
|
return []
|
|
560
644
|
out = [SEALED_ACCEPTANCE_DIR]
|
|
561
|
-
for ep in self.
|
|
645
|
+
for ep, kind in self._entrypoint_kind_pairs(repo_name):
|
|
646
|
+
if kind in TIER2_LANE_KINDS:
|
|
647
|
+
continue
|
|
562
648
|
if ep not in out:
|
|
563
649
|
out.append(ep)
|
|
564
650
|
sibling = entrypoint_sibling_acceptance_dir(ep)
|
|
@@ -3908,10 +3994,15 @@ def _parse_acceptance_routes(
|
|
|
3908
3994
|
def _acceptance_entrypoint(entry: dict, label: str) -> str:
|
|
3909
3995
|
"""Validate an acceptance driver's optional ``entrypoint:`` (#1552).
|
|
3910
3996
|
|
|
3911
|
-
Must be a repo-root-relative *file* path —
|
|
3912
|
-
set as an exact-match entry
|
|
3913
|
-
an absolute path or a
|
|
3914
|
-
|
|
3997
|
+
Must be a repo-root-relative *file* path — for most ``kind`` values it
|
|
3998
|
+
is folded into the sealed set as an exact-match entry
|
|
3999
|
+
(:meth:`AcceptanceConfig.sealed_paths`), so an absolute path or a
|
|
4000
|
+
trailing-slash directory would silently seal nothing at all. (#3509:
|
|
4001
|
+
the four Tier-2 lane kinds in :data:`TIER2_LANE_KINDS` are the one
|
|
4002
|
+
exception — their entrypoint is additive-only, not sealed — but the
|
|
4003
|
+
same validation still applies: a malformed path there would just as
|
|
4004
|
+
silently defeat :meth:`AcceptanceConfig.additive_only_entrypoints`.)
|
|
4005
|
+
Reject both malformations here rather than at review time, where the
|
|
3915
4006
|
only symptom would be a `test-author` bounced for a scope violation it
|
|
3916
4007
|
cannot fix.
|
|
3917
4008
|
"""
|
|
@@ -69,6 +69,7 @@ import io
|
|
|
69
69
|
import json
|
|
70
70
|
import re
|
|
71
71
|
import time
|
|
72
|
+
import zipfile
|
|
72
73
|
from collections.abc import Callable, Iterable, Mapping, Sequence
|
|
73
74
|
from dataclasses import dataclass, field
|
|
74
75
|
from datetime import datetime, timezone
|
|
@@ -4995,6 +4996,39 @@ def _xlsx_cell(value: Any, meta: Mapping[str, Any] | None = None) -> Any:
|
|
|
4995
4996
|
return str(value)
|
|
4996
4997
|
|
|
4997
4998
|
|
|
4999
|
+
#: Fixed stamp used in place of "now" everywhere `result_to_xlsx` would
|
|
5000
|
+
#: otherwise embed a save-time timestamp: `openpyxl` stamps
|
|
5001
|
+
#: `docProps/core.xml` (`created`/`modified`) and every zip entry's
|
|
5002
|
+
#: `date_time` with the wall-clock time *at save*, at one-second
|
|
5003
|
+
#: resolution — so two saves of the identical report that straddle a
|
|
5004
|
+
#: second boundary produce different bytes (#3500). Pinning both to this
|
|
5005
|
+
#: constant (the oldest timestamp the zip format can represent) makes
|
|
5006
|
+
#: `result_to_xlsx` a pure function of its input: identical reports produce
|
|
5007
|
+
#: byte-identical files, so they can be diffed.
|
|
5008
|
+
_XLSX_FIXED_STAMP = datetime(1980, 1, 1, 0, 0, 0)
|
|
5009
|
+
|
|
5010
|
+
|
|
5011
|
+
def _zero_xlsx_zip_timestamps(data: bytes) -> bytes:
|
|
5012
|
+
"""Rewrite every zip entry's `date_time` in a saved `.xlsx` to the fixed
|
|
5013
|
+
stamp, leaving contents untouched. `openpyxl` has no option to pin this
|
|
5014
|
+
itself, so it has to be done as a post-processing pass over the bytes
|
|
5015
|
+
it produced (#3500)."""
|
|
5016
|
+
stamp = _XLSX_FIXED_STAMP.timetuple()[:6]
|
|
5017
|
+
src = io.BytesIO(data)
|
|
5018
|
+
dst = io.BytesIO()
|
|
5019
|
+
with (
|
|
5020
|
+
zipfile.ZipFile(src, "r") as zin,
|
|
5021
|
+
zipfile.ZipFile(dst, "w", zipfile.ZIP_DEFLATED) as zout,
|
|
5022
|
+
):
|
|
5023
|
+
for item in zin.infolist():
|
|
5024
|
+
payload = zin.read(item.filename)
|
|
5025
|
+
info = zipfile.ZipInfo(item.filename, date_time=stamp)
|
|
5026
|
+
info.compress_type = item.compress_type
|
|
5027
|
+
info.external_attr = item.external_attr
|
|
5028
|
+
zout.writestr(info, payload)
|
|
5029
|
+
return dst.getvalue()
|
|
5030
|
+
|
|
5031
|
+
|
|
4998
5032
|
def result_to_xlsx(result: "ReportResult | Mapping[str, Any]") -> bytes:
|
|
4999
5033
|
"""Serialise a :class:`ReportResult` as an ``.xlsx`` workbook.
|
|
5000
5034
|
|
|
@@ -5033,6 +5067,12 @@ def result_to_xlsx(result: "ReportResult | Mapping[str, Any]") -> bytes:
|
|
|
5033
5067
|
totals = data.get("totals")
|
|
5034
5068
|
|
|
5035
5069
|
wb = Workbook()
|
|
5070
|
+
# openpyxl otherwise stamps docProps/core.xml with wall-clock "now" at
|
|
5071
|
+
# save, which makes two saves of the same report byte-unequal whenever
|
|
5072
|
+
# they straddle a second boundary (#3500). Pin both to a fixed stamp so
|
|
5073
|
+
# `result_to_xlsx` is a pure function of `result`.
|
|
5074
|
+
wb.properties.created = _XLSX_FIXED_STAMP
|
|
5075
|
+
wb.properties.modified = _XLSX_FIXED_STAMP
|
|
5036
5076
|
sheet = wb.active
|
|
5037
5077
|
sheet.title = "Report"
|
|
5038
5078
|
if columns:
|
|
@@ -5064,7 +5104,7 @@ def result_to_xlsx(result: "ReportResult | Mapping[str, Any]") -> bytes:
|
|
|
5064
5104
|
|
|
5065
5105
|
buf = io.BytesIO()
|
|
5066
5106
|
wb.save(buf)
|
|
5067
|
-
return buf.getvalue()
|
|
5107
|
+
return _zero_xlsx_zip_timestamps(buf.getvalue())
|
|
5068
5108
|
|
|
5069
5109
|
|
|
5070
5110
|
def xlsx_filename(result: "ReportResult | Mapping[str, Any]") -> str:
|
|
@@ -1475,6 +1475,108 @@ def _diff_paths_outside_sealed(diff_text: str, sealed_paths: list[str]) -> list[
|
|
|
1475
1475
|
)
|
|
1476
1476
|
|
|
1477
1477
|
|
|
1478
|
+
_DIFF_GIT_HEADER_RE = re.compile(r"^diff --git a/(.*) b/(.*)$")
|
|
1479
|
+
|
|
1480
|
+
|
|
1481
|
+
def _diff_removed_content_lines(diff_text: str, path: str) -> list[str]:
|
|
1482
|
+
"""Removed (``-``) content lines touching *path* in *diff_text* (#3509).
|
|
1483
|
+
|
|
1484
|
+
Scoped to the ``diff --git`` block(s) whose ``a/``/``b/`` side names
|
|
1485
|
+
*path* exactly, so an unrelated file's deletions elsewhere in a
|
|
1486
|
+
multi-file diff never leak in — mirrors
|
|
1487
|
+
:func:`_sealed_to_sealed_rename_exemptions`'s per-block scoping, just
|
|
1488
|
+
walking line-by-line instead of regex-splitting the whole diff, since
|
|
1489
|
+
callers here want ordered content, not just a yes/no per sealed prefix.
|
|
1490
|
+
Excludes diff/hunk header noise (``--- a/X``, ``+++ b/X``, ``@@ ... @@``)
|
|
1491
|
+
— only a line starting with a single ``-`` is a real removed line.
|
|
1492
|
+
|
|
1493
|
+
A wholly new file has no removed lines by construction: a ``+++
|
|
1494
|
+
b/path`` hunk against ``/dev/null`` is 100% ``+`` lines. A pure rename
|
|
1495
|
+
with no content change has none either (nothing in the renamed block is
|
|
1496
|
+
a ``-``/``+`` content line at all). So this returns ``[]`` for both —
|
|
1497
|
+
exactly the cases #3509 calls "unrestricted growth", never flagged.
|
|
1498
|
+
"""
|
|
1499
|
+
removed: list[str] = []
|
|
1500
|
+
in_block = False
|
|
1501
|
+
for line in diff_text.splitlines():
|
|
1502
|
+
header = _DIFF_GIT_HEADER_RE.match(line)
|
|
1503
|
+
if header is not None:
|
|
1504
|
+
in_block = path in (header.group(1), header.group(2))
|
|
1505
|
+
continue
|
|
1506
|
+
if not in_block:
|
|
1507
|
+
continue
|
|
1508
|
+
if line.startswith("-") and not line.startswith("---"):
|
|
1509
|
+
removed.append(line[1:])
|
|
1510
|
+
return removed
|
|
1511
|
+
|
|
1512
|
+
|
|
1513
|
+
def _lane_entrypoint_violation_lines(
|
|
1514
|
+
diff_text: str | None,
|
|
1515
|
+
additive_only_entrypoints: list[str] | None,
|
|
1516
|
+
) -> tuple[list[str] | None, list[str]]:
|
|
1517
|
+
"""(#3509) Detect a MANDATORY violation of a Tier-2 lane-kind
|
|
1518
|
+
(``tui-pty``/``win-native``/``mac-native``/``gtk-native``) smoke-spec
|
|
1519
|
+
entry point's additive-only rule.
|
|
1520
|
+
|
|
1521
|
+
Unlike ``tests/acceptance/`` and the ``tui-tuidriver``/``cli-pytest``
|
|
1522
|
+
entry points, *additive_only_entrypoints*
|
|
1523
|
+
(:meth:`coord.config.AcceptanceConfig.additive_only_entrypoints` —
|
|
1524
|
+
deliberately excluded from :meth:`coord.config.AcceptanceConfig.
|
|
1525
|
+
sealed_paths` by #3509) is not sealed: a diff may add new steps, or
|
|
1526
|
+
whole new spec files beside it, freely. What it must never do is remove
|
|
1527
|
+
or rewrite a line that already existed — ``coord bugbash``'s whole
|
|
1528
|
+
ratchet (#3487) depends on every fix GROWING the smoke spec, never
|
|
1529
|
+
shrinking it, so a fix that "passes" by deleting the step it should
|
|
1530
|
+
have made pass instead (or loosening an ``expect_*`` field, raising a
|
|
1531
|
+
latency budget, shortening an idle window — all of which read,
|
|
1532
|
+
textually, as a removed line) must be rejected exactly as hard as an
|
|
1533
|
+
outright deletion.
|
|
1534
|
+
|
|
1535
|
+
Detection is deliberately conservative and line-based, not
|
|
1536
|
+
YAML-semantic: ANY removed content line inside one of these files
|
|
1537
|
+
(:func:`_diff_removed_content_lines`) is treated as a violation — the
|
|
1538
|
+
same "anything beyond pure addition is suspect" shape the existing
|
|
1539
|
+
test-author entry-point "additive registration only" guidance already
|
|
1540
|
+
uses (see ``build_review_briefing``'s ``sealed_entrypoints`` branch).
|
|
1541
|
+
The difference here is this one is MANDATORY and applies to every
|
|
1542
|
+
assignment type, not just advisory text for a browsing reviewer: there
|
|
1543
|
+
is no independent author ever expected to revisit this file, so a
|
|
1544
|
+
false negative here is permanent, not caught at a later authoring step.
|
|
1545
|
+
|
|
1546
|
+
Returns ``(touched_paths, banner_lines)`` the moment a removal is found
|
|
1547
|
+
in any entry, else ``(None, [])`` — including when
|
|
1548
|
+
*additive_only_entrypoints* is empty, *diff_text* is empty, or every
|
|
1549
|
+
touch is purely additive (a brand-new file, or only ``+`` lines
|
|
1550
|
+
appended to an existing one).
|
|
1551
|
+
"""
|
|
1552
|
+
if not additive_only_entrypoints or not diff_text:
|
|
1553
|
+
return None, []
|
|
1554
|
+
touched = [
|
|
1555
|
+
p for p in additive_only_entrypoints
|
|
1556
|
+
if _diff_removed_content_lines(diff_text, p)
|
|
1557
|
+
]
|
|
1558
|
+
if not touched:
|
|
1559
|
+
return None, []
|
|
1560
|
+
lines = [
|
|
1561
|
+
"## \U0001f6a8 SMOKE-SPEC ENTRY POINT WEAKENED",
|
|
1562
|
+
"",
|
|
1563
|
+
(
|
|
1564
|
+
"The diff removes or rewrites existing line(s) in this repo's "
|
|
1565
|
+
"Tier-2 lane smoke-spec entry point: "
|
|
1566
|
+
+ ", ".join(f"`{p}`" for p in touched)
|
|
1567
|
+
+ " (#3509). This file is additive-only: new steps and new spec "
|
|
1568
|
+
"files beside it are expected and welcome, but deleting or "
|
|
1569
|
+
"weakening an existing step — a removed step, a removed or "
|
|
1570
|
+
"loosened `expect_*` field, a raised latency budget, a "
|
|
1571
|
+
"shortened idle window — defeats the whole point of `coord "
|
|
1572
|
+
"bugbash`'s regression ratchet (#3487): every fix is expected "
|
|
1573
|
+
"to grow this spec, never shrink it. **request-changes is "
|
|
1574
|
+
"mandatory here**, regardless of anything else in this diff."
|
|
1575
|
+
),
|
|
1576
|
+
]
|
|
1577
|
+
return touched, lines
|
|
1578
|
+
|
|
1579
|
+
|
|
1478
1580
|
# ── #3180: mandatory-verdict detection, shared by the briefing text AND the
|
|
1479
1581
|
# dispatch-time mechanical short-circuit ────────────────────────────────────
|
|
1480
1582
|
#
|
|
@@ -1597,17 +1699,24 @@ def _mechanical_mandatory_verdict(
|
|
|
1597
1699
|
sealed_paths: list[str] | None,
|
|
1598
1700
|
sealed_entrypoints: list[str] | None,
|
|
1599
1701
|
coordinator_doc_paths: list[str] | None,
|
|
1702
|
+
additive_only_entrypoints: list[str] | None = None,
|
|
1600
1703
|
) -> tuple[str, list[str], list[str]] | None:
|
|
1601
1704
|
"""(#3180) The single check `dispatch_review` runs BEFORE spending a
|
|
1602
1705
|
review leg: does this diff already, mechanically, trip a MANDATORY
|
|
1603
1706
|
request-changes rule?
|
|
1604
1707
|
|
|
1605
1708
|
Checks the coordinator-doc rule first (it never inverts by assignment
|
|
1606
|
-
type, per `build_review_briefing`'s docstring)
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1709
|
+
type, per `build_review_briefing`'s docstring), then the sealed-path
|
|
1710
|
+
rule (which does invert for `SEALED_PATH_AUTHOR_TYPES`), then (#3509)
|
|
1711
|
+
the Tier-2 lane-kind additive-only rule — a `*additive_only_entrypoints*`
|
|
1712
|
+
path is never in `sealed_paths`, so a diff confined to one never trips
|
|
1713
|
+
the sealed-path check above; this is the only check standing between it
|
|
1714
|
+
and a worker silently deleting the smoke-spec step its own fix should
|
|
1715
|
+
have made pass. Returns ``(kind, touched_paths, banner_lines)`` — *kind*
|
|
1716
|
+
is ``"coordinator_doc"``, ``"sealed_path"``, or
|
|
1717
|
+
``"lane_entrypoint_weakened"``, used only to label the mechanical
|
|
1718
|
+
verdict's own ``verdict_source_reason`` — the instant any of the three
|
|
1719
|
+
fires, else ``None``.
|
|
1611
1720
|
"""
|
|
1612
1721
|
touched_docs, doc_lines = _coordinator_doc_violation_lines(
|
|
1613
1722
|
diff_text, coordinator_doc_paths
|
|
@@ -1619,6 +1728,11 @@ def _mechanical_mandatory_verdict(
|
|
|
1619
1728
|
)
|
|
1620
1729
|
if touched_sealed:
|
|
1621
1730
|
return "sealed_path", touched_sealed, sealed_lines
|
|
1731
|
+
touched_lane, lane_lines = _lane_entrypoint_violation_lines(
|
|
1732
|
+
diff_text, additive_only_entrypoints
|
|
1733
|
+
)
|
|
1734
|
+
if touched_lane:
|
|
1735
|
+
return "lane_entrypoint_weakened", touched_lane, lane_lines
|
|
1622
1736
|
return None
|
|
1623
1737
|
|
|
1624
1738
|
|
|
@@ -1920,6 +2034,7 @@ def build_review_briefing(
|
|
|
1920
2034
|
diff_text: str | None = None,
|
|
1921
2035
|
sealed_paths: list[str] | None = None,
|
|
1922
2036
|
sealed_entrypoints: list[str] | None = None,
|
|
2037
|
+
additive_only_entrypoints: list[str] | None = None,
|
|
1923
2038
|
coordinator_doc_paths: list[str] | None = None,
|
|
1924
2039
|
assignment_type: str = "work",
|
|
1925
2040
|
provider_same_as_worker: bool = False,
|
|
@@ -2001,6 +2116,19 @@ def build_review_briefing(
|
|
|
2001
2116
|
the original rule unchanged: any touch to *sealed_paths* is mandatory
|
|
2002
2117
|
``request-changes``.
|
|
2003
2118
|
|
|
2119
|
+
*additive_only_entrypoints* (#3509) is the Tier-2 lane-kind subset
|
|
2120
|
+
(``tui-pty``/``win-native``/``mac-native``/``gtk-native``,
|
|
2121
|
+
:meth:`coord.config.AcceptanceConfig.additive_only_entrypoints`) that is
|
|
2122
|
+
deliberately NOT part of *sealed_paths* at all — a work diff may add new
|
|
2123
|
+
steps, or whole new spec files beside one, freely. Unlike
|
|
2124
|
+
*sealed_entrypoints*'s advisory-only guidance above, this one IS
|
|
2125
|
+
mechanically enforced (:func:`_lane_entrypoint_violation_lines`, applied
|
|
2126
|
+
for every assignment type, not just non-authors): a diff that removes or
|
|
2127
|
+
rewrites a pre-existing line in one of these files gets the same
|
|
2128
|
+
mandatory ``request-changes`` banner a sealed-path tamper would,
|
|
2129
|
+
regardless of *assignment_type* — see that function's docstring for why
|
|
2130
|
+
there is no "the author's job is to write here" inversion for this one.
|
|
2131
|
+
|
|
2004
2132
|
*coordinator_doc_paths* (#2966) is the repo's coordinator-owned doc set —
|
|
2005
2133
|
:func:`coord.models.coordinator_owned_docs`, the repo's own CLAUDE.md plus
|
|
2006
2134
|
anything it additionally lists under ``coordinator_only_files``. CLAUDE.md
|
|
@@ -2319,6 +2447,43 @@ def build_review_briefing(
|
|
|
2319
2447
|
"this is a hard rule, not a suggestion (docs/ORACLE_LOOP.md)."
|
|
2320
2448
|
)
|
|
2321
2449
|
|
|
2450
|
+
if additive_only_entrypoints:
|
|
2451
|
+
# #3509: unlike sealed_paths above, this one applies to EVERY
|
|
2452
|
+
# assignment type the same way — there is no "the author's job is
|
|
2453
|
+
# to write here" inversion, since no assignment type's job is ever
|
|
2454
|
+
# editing an existing step. Computed via the same helper
|
|
2455
|
+
# `dispatch_review`'s mechanical short-circuit uses — see
|
|
2456
|
+
# `_lane_entrypoint_violation_lines`'s docstring.
|
|
2457
|
+
lines.append("")
|
|
2458
|
+
_weakened_paths, _weakened_lines = _lane_entrypoint_violation_lines(
|
|
2459
|
+
diff_text, additive_only_entrypoints
|
|
2460
|
+
)
|
|
2461
|
+
if _weakened_paths:
|
|
2462
|
+
lines.extend(_weakened_lines)
|
|
2463
|
+
else:
|
|
2464
|
+
lines.append("## Smoke-spec entry point — additive only, not sealed")
|
|
2465
|
+
lines.append("")
|
|
2466
|
+
lines.append(
|
|
2467
|
+
", ".join(f"`{p}`" for p in additive_only_entrypoints)
|
|
2468
|
+
+ " is this repo's Tier-2 lane-kind acceptance driver entry "
|
|
2469
|
+
"point (#3509) — a `coord bugbash` (#3487) smoke spec every "
|
|
2470
|
+
"fix is expected to grow, not a sealed oracle. Do **not** "
|
|
2471
|
+
"request-changes solely because this diff adds new steps or "
|
|
2472
|
+
"new spec files beside it — that is expected and welcome."
|
|
2473
|
+
)
|
|
2474
|
+
lines.append("")
|
|
2475
|
+
lines.append(
|
|
2476
|
+
"- **Expected, do NOT flag:** new steps, or new spec files "
|
|
2477
|
+
"beside this entry point."
|
|
2478
|
+
)
|
|
2479
|
+
lines.append(
|
|
2480
|
+
"- **request-changes:** the diff removes or rewrites an "
|
|
2481
|
+
"existing step, loosens an `expect_*` field, raises a "
|
|
2482
|
+
"latency budget, or shortens an idle window — any of which "
|
|
2483
|
+
"weakens a regression check `coord bugbash` already "
|
|
2484
|
+
"depends on."
|
|
2485
|
+
)
|
|
2486
|
+
|
|
2322
2487
|
if coordinator_doc_paths:
|
|
2323
2488
|
# #2966: "only the coordinator writes docs" was prose-only — nothing
|
|
2324
2489
|
# backstopped it structurally, and two workers independently
|
|
@@ -2949,6 +3114,7 @@ def _record_mechanical_review_verdict(
|
|
|
2949
3114
|
kind_label = {
|
|
2950
3115
|
"coordinator_doc": "coordinator-owned doc(s) edited",
|
|
2951
3116
|
"sealed_path": "sealed path(s) violated",
|
|
3117
|
+
"lane_entrypoint_weakened": "Tier-2 lane smoke-spec entry point weakened",
|
|
2952
3118
|
}.get(kind, kind)
|
|
2953
3119
|
touched_str = ", ".join(touched_paths)
|
|
2954
3120
|
reason = f"{kind_label}: {touched_str}"
|
|
@@ -3642,7 +3808,16 @@ def dispatch_review(
|
|
|
3642
3808
|
# bounced, or leave it unwired and ship dead code. Each route now
|
|
3643
3809
|
# declares its own `entrypoint:`.
|
|
3644
3810
|
sealed_paths = config.acceptance.sealed_paths(completed.repo_name)
|
|
3645
|
-
sealed_entrypoints =
|
|
3811
|
+
sealed_entrypoints = [
|
|
3812
|
+
ep for ep in config.acceptance.entrypoints(completed.repo_name)
|
|
3813
|
+
if ep in sealed_paths
|
|
3814
|
+
]
|
|
3815
|
+
# #3509: the Tier-2 lane-kind entrypoints EXCLUDED from sealed_paths
|
|
3816
|
+
# above — additive-only, mechanically enforced by
|
|
3817
|
+
# `_lane_entrypoint_violation_lines` instead of the sealed-path rule.
|
|
3818
|
+
additive_only_entrypoints = config.acceptance.additive_only_entrypoints(
|
|
3819
|
+
completed.repo_name
|
|
3820
|
+
)
|
|
3646
3821
|
|
|
3647
3822
|
# #2966: coordinator-owned docs (repo's own CLAUDE.md plus anything it
|
|
3648
3823
|
# additionally lists under coordinator_only_files) — see
|
|
@@ -3713,6 +3888,7 @@ def dispatch_review(
|
|
|
3713
3888
|
sealed_paths=sealed_paths,
|
|
3714
3889
|
sealed_entrypoints=sealed_entrypoints,
|
|
3715
3890
|
coordinator_doc_paths=coordinator_doc_paths,
|
|
3891
|
+
additive_only_entrypoints=additive_only_entrypoints,
|
|
3716
3892
|
)
|
|
3717
3893
|
if _mechanical is not None:
|
|
3718
3894
|
mech_kind, mech_touched, mech_lines = _mechanical
|
|
@@ -3814,6 +3990,7 @@ def dispatch_review(
|
|
|
3814
3990
|
diff_text=diff_text,
|
|
3815
3991
|
sealed_paths=sealed_paths,
|
|
3816
3992
|
sealed_entrypoints=sealed_entrypoints,
|
|
3993
|
+
additive_only_entrypoints=additive_only_entrypoints,
|
|
3817
3994
|
coordinator_doc_paths=coordinator_doc_paths,
|
|
3818
3995
|
assignment_type=completed.type,
|
|
3819
3996
|
completion_summary=completed.completion_summary,
|
|
@@ -2952,3 +2952,23 @@ class TestTailscaleSelfDnsCache:
|
|
|
2952
2952
|
resolved = resolve_local_machine(cfg)
|
|
2953
2953
|
assert resolved is not None
|
|
2954
2954
|
assert resolved.name == "macmini"
|
|
2955
|
+
|
|
2956
|
+
|
|
2957
|
+
# ── #3509: Tier-2 lane-kind entrypoints are additive-only, not sealed ───────
|
|
2958
|
+
#
|
|
2959
|
+
# Full behavioral coverage (sealed_paths/additive_only_entrypoints across
|
|
2960
|
+
# flat and routed drivers) lives in tests/test_config_acceptance.py, which is
|
|
2961
|
+
# where every existing sealed_paths/entrypoint test for AcceptanceConfig
|
|
2962
|
+
# already lives (that file's own docstring: "Tests for the `acceptance:`
|
|
2963
|
+
# block in coordinator.yml") — this is just the constant-level smoke test
|
|
2964
|
+
# for the file this issue names explicitly.
|
|
2965
|
+
|
|
2966
|
+
|
|
2967
|
+
def test_tier2_lane_kinds_constant_matches_bugbash_lane_driver_kinds() -> None:
|
|
2968
|
+
"""coord.config.TIER2_LANE_KINDS is hand-synced with
|
|
2969
|
+
coord.bugbash.LANE_DRIVER_KINDS by design (coord.bugbash deliberately
|
|
2970
|
+
avoids importing coord.config — see TIER2_LANE_KINDS's own comment) —
|
|
2971
|
+
this test is the thing that notices if the two ever drift apart."""
|
|
2972
|
+
from coord.bugbash import LANE_DRIVER_KINDS
|
|
2973
|
+
|
|
2974
|
+
assert coord_config.TIER2_LANE_KINDS == frozenset(LANE_DRIVER_KINDS)
|