code-coordinator 0.5.266__tar.gz → 0.5.268__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.266 → code_coordinator-0.5.268}/PKG-INFO +1 -1
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/board_wire.py +131 -18
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/drive.py +117 -8
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/drive_queue.py +23 -9
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/drive_state.py +25 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/serve_app.py +39 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/codegen.py +22 -7
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_board_read_path.py +8 -7
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_board_wire.py +96 -6
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_drive.py +65 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_drive_queue.py +17 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_drive_state.py +38 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/data.rs +31 -16
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/drive_queue.rs +34 -8
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/pipeline.rs +33 -12
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/sessions.rs +31 -2
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/settings_ui.rs +8 -5
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/tests.rs +304 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/types/generated.rs +9 -6
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/.gitignore +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/CLAUDE.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/GOAL.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/LICENSE +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/MANIFEST.in +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/README.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/__init__.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/agent.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/audit.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/block_log.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/board_service.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/brain.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/claim.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/cli.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/client.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/comments.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/config.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/dao.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/db.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/decomposition_chat.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/deps.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/events.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/filelock.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/freshness.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/gates.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/goal.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/context.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/models.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/render.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/health/units.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/hooks.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/interactive.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/models.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/network.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/notify.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/openapi.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/parentage.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/plans.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/progress.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/release_window.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/reports.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/review.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/self_health.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/smoke.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/split_work.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/sql.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/state.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/test_author.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/test_report.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/usage.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/install-agent.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/pyproject.toml +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/setup.cfg +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/__init__.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-67/contract.md +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-67/manifest.yml +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/conftest.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_config.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_db.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_decomposition_chat.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_events.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_init.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_models.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_network.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_review.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_session.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_split.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_state.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/approved.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.266 → code_coordinator-0.5.268}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -15,14 +15,12 @@ This module is the single place the per-field wire policy lives:
|
|
|
15
15
|
with ``<field>_truncated: true`` (+ ``<field>_len``). Consumers that need
|
|
16
16
|
the full text (fix-worker briefings, the TUI findings pane) fetch the
|
|
17
17
|
single-resource detail endpoint ``GET /assignment/{id}``.
|
|
18
|
-
* **Bounded documents** — ``
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
body (see :func:`bound_issue_row`); GitHub's own 64 KB issue-body limit ×
|
|
25
|
-
the handful of epics per board keeps the exemption bounded. Full body:
|
|
18
|
+
* **Bounded documents** — ``test_plan`` — get a *high* hard cap that today
|
|
19
|
+
truncates nothing real but bounds the pathological row, because clients
|
|
20
|
+
parse these semantically and an aggressive prefix cut would break those
|
|
21
|
+
parses.
|
|
22
|
+
* **``issues.body`` is not on the collection wire at all** (#1939), except
|
|
23
|
+
for tracking (epic) issues. See :func:`bound_issue_row`. Full body:
|
|
26
24
|
``GET /issue/{repo}/{number}``.
|
|
27
25
|
|
|
28
26
|
Everything here is wire-only: the DB row, the detail endpoints, and local
|
|
@@ -49,6 +47,24 @@ issues outright, on top of the existing per-field width caps. Both cuts are
|
|
|
49
47
|
flagged on the payload (``board_truncated`` + counts) so a client can tell
|
|
50
48
|
it received a trimmed board rather than the whole history — see
|
|
51
49
|
:func:`bound_board_payload`.
|
|
50
|
+
|
|
51
|
+
**#1939 (instance #5): the 16 KB body cap bounded the pathological row and
|
|
52
|
+
nothing else.** #1337 gave ``issues.body`` a *document* cap high enough that
|
|
53
|
+
it truncates no real issue (p99 ≈ 9 KB against a 16 KB cap), and #1791 then
|
|
54
|
+
dropped the body of *closed* issues outright. What was left — every **open,
|
|
55
|
+
non-epic** body, shipped whole on every uncached poll — was still 1.44 MB of
|
|
56
|
+
a 1.69 MB issue-body payload measured on the live board, for a field that is
|
|
57
|
+
display material, not something a collection *view* renders directly: the
|
|
58
|
+
TUI reads it lazily, on demand, through several panes that share the same
|
|
59
|
+
``issue_detail_cache`` / ``GET /issue/{repo}/{number}`` hydration path (the
|
|
60
|
+
Board and Pipeline Issue tabs since #2497; the Drive/Merge Queue tab's
|
|
61
|
+
issue-detail pane and the "Chat about issue" briefing as of this fix) rather
|
|
62
|
+
than each parsing the wire body eagerly. Do not assume the Board/Pipeline
|
|
63
|
+
tabs are the only consumers when touching this policy again — check every
|
|
64
|
+
Rust call site of ``OpenIssue.body`` / ``PipelineIssue.body`` first. So the
|
|
65
|
+
body now leaves the collection wire for open issues too, and
|
|
66
|
+
:func:`bound_issue_row` keeps only the machine-parsed *residue* a client
|
|
67
|
+
cannot re-fetch in time — see :data:`ALLOWED_GLOB_MARKER`.
|
|
52
68
|
"""
|
|
53
69
|
|
|
54
70
|
from __future__ import annotations
|
|
@@ -88,6 +104,27 @@ BOARD_PAYLOAD_BYTE_BUDGET = 2_500_000
|
|
|
88
104
|
# (TUI pane, dialog) knows it is one — machine consumers use the flags.
|
|
89
105
|
TRUNCATION_NOTICE = "\n… [truncated on the /board wire — full text: detail endpoint]"
|
|
90
106
|
|
|
107
|
+
# #1939: the ONE line-level marker a thin client parses out of a non-epic
|
|
108
|
+
# issue body *synchronously*, without a user action that could wait for a
|
|
109
|
+
# detail fetch — `tui/src/app/pipeline.rs`'s
|
|
110
|
+
# `parse_allowed_globs_from_issue_body` MARKER, read by
|
|
111
|
+
# `acceptance_for_path_arg` while handling a Pipeline right-click dispatch on
|
|
112
|
+
# a repo with more than one acceptance route (`claude-coordinator` itself has
|
|
113
|
+
# two: `coord/**` and `tui/**`). Lines carrying it survive the body cut; see
|
|
114
|
+
# `_machine_readable_residue`. Kept in sync with the Rust side by
|
|
115
|
+
# tests/test_board_wire.py::test_allowed_glob_marker_matches_the_rust_parser,
|
|
116
|
+
# the same cross-language guard posture as coord/board_bool_guard.py.
|
|
117
|
+
#
|
|
118
|
+
# Measured cost of the retention: ZERO on today's live board — 0 of 781
|
|
119
|
+
# issue bodies carry the marker (the house `## Files` convention is a bare
|
|
120
|
+
# backticked-path list, which that parser does not read), so the residue is
|
|
121
|
+
# empty for every real row and the byte win below is unaffected. It is kept
|
|
122
|
+
# anyway because the marker IS the documented spelling
|
|
123
|
+
# (`parse_allowed_globs_from_issue_body`'s own tests use it) and a body that
|
|
124
|
+
# adopts it must keep resolving `--for-path` from the Pipeline right-click
|
|
125
|
+
# rather than silently degrading to "dispatch from the CLI instead".
|
|
126
|
+
ALLOWED_GLOB_MARKER = "**Allowed:**"
|
|
127
|
+
|
|
91
128
|
|
|
92
129
|
def _preview(text: str, cap: int) -> str:
|
|
93
130
|
return text[:cap] + TRUNCATION_NOTICE
|
|
@@ -150,8 +187,31 @@ def _bound_test_plan(row: dict, cap: int) -> None:
|
|
|
150
187
|
row["test_plan"] = None
|
|
151
188
|
|
|
152
189
|
|
|
190
|
+
#: table → every field this module may stamp ``<field>_truncated`` /
|
|
191
|
+
#: ``<field>_len`` onto. Those flags are **wire-only**: they are not DB
|
|
192
|
+
#: columns, so they are deliberately absent from the DTOs in
|
|
193
|
+
#: ``coord/board_schema.py`` (whose rule — "a column not declared here is not
|
|
194
|
+
#: on the wire" — is about *columns*). They are still on the wire, so
|
|
195
|
+
#: ``coord/serve_app.py``'s ``_board_payload_schema`` publishes them off this
|
|
196
|
+
#: table; before #1939 made issue-body bounding unconditional they fired
|
|
197
|
+
#: rarely enough that ``/openapi.json`` never had to admit they existed.
|
|
198
|
+
BOUNDED_TEXT_FIELDS: dict[str, tuple[str, ...]] = {
|
|
199
|
+
"assignments": (
|
|
200
|
+
"review_findings",
|
|
201
|
+
"test_reason",
|
|
202
|
+
"smoke_test_reason",
|
|
203
|
+
"failure_reason",
|
|
204
|
+
"test_plan",
|
|
205
|
+
),
|
|
206
|
+
"issues": ("body",),
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
|
|
153
210
|
def bound_assignment_row(row: dict) -> None:
|
|
154
|
-
"""Apply the wire policy to one ``/board`` assignment row (mutates).
|
|
211
|
+
"""Apply the wire policy to one ``/board`` assignment row (mutates).
|
|
212
|
+
|
|
213
|
+
Every field it may bound is listed in :data:`BOUNDED_TEXT_FIELDS`.
|
|
214
|
+
"""
|
|
155
215
|
_bound_review_findings(row, PREVIEW_CHARS)
|
|
156
216
|
_bound_text_field(row, "test_reason", PREVIEW_CHARS)
|
|
157
217
|
_bound_text_field(row, "smoke_test_reason", PREVIEW_CHARS)
|
|
@@ -172,6 +232,26 @@ def _is_closed_issue(row: dict) -> bool:
|
|
|
172
232
|
return isinstance(state, str) and state.strip().lower() == "closed"
|
|
173
233
|
|
|
174
234
|
|
|
235
|
+
def _machine_readable_residue(body: str) -> str:
|
|
236
|
+
"""The lines of *body* a **client** parses without a user action, joined
|
|
237
|
+
back together (#1939).
|
|
238
|
+
|
|
239
|
+
Everything else in a non-epic body is display material, and the Issue
|
|
240
|
+
tab re-fetches that from ``GET /issue/{repo}/{number}`` on demand. What
|
|
241
|
+
cannot be re-fetched in time is the ``## Files`` glob declaration that
|
|
242
|
+
``acceptance_for_path_arg`` reads *synchronously* while handling a
|
|
243
|
+
right-click dispatch — so those lines, and only those, stay inline.
|
|
244
|
+
|
|
245
|
+
Line-scoped by construction: the Rust parser matches
|
|
246
|
+
:data:`ALLOWED_GLOB_MARKER` per line and reads only the backtick spans
|
|
247
|
+
that follow it on that same line, so retaining whole matching lines is
|
|
248
|
+
exactly equivalent to retaining the whole body as far as it can tell.
|
|
249
|
+
"""
|
|
250
|
+
return "".join(
|
|
251
|
+
f"{line}\n" for line in body.splitlines() if ALLOWED_GLOB_MARKER in line
|
|
252
|
+
)
|
|
253
|
+
|
|
254
|
+
|
|
175
255
|
def bound_issue_row(row: dict) -> None:
|
|
176
256
|
"""Apply the wire policy to one ``/board`` issue row (mutates).
|
|
177
257
|
|
|
@@ -183,24 +263,57 @@ def bound_issue_row(row: dict) -> None:
|
|
|
183
263
|
work-order items past DOCUMENT_CHARS would silently drop DAG nodes on
|
|
184
264
|
thin clients — a regression in exactly the failure class #1337 exists to
|
|
185
265
|
close. The exemption stays bounded in practice: an epic body is capped
|
|
186
|
-
at 65,536 chars by GitHub itself and boards carry few epics (
|
|
187
|
-
0.
|
|
266
|
+
at 65,536 chars by GitHub itself and boards carry few epics (48 open
|
|
267
|
+
today, 0.24 MB total).
|
|
188
268
|
|
|
189
269
|
**Closed (non-epic) issues drop the body entirely** (#1791): a closed
|
|
190
270
|
issue is terminal — no pipeline decision, client-side or server-side,
|
|
191
|
-
reads its body once it's closed
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
271
|
+
reads its body once it's closed.
|
|
272
|
+
|
|
273
|
+
**Open (non-epic) issues keep only the machine-parsed residue** (#1939).
|
|
274
|
+
The rest of an open body is display material, and every Rust consumer of
|
|
275
|
+
the synced row (the Board/Pipeline Issue tabs since #2497; the
|
|
276
|
+
Drive/Merge Queue tab's issue-detail pane and the "Chat about issue"
|
|
277
|
+
briefing as of this fix) hydrates it lazily from
|
|
278
|
+
``GET /issue/{repo}/{number}`` instead — so shipping it inline was
|
|
279
|
+
1.44 MB per uncached poll, per client, for text nothing renders until a
|
|
280
|
+
user opens one issue. ``body_truncated`` + ``body_len`` are stamped
|
|
281
|
+
exactly as for a closed issue, which is what arms that hydration
|
|
282
|
+
(``pipeline.rs::issue_body_fetch_target``).
|
|
197
283
|
"""
|
|
198
284
|
if _is_tracking_issue(row):
|
|
199
285
|
return
|
|
200
286
|
if _is_closed_issue(row):
|
|
201
287
|
_bound_text_field(row, "body", 0)
|
|
202
288
|
return
|
|
203
|
-
|
|
289
|
+
_bound_open_issue_body(row)
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
def _bound_open_issue_body(row: dict) -> None:
|
|
293
|
+
"""#1939: replace an open non-epic ``body`` with its machine-readable
|
|
294
|
+
residue + the truncation notice, stamping the same
|
|
295
|
+
``body_truncated``/``body_len`` flags :func:`_bound_text_field` does.
|
|
296
|
+
|
|
297
|
+
A body whose residue is not actually smaller than the original (a body
|
|
298
|
+
that *is* one ``**Allowed:**`` line, or an empty one) is left alone
|
|
299
|
+
rather than flagged — same "nothing was cut, so the shape is unchanged"
|
|
300
|
+
rule the width caps follow.
|
|
301
|
+
"""
|
|
302
|
+
val = row.get("body")
|
|
303
|
+
if not isinstance(val, str) or not val:
|
|
304
|
+
return
|
|
305
|
+
residue = _machine_readable_residue(val)
|
|
306
|
+
# Backstop for a pathological body that is nothing but glob declarations
|
|
307
|
+
# — can't happen with a real issue, but the point of this module is that
|
|
308
|
+
# no collection field is unbounded.
|
|
309
|
+
if len(residue) > DOCUMENT_CHARS:
|
|
310
|
+
residue = residue[:DOCUMENT_CHARS]
|
|
311
|
+
replacement = residue + TRUNCATION_NOTICE
|
|
312
|
+
if len(replacement) >= len(val):
|
|
313
|
+
return
|
|
314
|
+
row["body_len"] = len(val)
|
|
315
|
+
row["body_truncated"] = True
|
|
316
|
+
row["body"] = replacement
|
|
204
317
|
|
|
205
318
|
|
|
206
319
|
def _open_issue_keys(issues) -> set[tuple[str, int]]:
|
|
@@ -587,6 +587,14 @@ class Action:
|
|
|
587
587
|
# the work row's own last attempt reported, or `_decide_merge` would
|
|
588
588
|
# diagnose one PR using the other PR's gates.
|
|
589
589
|
merge_scope: str = "work"
|
|
590
|
+
# #2871: an explicit ``(event_type, summary, details)`` for `Driver._loop`
|
|
591
|
+
# to write via `_record_drive_audit`, independent of whatever this Action
|
|
592
|
+
# otherwise does (WAIT/RUN/EXIT). `decide()` stays a pure function of its
|
|
593
|
+
# inputs — it hands back *what happened*, never writes the audit log
|
|
594
|
+
# itself — while still letting a poll that neither dispatches nor exits
|
|
595
|
+
# (e.g. bypassing a stale pre-dispatch refusal) leave a durable trail
|
|
596
|
+
# instead of only a run-log line nobody queries later.
|
|
597
|
+
audit_event: tuple[str, str, dict[str, Any]] | None = None
|
|
590
598
|
|
|
591
599
|
@property
|
|
592
600
|
def is_exit(self) -> bool:
|
|
@@ -605,6 +613,44 @@ def _die(message: str, exit_code: int = EXIT_TERMINAL_FAILURE) -> Action:
|
|
|
605
613
|
return Action(kind=EXIT, message=message, exit_code=exit_code)
|
|
606
614
|
|
|
607
615
|
|
|
616
|
+
def _format_age(seconds: float) -> str:
|
|
617
|
+
"""Coarse human age ('38m', '15h', '1.2d') for a pre-dispatch audit note.
|
|
618
|
+
|
|
619
|
+
Deliberately not the CLI's full relative-time renderer — this is one
|
|
620
|
+
field inside an audit `summary`/`details`, not a UI surface, so a small
|
|
621
|
+
self-contained formatter is enough (#2871).
|
|
622
|
+
"""
|
|
623
|
+
seconds = max(0.0, seconds)
|
|
624
|
+
if seconds < 3600:
|
|
625
|
+
return f"{int(seconds // 60)}m"
|
|
626
|
+
if seconds < 86400:
|
|
627
|
+
return f"{seconds / 3600:.0f}h"
|
|
628
|
+
return f"{seconds / 86400:.1f}d"
|
|
629
|
+
|
|
630
|
+
|
|
631
|
+
def _refused_policy_is_stale(state: IssueState) -> bool:
|
|
632
|
+
"""True when a terminal ``refused_policy`` work row no longer describes
|
|
633
|
+
the issue as it stands now (#2871).
|
|
634
|
+
|
|
635
|
+
A worker refuses pre-dispatch work exactly once, correctly, for the ask
|
|
636
|
+
it was shown — the refusal says nothing about a DIFFERENT ask on the same
|
|
637
|
+
issue number. If the issue was retargeted (title rewritten) after that
|
|
638
|
+
row finished, the branch it would have produced (workers name branches
|
|
639
|
+
``issue-{N}-{slugify(title)}`` at dispatch time, see
|
|
640
|
+
``coord.agent``'s ``branch_name`` construction) no longer matches what a
|
|
641
|
+
fresh dispatch would name — that mismatch is the signal a retarget
|
|
642
|
+
happened. Conservative on every uncertainty (no branch recorded, no
|
|
643
|
+
title resolved): returns ``False`` — i.e. still treated as blocking —
|
|
644
|
+
rather than risk waving a genuinely-unresolved refusal through.
|
|
645
|
+
"""
|
|
646
|
+
if not state.work_branch or not state.issue_title:
|
|
647
|
+
return False
|
|
648
|
+
from coord.agent import _slugify # noqa: PLC0415
|
|
649
|
+
|
|
650
|
+
expected_branch = f"issue-{state.issue}-{_slugify(state.issue_title)}"
|
|
651
|
+
return state.work_branch != expected_branch
|
|
652
|
+
|
|
653
|
+
|
|
608
654
|
# ── oracle-loop JIT slice authoring (#1453) ─────────────────────────────────
|
|
609
655
|
|
|
610
656
|
|
|
@@ -2036,8 +2082,58 @@ def decide(
|
|
|
2036
2082
|
# deliverable was a doc edit, which CLAUDE.md itself tells a worker
|
|
2037
2083
|
# to refuse and stop rather than attempt). Unlike an ADVISORY 0-commit
|
|
2038
2084
|
# exit, retrying changes nothing — the rule this worker cited is not
|
|
2039
|
-
# going anywhere —
|
|
2040
|
-
#
|
|
2085
|
+
# going anywhere — UNLESS the issue itself has since changed.
|
|
2086
|
+
#
|
|
2087
|
+
# #2871: a refusal is a verdict on the ASK the worker was shown, not
|
|
2088
|
+
# a standing veto on the issue NUMBER forever. `coord/claim.py`'s
|
|
2089
|
+
# `find_work_claim` never even sees this row (it's terminal, so it
|
|
2090
|
+
# lives in `board.completed`) — the reason a stale refusal blocks
|
|
2091
|
+
# every later drive is entirely HERE: `work_aid`/`work_status` above
|
|
2092
|
+
# are the latest work-like row for this issue regardless of how old
|
|
2093
|
+
# or how differently-scoped it is, so a fresh `coord drive` launch
|
|
2094
|
+
# reads the fossil row as "this run's" state before ever reaching
|
|
2095
|
+
# `_dispatch_work_stage`. If the issue was retargeted (title
|
|
2096
|
+
# rewritten) after this row finished, `_refused_policy_is_stale`
|
|
2097
|
+
# detects it — the old refusal no longer describes what a fresh
|
|
2098
|
+
# dispatch would even be asked to do — and this bypasses the veto
|
|
2099
|
+
# instead of dying again on the SAME prose a fresh worker never
|
|
2100
|
+
# produced this run (CC#916).
|
|
2101
|
+
age_seconds = (
|
|
2102
|
+
time.time() - state.work_finished_at
|
|
2103
|
+
if state.work_finished_at is not None
|
|
2104
|
+
else None
|
|
2105
|
+
)
|
|
2106
|
+
age = _format_age(age_seconds) if age_seconds is not None else "unknown age"
|
|
2107
|
+
if _refused_policy_is_stale(state):
|
|
2108
|
+
bypass_summary = (
|
|
2109
|
+
f"pre-dispatch: bypassing stale refused_policy assignment "
|
|
2110
|
+
f"{state.work_aid} ({age} old) on issue {state.repo}#{state.issue} "
|
|
2111
|
+
f"— retargeted since (branch {state.work_branch!r} no longer "
|
|
2112
|
+
"matches the issue's current title); dispatching fresh work (#2871)"
|
|
2113
|
+
)
|
|
2114
|
+
dispatch = _dispatch_work_stage(
|
|
2115
|
+
state, opts, counters, machine, oracle, gate_checker, verifier
|
|
2116
|
+
)
|
|
2117
|
+
return replace(
|
|
2118
|
+
dispatch,
|
|
2119
|
+
audit_event=(
|
|
2120
|
+
"refused_policy_stale",
|
|
2121
|
+
bypass_summary,
|
|
2122
|
+
{
|
|
2123
|
+
"stale_assignment_id": state.work_aid,
|
|
2124
|
+
"stale_branch": state.work_branch,
|
|
2125
|
+
"age_seconds": age_seconds,
|
|
2126
|
+
},
|
|
2127
|
+
),
|
|
2128
|
+
)
|
|
2129
|
+
# Still genuinely blocking: `_die()` exactly like every other
|
|
2130
|
+
# terminal branch here, but the message now says explicitly that
|
|
2131
|
+
# THIS run refused pre-dispatch on an OLD row (naming it and its
|
|
2132
|
+
# age) rather than reading as a fresh worker refusing again — and
|
|
2133
|
+
# names the remedy that actually clears it (#2871: retargeting is
|
|
2134
|
+
# what makes the branch above fire on the next drive; `coord
|
|
2135
|
+
# drive-queue remove`+`add` alone does nothing, since the queue row
|
|
2136
|
+
# was never what was blocking). The message still embeds
|
|
2041
2137
|
# `POLICY_REFUSAL_MARKER`: `coord/drive_queue.py`'s
|
|
2042
2138
|
# `_reconcile_running` recognises that marker in this run's own
|
|
2043
2139
|
# `drive_exited` audit summary and parks the queue entry
|
|
@@ -2046,12 +2142,16 @@ def decide(
|
|
|
2046
2142
|
# principle #1844 already applies pre-dispatch, applied here
|
|
2047
2143
|
# post-dispatch.
|
|
2048
2144
|
return _die(
|
|
2049
|
-
f"
|
|
2050
|
-
"
|
|
2051
|
-
"
|
|
2052
|
-
"
|
|
2053
|
-
|
|
2054
|
-
|
|
2145
|
+
f"pre-dispatch refusal on assignment {state.work_aid} "
|
|
2146
|
+
f"(refused_policy, {age} old) — work refused on a standing "
|
|
2147
|
+
"repo-rule prohibition rather than doing the dispatched work; "
|
|
2148
|
+
"the worker did the CORRECT thing (#2234). Needs the "
|
|
2149
|
+
"coordinator: do the work directly, OR retarget the issue "
|
|
2150
|
+
"(rewrite its title so the deliverable matches what should "
|
|
2151
|
+
"actually be dispatched) — the next `coord drive` detects the "
|
|
2152
|
+
"retarget and dispatches fresh work automatically (#2871), so "
|
|
2153
|
+
f"`coord drive-queue remove {state.repo} {state.issue}` + `add` "
|
|
2154
|
+
"then genuinely clears this once the issue is retargeted.\n"
|
|
2055
2155
|
f" inspect: coord log {state.work_aid} --machine "
|
|
2056
2156
|
f"{state.work_machine or machine}\n"
|
|
2057
2157
|
f" {POLICY_REFUSAL_MARKER}"
|
|
@@ -4680,6 +4780,15 @@ class Driver:
|
|
|
4680
4780
|
for warning in action.warnings:
|
|
4681
4781
|
self.warn(warning)
|
|
4682
4782
|
|
|
4783
|
+
# #2871: `decide()` stays a pure function of its inputs — it
|
|
4784
|
+
# cannot write the audit log itself — so an Action that carries
|
|
4785
|
+
# its own audit note (e.g. bypassing a stale pre-dispatch
|
|
4786
|
+
# refusal) gets recorded here, the one place this loop already
|
|
4787
|
+
# writes durable `drive_*` audit rows.
|
|
4788
|
+
if action.audit_event is not None:
|
|
4789
|
+
event_type, summary, details = action.audit_event
|
|
4790
|
+
self._record_drive_audit(event_type, summary, details=details)
|
|
4791
|
+
|
|
4683
4792
|
# #2443: self-heal — see `_self_heal_drift_message`. Tracked off
|
|
4684
4793
|
# the Action's own `label`, NOT `fingerprint` above: a WAIT can
|
|
4685
4794
|
# (and, in the #2286 shape, does) repeat the identical reason
|
|
@@ -3107,18 +3107,32 @@ def _reconcile_running(
|
|
|
3107
3107
|
# _decide` marks a `refused_policy` work row with `POLICY_REFUSAL_
|
|
3108
3108
|
# MARKER` (coord.models) rather than `EXIT_DISPATCH_REFUSED`, so this is
|
|
3109
3109
|
# checked purely off `own_reason` text, independent of `exit_refused`.
|
|
3110
|
-
# Unlike #2063 this
|
|
3111
|
-
# STANDING rule, not a pending verdict — so it
|
|
3112
|
-
# the "queue resumes it automatically" wording
|
|
3113
|
-
# `plan_tick`'s pre-pass below, which recognises
|
|
3114
|
-
# leaves the entry parked rather than falling
|
|
3115
|
-
# auto-resume.
|
|
3116
|
-
#
|
|
3110
|
+
# Unlike #2063 this does not self-clear on its own timer — a policy
|
|
3111
|
+
# refusal names a STANDING rule, not a pending verdict — so it
|
|
3112
|
+
# deliberately does not get the "queue resumes it automatically" wording
|
|
3113
|
+
# Gate-A's park does; see `plan_tick`'s pre-pass below, which recognises
|
|
3114
|
+
# this same marker and leaves the entry parked rather than falling
|
|
3115
|
+
# through to the CI-park auto-resume.
|
|
3116
|
+
#
|
|
3117
|
+
# #2871: the precondition IS an operator action, but it is a RETARGET
|
|
3118
|
+
# (rewrite the issue so its deliverable isn't the coordinator-only thing
|
|
3119
|
+
# that got refused), not queue surgery. Before #2871, `coord.drive.
|
|
3120
|
+
# decide()` re-read the SAME stale `refused_policy` row on every relaunch
|
|
3121
|
+
# regardless of what the issue said by then, so `remove`+`add` looked
|
|
3122
|
+
# like the fix but did nothing — a fresh queue row, same blocking
|
|
3123
|
+
# assignment. `decide()` now compares that row's branch against the
|
|
3124
|
+
# issue's CURRENT title-derived slug (`_refused_policy_is_stale`) and
|
|
3125
|
+
# bypasses a stale refusal instead of dying on it again, so `remove`+
|
|
3126
|
+
# `add` (or any later relaunch) genuinely works — but only once the
|
|
3127
|
+
# retarget has actually happened.
|
|
3117
3128
|
if own_reason and is_policy_refusal_reason(own_reason):
|
|
3118
3129
|
reason = (
|
|
3119
3130
|
f"{own_reason} — parking without spending an attempt (#2234); "
|
|
3120
|
-
"needs the coordinator, not a relaunch —
|
|
3121
|
-
"
|
|
3131
|
+
"needs the coordinator, not a relaunch — retarget the issue "
|
|
3132
|
+
"(rewrite its title so the deliverable isn't coordinator-only), "
|
|
3133
|
+
"then `coord drive-queue remove`+`add` (or just relaunch "
|
|
3134
|
+
"`coord drive`) — it now detects the retarget and dispatches "
|
|
3135
|
+
"fresh work automatically (#2871)"
|
|
3122
3136
|
)
|
|
3123
3137
|
return (
|
|
3124
3138
|
Reconcile(
|
|
@@ -111,6 +111,13 @@ class IssueState:
|
|
|
111
111
|
work_acceptance_state: str = ""
|
|
112
112
|
work_acceptance_reason: str = ""
|
|
113
113
|
work_acceptance_sha: str = ""
|
|
114
|
+
# #2871: when the work row went terminal — ``None`` for a row still
|
|
115
|
+
# running/pending or predating this column. Paired with `issue_title`
|
|
116
|
+
# below so `decide()` can tell a genuinely-still-blocking
|
|
117
|
+
# `refused_policy` row apart from one whose issue was retargeted
|
|
118
|
+
# (title rewritten) after it finished, and can name the row's age in
|
|
119
|
+
# whatever it reports instead of silently re-quoting stale prose.
|
|
120
|
+
work_finished_at: float | None = None
|
|
114
121
|
|
|
115
122
|
review_aid: str = ""
|
|
116
123
|
review_status: str = ""
|
|
@@ -181,6 +188,13 @@ class IssueState:
|
|
|
181
188
|
# `oracle:exempt`/`manifest.exempt` opt-out for the trust gate
|
|
182
189
|
# (`AcceptanceGateChecker.is_issue_exempt`) without a second board scan.
|
|
183
190
|
issue_labels: tuple[str, ...] = ()
|
|
191
|
+
# #2871: this issue's CURRENT GitHub title — resolved from the same
|
|
192
|
+
# `/board` `issues` row `issue_labels` is, no extra I/O. Compared
|
|
193
|
+
# against a terminal `refused_policy` work row's branch (workers name
|
|
194
|
+
# branches `issue-{N}-{slugify(title)}` at dispatch time) to detect a
|
|
195
|
+
# retarget: an issue whose deliverable was rewritten after the worker
|
|
196
|
+
# refused no longer matches the branch that refusal was about.
|
|
197
|
+
issue_title: str = ""
|
|
184
198
|
|
|
185
199
|
# The JIT slice's own `type="test-author"` assignment (#1171: keyed on
|
|
186
200
|
# `for_issue_number == issue`, NOT `issue_number` — that field is the
|
|
@@ -355,6 +369,13 @@ def project(payload: dict, repo: str, issue: int, config: Any) -> IssueState:
|
|
|
355
369
|
return default if value is None else value
|
|
356
370
|
|
|
357
371
|
exit_code = (work or {}).get("exit_code")
|
|
372
|
+
finished_at_raw = (work or {}).get("finished_at")
|
|
373
|
+
try:
|
|
374
|
+
work_finished_at = (
|
|
375
|
+
float(finished_at_raw) if finished_at_raw is not None else None
|
|
376
|
+
)
|
|
377
|
+
except (TypeError, ValueError):
|
|
378
|
+
work_finished_at = None
|
|
358
379
|
|
|
359
380
|
# #1453: oracle-loop JIT slice resolution — both reads are over data
|
|
360
381
|
# already published on /board, no extra I/O (see IssueState's docstring
|
|
@@ -368,10 +389,12 @@ def project(payload: dict, repo: str, issue: int, config: Any) -> IssueState:
|
|
|
368
389
|
# instead of discovering a mismatch only when #1711's dispatch-time
|
|
369
390
|
# guard refuses it. No extra I/O: `issues` is already part of *payload*.
|
|
370
391
|
issue_labels: list[str] = []
|
|
392
|
+
issue_title = ""
|
|
371
393
|
for oi in payload.get("issues") or []:
|
|
372
394
|
if oi.get("repo_name") == repo and oi.get("number") == issue:
|
|
373
395
|
milestone_number = oi.get("milestone_number")
|
|
374
396
|
issue_labels = list(oi.get("labels") or [])
|
|
397
|
+
issue_title = oi.get("title") or ""
|
|
375
398
|
break
|
|
376
399
|
|
|
377
400
|
milestone_tracking_issue = None
|
|
@@ -451,6 +474,7 @@ def project(payload: dict, repo: str, issue: int, config: Any) -> IssueState:
|
|
|
451
474
|
work_acceptance_state=g(work, "acceptance_state"),
|
|
452
475
|
work_acceptance_reason=g(work, "acceptance_reason"),
|
|
453
476
|
work_acceptance_sha=g(work, "acceptance_sha"),
|
|
477
|
+
work_finished_at=work_finished_at,
|
|
454
478
|
review_aid=g(review, "assignment_id"),
|
|
455
479
|
review_status=g(review, "status"),
|
|
456
480
|
review_verdict=g(review, "review_verdict"),
|
|
@@ -472,6 +496,7 @@ def project(payload: dict, repo: str, issue: int, config: Any) -> IssueState:
|
|
|
472
496
|
milestone_number=milestone_number,
|
|
473
497
|
milestone_tracking_issue=milestone_tracking_issue,
|
|
474
498
|
issue_labels=tuple(issue_labels),
|
|
499
|
+
issue_title=issue_title,
|
|
475
500
|
# #2024: the per-issue Test-stage policy, off the labels already read
|
|
476
501
|
# above (no extra I/O). `test_mode_from_labels` is the same function
|
|
477
502
|
# `coord.state._get_issue_test_mode_local` uses, so the driver and the
|
|
@@ -2303,6 +2303,45 @@ def _board_response_schema(components: dict) -> dict:
|
|
|
2303
2303
|
for cls in board_schema.BOARD_PROJECTIONS.values():
|
|
2304
2304
|
dataclass_schema(cls, components)
|
|
2305
2305
|
|
|
2306
|
+
# #1939: `coord.board_wire` stamps `<field>_truncated` / `<field>_len`
|
|
2307
|
+
# onto bounded rows *after* the DTO projection. They are wire-only (no DB
|
|
2308
|
+
# column backs them), so they are not — and should not be — DTO fields;
|
|
2309
|
+
# but they ARE on the wire, and since #1939 made issue-body bounding
|
|
2310
|
+
# unconditional EVERY open non-epic issue carries them, where before they
|
|
2311
|
+
# fired rarely enough that nothing noticed the spec omitted them.
|
|
2312
|
+
# Declared off board_wire's own field table so the published schema stays
|
|
2313
|
+
# a superset of what /board emits (asserted by
|
|
2314
|
+
# tests/test_board_schema.py::test_board_dtos_and_projection_cannot_drift).
|
|
2315
|
+
#
|
|
2316
|
+
# Only `issues` is published here, not board_wire's whole
|
|
2317
|
+
# BOUNDED_TEXT_FIELDS table. `assignments`' four remaining flag pairs
|
|
2318
|
+
# (test_reason/smoke_test_reason/failure_reason/test_plan — review_findings
|
|
2319
|
+
# is already hand-declared on the Rust side) are the same pre-existing
|
|
2320
|
+
# omission, but they are not what #1939 changed, and declaring them makes
|
|
2321
|
+
# `scripts/codegen.py --rust` emit eight new `Assignment` fields, which
|
|
2322
|
+
# forces ~380 lines of struct-literal churn across 48 fixture sites for a
|
|
2323
|
+
# diff about /board byte size. Left for its own change.
|
|
2324
|
+
from coord.board_wire import BOUNDED_TEXT_FIELDS # noqa: PLC0415
|
|
2325
|
+
|
|
2326
|
+
for _table, _fields in ((t, BOUNDED_TEXT_FIELDS[t]) for t in ("issues",)):
|
|
2327
|
+
_props = components[board_schema.BOARD_PROJECTIONS[_table].__name__]["properties"]
|
|
2328
|
+
for _field in _fields:
|
|
2329
|
+
_props[f"{_field}_truncated"] = {
|
|
2330
|
+
"type": "boolean",
|
|
2331
|
+
"description": (
|
|
2332
|
+
f"#1337/#1939: true when the /board wire bounded `{_field}`. "
|
|
2333
|
+
"Additive-only — absent (not false) when nothing was cut. "
|
|
2334
|
+
"Fetch the full value from the single-resource detail read."
|
|
2335
|
+
),
|
|
2336
|
+
}
|
|
2337
|
+
_props[f"{_field}_len"] = {
|
|
2338
|
+
"type": "integer",
|
|
2339
|
+
"description": (
|
|
2340
|
+
f"#1337/#1939: `{_field}`'s full length before bounding. "
|
|
2341
|
+
f"Present only alongside `{_field}_truncated`."
|
|
2342
|
+
),
|
|
2343
|
+
}
|
|
2344
|
+
|
|
2306
2345
|
planned_merge_ref = dataclass_schema(PlannedMerge, components)
|
|
2307
2346
|
staging_item_ref = dataclass_schema(StagingItem, components)
|
|
2308
2347
|
|
|
@@ -1050,12 +1050,15 @@ RUST_EXTRA_FIELDS: dict[str, tuple[RustField, ...]] = {
|
|
|
1050
1050
|
RustField(
|
|
1051
1051
|
name="body_truncated", ty="bool", serde=("default",),
|
|
1052
1052
|
doc=(
|
|
1053
|
-
"#2497: true when the `/board` wire bounded `body
|
|
1054
|
-
"
|
|
1055
|
-
"chars (#1791)
|
|
1056
|
-
"
|
|
1057
|
-
"
|
|
1058
|
-
"
|
|
1053
|
+
"#2497: true when the `/board` wire bounded `body`. Set for every",
|
|
1054
|
+
"NON-EPIC issue, closed or open: `board_wire.bound_issue_row` drops a",
|
|
1055
|
+
"closed body to 0 chars (#1791) and an open one to its machine-parsed",
|
|
1056
|
+
"`**Allowed:**` residue (#1939), because the Issue tabs hydrate the",
|
|
1057
|
+
"real text lazily from `GET /issue/{repo}/{number}`. Absent only for",
|
|
1058
|
+
"epic bodies, which stay inline for the client-side Milestone DAG",
|
|
1059
|
+
"parse. `#[serde(default)]` so an older daemon (pre-#2497, never",
|
|
1060
|
+
"stamps this) deserializes as `false` — the pre-existing behavior of",
|
|
1061
|
+
"trusting `body` verbatim.",
|
|
1059
1062
|
"",
|
|
1060
1063
|
"Not part of `coord.board_schema.BoardIssue` — stamped onto the row",
|
|
1061
1064
|
"afterward by `coord/board_wire.py`; kept here by hand alongside its",
|
|
@@ -1142,10 +1145,22 @@ def emit_rust_struct(schema_name: str, rust_name: str, schemas: dict[str, Any])
|
|
|
1142
1145
|
lines.extend(meta["attrs"])
|
|
1143
1146
|
lines.append(f"#[derive({', '.join(meta['derives'])})]")
|
|
1144
1147
|
lines.append(f"{meta['vis']} struct {rust_name} {{")
|
|
1148
|
+
extras = RUST_EXTRA_FIELDS.get(rust_name, ())
|
|
1149
|
+
# #1939: an extras entry WINS over the mechanical walk when the spec also
|
|
1150
|
+
# declares that property. `RUST_EXTRA_FIELDS` exists for the wire-only
|
|
1151
|
+
# `<field>_truncated`/`<field>_len` flags `board_wire.py` stamps on, and
|
|
1152
|
+
# `/openapi.json` now declares them too (it always should have — they were
|
|
1153
|
+
# just rare enough on the wire that nothing noticed). Without this the walk
|
|
1154
|
+
# and the table would BOTH emit them: duplicate struct fields, and the
|
|
1155
|
+
# auto-derived `body_len: i64` would shadow the hand-written
|
|
1156
|
+
# `Option<i64>` that `issue_body_fetch_target`'s `len?` gate depends on.
|
|
1157
|
+
extra_names = {f.name for f in extras}
|
|
1145
1158
|
for python_name, field_schema in properties.items():
|
|
1159
|
+
if python_name in extra_names:
|
|
1160
|
+
continue
|
|
1146
1161
|
field = overrides.get(python_name) or _rust_auto_field(python_name, field_schema)
|
|
1147
1162
|
lines.extend(_render_rust_field(field))
|
|
1148
|
-
for field in
|
|
1163
|
+
for field in extras:
|
|
1149
1164
|
lines.extend(_render_rust_field(field))
|
|
1150
1165
|
lines.append("}")
|
|
1151
1166
|
return "\n".join(lines)
|
|
@@ -975,16 +975,17 @@ def test_board_wire_bounds_assignment_text_fields(app_client: TestClient) -> Non
|
|
|
975
975
|
|
|
976
976
|
|
|
977
977
|
def test_board_wire_bounds_issue_bodies(app_client: TestClient) -> None:
|
|
978
|
-
"""
|
|
979
|
-
|
|
980
|
-
|
|
978
|
+
"""#1939: an open non-epic body leaves the collection wire entirely — it
|
|
979
|
+
is 1.44 MB of display material the Issue tabs hydrate lazily (#2497) —
|
|
980
|
+
and is flagged so a client knows to fetch the detail read."""
|
|
981
|
+
from coord.board_wire import TRUNCATION_NOTICE
|
|
981
982
|
|
|
982
983
|
board = app_client.get("/board").json()
|
|
983
984
|
issue = next(i for i in board["issues"] if i["number"] == 42)
|
|
984
|
-
# 9 KB body
|
|
985
|
-
assert issue["body"] ==
|
|
986
|
-
assert "body_truncated"
|
|
987
|
-
assert
|
|
985
|
+
# 9 KB body: no longer served on the collection wire at all.
|
|
986
|
+
assert issue["body"] == TRUNCATION_NOTICE
|
|
987
|
+
assert issue["body_truncated"] is True
|
|
988
|
+
assert issue["body_len"] == 9000
|
|
988
989
|
|
|
989
990
|
|
|
990
991
|
def test_board_wire_short_fields_untouched(
|