code-coordinator 0.5.210__tar.gz → 0.5.213__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.213/.gitignore +44 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/PKG-INFO +1 -1
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/code_coordinator.egg-info/SOURCES.txt +6 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/code_coordinator.egg-info/scm_file_list.json +6 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/drive_queue.py +165 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/portal.py +183 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/merge_queue.py +10 -12
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/portal_sync.py +61 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/ORACLE_LOOP.md +10 -2
- code_coordinator-0.5.213/tests/acceptance/ms-67/contract.md +518 -0
- code_coordinator-0.5.213/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +40 -0
- code_coordinator-0.5.213/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +40 -0
- code_coordinator-0.5.213/tests/acceptance/ms-67/mocks/approved-items-detail.screen +40 -0
- code_coordinator-0.5.213/tests/acceptance/ms-67/mocks/approved-items-empty.screen +40 -0
- code_coordinator-0.5.213/tests/acceptance/ms-67/mocks/approved-items-populated.screen +40 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_drive_queue.py +143 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_portal.py +244 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_portal_sync.py +76 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_thin_client_board_audit.py +16 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/dialogs.rs +72 -7
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/pipeline.rs +732 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/tests.rs +696 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/commands.rs +312 -4
- code_coordinator-0.5.210/.gitignore +0 -25
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/CLAUDE.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/GOAL.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/LICENSE +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/MANIFEST.in +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/README.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/__init__.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/agent.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/audit.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/block_log.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/board_service.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/brain.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/claim.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/cli.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/client.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/comments.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/config.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/dao.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/db.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/deps.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/drive.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/events.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/filelock.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/freshness.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/gates.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/goal.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/context.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/models.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/render.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/health/units.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/hooks.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/interactive.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/models.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/network.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/notify.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/openapi.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/parentage.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/plans.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/progress.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/release_window.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/reports.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/review.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/self_health.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/smoke.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/split_work.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/state.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/test_author.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/test_report.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/usage.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/install-agent.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/pyproject.toml +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/setup.cfg +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/__init__.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/conftest.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_config.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_db.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_events.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_init.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_models.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_network.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_review.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_session.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_split.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_state.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.210 → code_coordinator-0.5.213}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
*.pyc
|
|
3
|
+
.env
|
|
4
|
+
.venv/
|
|
5
|
+
*.egg-info/
|
|
6
|
+
build/
|
|
7
|
+
dist/
|
|
8
|
+
board_state.json
|
|
9
|
+
agent_setup.json
|
|
10
|
+
coordinator.yml
|
|
11
|
+
|
|
12
|
+
# Rust build artifacts (coord-tui)
|
|
13
|
+
tui/target/
|
|
14
|
+
tui/*.err
|
|
15
|
+
tui/*.out
|
|
16
|
+
|
|
17
|
+
# scripts/coord-test-runner.sh scratch output, written into the worktree it
|
|
18
|
+
# is pointed at. Harmless in the throwaway worktree the Test stage uses, but
|
|
19
|
+
# a worker who runs the runner against its own checkout and then `git add -A`
|
|
20
|
+
# commits ~3k lines of log noise — and, worse, leaves the tree permanently
|
|
21
|
+
# `git status`-dirty, which makes setuptools-scm stamp a `.dYYYYMMDD` local
|
|
22
|
+
# version and flips tests/test_release_verify.py::
|
|
23
|
+
# test_spawned_identity_ignores_the_caller_cwd red for reasons that have
|
|
24
|
+
# nothing to do with the branch under test.
|
|
25
|
+
.pytest.out
|
|
26
|
+
.pytest.rerun.out
|
|
27
|
+
.pytest.baseline.out
|
|
28
|
+
.pytest-acceptance.out
|
|
29
|
+
.pytest-populated-home.out
|
|
30
|
+
.cargo.out
|
|
31
|
+
.cargo.rerun.out
|
|
32
|
+
.cargo-acceptance.out
|
|
33
|
+
.fallback.out
|
|
34
|
+
.coord-ci-home/
|
|
35
|
+
|
|
36
|
+
# #1973: opt-in local quadraui path override (see
|
|
37
|
+
# tui/cargo-config-local-quadraui.toml.example) — never commit a
|
|
38
|
+
# machine-local co-development override.
|
|
39
|
+
tui/.cargo/config.toml
|
|
40
|
+
|
|
41
|
+
# scratch $HOME created inside disposable worktrees by the CI-mode
|
|
42
|
+
# acceptance runner (scripts/coord-test-runner.sh) — never meant to
|
|
43
|
+
# leave the throwaway worktree, let alone land in git history (#2527).
|
|
44
|
+
.coord-ci-home/
|
|
@@ -734,6 +734,12 @@ tests/acceptance/ms-65/mocks/board-tab-context-menu.screen
|
|
|
734
734
|
tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen
|
|
735
735
|
tests/acceptance/ms-65/mocks/board-tabs-overflow.screen
|
|
736
736
|
tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen
|
|
737
|
+
tests/acceptance/ms-67/contract.md
|
|
738
|
+
tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen
|
|
739
|
+
tests/acceptance/ms-67/mocks/approved-items-context-menu.screen
|
|
740
|
+
tests/acceptance/ms-67/mocks/approved-items-detail.screen
|
|
741
|
+
tests/acceptance/ms-67/mocks/approved-items-empty.screen
|
|
742
|
+
tests/acceptance/ms-67/mocks/approved-items-populated.screen
|
|
737
743
|
tests/acceptance/ms-example/mocks/home-active.html
|
|
738
744
|
tests/fixtures/board-pipeline-basic.json
|
|
739
745
|
tests/fixtures/board-pipeline-terminal-gates.json
|
{code_coordinator-0.5.210 → code_coordinator-0.5.213}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -377,6 +377,12 @@
|
|
|
377
377
|
"tests/acceptance/ms-65/pipeline_tabs_2284.rs",
|
|
378
378
|
"tests/acceptance/ms-65/tabs_discoverability_2287.rs",
|
|
379
379
|
"tests/acceptance/ms-65/tabs_persistence_2286.rs",
|
|
380
|
+
"tests/acceptance/ms-67/contract.md",
|
|
381
|
+
"tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen",
|
|
382
|
+
"tests/acceptance/ms-67/mocks/approved-items-context-menu.screen",
|
|
383
|
+
"tests/acceptance/ms-67/mocks/approved-items-detail.screen",
|
|
384
|
+
"tests/acceptance/ms-67/mocks/approved-items-empty.screen",
|
|
385
|
+
"tests/acceptance/ms-67/mocks/approved-items-populated.screen",
|
|
380
386
|
"tests/acceptance/ms-example/mocks/home-active.html",
|
|
381
387
|
"tests/conftest.py",
|
|
382
388
|
"tests/fixtures/board-pipeline-basic.json",
|
|
@@ -2350,6 +2350,162 @@ def _run_merge_only_candidates(plan: TickPlan, config_path: Path | None) -> None
|
|
|
2350
2350
|
click.echo(f"merge-only: {reason}")
|
|
2351
2351
|
|
|
2352
2352
|
|
|
2353
|
+
def _run_auto_revalidate_checks_stale(config_path: Path | None) -> None:
|
|
2354
|
+
"""#2535: best-effort auto-fire of the CI-staleness rerun for merge-queue
|
|
2355
|
+
entries blocked SOLELY on stale CI checks against an already-approved
|
|
2356
|
+
review — closing the gap where nothing periodic ever calls a live
|
|
2357
|
+
``coord merge`` or ``coord merge --revalidate`` on such an entry's
|
|
2358
|
+
behalf, so it just sits until an operator notices ``--dry-run``'s
|
|
2359
|
+
``checks_stale`` line and reruns by hand (the trigger: #2530's Gate-A
|
|
2360
|
+
PR #2534 sat blocked 2026-08-21 on nothing but 210 unrelated merges
|
|
2361
|
+
having landed since its CI last ran).
|
|
2362
|
+
|
|
2363
|
+
Deliberately narrow — this is NOT ``merge.auto_drain`` reopened (that
|
|
2364
|
+
flag stays ``False`` by design; see ``docs/DRIVE_QUEUE.md`` and the
|
|
2365
|
+
2026-06-07 incident it guards against). This step never merges anything
|
|
2366
|
+
and never touches an entry blocked on review, a real CI failure, or a
|
|
2367
|
+
conflict — it only triggers a ``gh run rerun`` for the exact shape
|
|
2368
|
+
:func:`coord.merge_queue.ci_revalidation_candidates` already scopes
|
|
2369
|
+
``--revalidate``'s CI arm to (#1851/#1925): ``PENDING``, review
|
|
2370
|
+
approved, smoke fresh, CI checks green but predating the current base.
|
|
2371
|
+
|
|
2372
|
+
BOUNDED, shared with the live path. Draws from the SAME
|
|
2373
|
+
``ci_stale_reruns``/``MAX_CI_STALE_RERUNS`` budget
|
|
2374
|
+
:func:`coord.merge_queue.process`'s own #2197 auto-rerun already spends
|
|
2375
|
+
from — a live ``coord merge`` attempt and this tick share one ceiling,
|
|
2376
|
+
never two independent ones that could double the effective retry count.
|
|
2377
|
+
An entry that has already exhausted the budget (on a prior live attempt
|
|
2378
|
+
or a prior tick) is left for a human exactly as #2197 already leaves it;
|
|
2379
|
+
this function never fires a further rerun past the cap, though it does
|
|
2380
|
+
keep recording the escalation (below) for as long as the entry stays
|
|
2381
|
+
stuck, so a human watching the audit trail sees it, not just the first
|
|
2382
|
+
tick that hit the ceiling.
|
|
2383
|
+
|
|
2384
|
+
Cost-visible (#1632's posture): every triggered rerun is a real CI run
|
|
2385
|
+
on GitHub's own runners, recorded via :func:`coord.audit.record_audit`
|
|
2386
|
+
(operational tier) so an operator can see the auto-fired count — same
|
|
2387
|
+
spirit as the notifier being advisory rather than silent, never a
|
|
2388
|
+
silent background spend.
|
|
2389
|
+
|
|
2390
|
+
Deliberately NOT behind a new config flag — this reuses exactly the
|
|
2391
|
+
bound and the counter #2197 already established for "an automatic CI
|
|
2392
|
+
rerun triggered by staleness"; the only thing new here is a periodic
|
|
2393
|
+
caller for the case nothing was already about to call ``process()``
|
|
2394
|
+
live. If that judgment turns out to be wrong in practice, the fix is a
|
|
2395
|
+
``merge.auto_revalidate_stale_ci`` off-switch, not removing the
|
|
2396
|
+
dedicated budget this already shares.
|
|
2397
|
+
|
|
2398
|
+
Best-effort like every other optional step in this tick (conflict
|
|
2399
|
+
reconciliation in ``_auto_drain_tick``, the merge-only fast path above):
|
|
2400
|
+
a failure here must never abort the rest of the tick. Skipped entirely
|
|
2401
|
+
on a thin client — this daemon-host tick is the only place it ever
|
|
2402
|
+
runs, same guard :func:`_fetch_live_ci_gate`/
|
|
2403
|
+
:func:`_run_merge_only_candidates` use.
|
|
2404
|
+
"""
|
|
2405
|
+
from coord.board_service import resolve as resolve_board_service # noqa: PLC0415
|
|
2406
|
+
|
|
2407
|
+
if resolve_board_service() is not None:
|
|
2408
|
+
return
|
|
2409
|
+
|
|
2410
|
+
try:
|
|
2411
|
+
from coord import github_ops as _gh_ops # noqa: PLC0415
|
|
2412
|
+
from coord import merge_queue as _mq # noqa: PLC0415
|
|
2413
|
+
from coord.audit import record_audit # noqa: PLC0415
|
|
2414
|
+
from coord.ci_store import build_ci_store # noqa: PLC0415
|
|
2415
|
+
from coord.commands._common import _load_config # noqa: PLC0415
|
|
2416
|
+
from coord.state import load_board as _load_board # noqa: PLC0415
|
|
2417
|
+
|
|
2418
|
+
cfg = _load_config(config_path)
|
|
2419
|
+
board = _load_board()
|
|
2420
|
+
ci_store = build_ci_store(
|
|
2421
|
+
cfg.ci_store.type, host=cfg.ci_store.host, token_env=cfg.ci_store.token_env,
|
|
2422
|
+
)
|
|
2423
|
+
if ci_store is None or not ci_store.is_available:
|
|
2424
|
+
return
|
|
2425
|
+
items = _mq.load_queue()
|
|
2426
|
+
candidates = _mq.ci_revalidation_candidates(items, board, cfg, ci_store, _gh_ops)
|
|
2427
|
+
except Exception: # noqa: BLE001 — best-effort, see docstring
|
|
2428
|
+
return
|
|
2429
|
+
|
|
2430
|
+
if not candidates:
|
|
2431
|
+
return
|
|
2432
|
+
|
|
2433
|
+
touched: list = []
|
|
2434
|
+
for entry in candidates:
|
|
2435
|
+
label = f"{entry.repo_name} #{entry.issue_number} ({entry.branch})"
|
|
2436
|
+
if entry.ci_stale_reruns >= _mq.MAX_CI_STALE_RERUNS:
|
|
2437
|
+
# Budget already spent (on a previous tick, or a previous live
|
|
2438
|
+
# `coord merge` attempt) — #2197's own terminal wording is
|
|
2439
|
+
# already on the entry from whichever call last evaluated it.
|
|
2440
|
+
# Nothing new to trigger; still worth one audit row per tick so
|
|
2441
|
+
# an operator watching the trail sees this has been sitting
|
|
2442
|
+
# exhausted, not silently forgotten.
|
|
2443
|
+
record_audit(
|
|
2444
|
+
tier="operational", category="merge",
|
|
2445
|
+
event_type="merge_checks_stale_auto_revalidate_exhausted",
|
|
2446
|
+
actor="drive-queue-tick",
|
|
2447
|
+
summary=(
|
|
2448
|
+
f"auto-revalidate: {label} still checks_stale after "
|
|
2449
|
+
f"{entry.ci_stale_reruns}/{_mq.MAX_CI_STALE_RERUNS} "
|
|
2450
|
+
"auto-reruns — needs a human (`coord merge --revalidate` "
|
|
2451
|
+
"or `coord merge --only`)"
|
|
2452
|
+
),
|
|
2453
|
+
repo=entry.repo_name, issue=entry.issue_number,
|
|
2454
|
+
assignment_id=entry.assignment_id,
|
|
2455
|
+
details={
|
|
2456
|
+
"pr_number": entry.pr_number,
|
|
2457
|
+
"ci_stale_reruns": entry.ci_stale_reruns,
|
|
2458
|
+
},
|
|
2459
|
+
)
|
|
2460
|
+
continue
|
|
2461
|
+
try:
|
|
2462
|
+
reran = ci_store.rerun_for_pr(entry.repo_github, entry.pr_number)
|
|
2463
|
+
except Exception as exc: # noqa: BLE001 — one entry's failure must not sink the rest
|
|
2464
|
+
click.echo(
|
|
2465
|
+
f"auto-revalidate: could not re-run CI for {label}: {exc}", err=True
|
|
2466
|
+
)
|
|
2467
|
+
continue
|
|
2468
|
+
entry.ci_stale_reruns += 1
|
|
2469
|
+
entry.error = (
|
|
2470
|
+
f"{_mq.CI_PENDING_PREFIX} re-run triggered for CI checks that "
|
|
2471
|
+
"predate the current base (#2535 auto-revalidate "
|
|
2472
|
+
f"{entry.ci_stale_reruns}/{_mq.MAX_CI_STALE_RERUNS} "
|
|
2473
|
+
f"{'triggered' if reran else 'failed to trigger'})"
|
|
2474
|
+
)
|
|
2475
|
+
touched.append(entry)
|
|
2476
|
+
click.echo(
|
|
2477
|
+
f"auto-revalidate: {'triggered' if reran else 'FAILED to trigger'} "
|
|
2478
|
+
f"a CI re-run for {label} (checks_stale, review already approved) "
|
|
2479
|
+
f"— {entry.ci_stale_reruns}/{_mq.MAX_CI_STALE_RERUNS}"
|
|
2480
|
+
)
|
|
2481
|
+
record_audit(
|
|
2482
|
+
tier="operational", category="merge",
|
|
2483
|
+
event_type="merge_checks_stale_auto_revalidate",
|
|
2484
|
+
actor="drive-queue-tick",
|
|
2485
|
+
summary=(
|
|
2486
|
+
f"auto-revalidate: {'triggered' if reran else 'FAILED to trigger'} "
|
|
2487
|
+
f"a CI re-run for {label} — {entry.ci_stale_reruns}/"
|
|
2488
|
+
f"{_mq.MAX_CI_STALE_RERUNS}"
|
|
2489
|
+
),
|
|
2490
|
+
repo=entry.repo_name, issue=entry.issue_number,
|
|
2491
|
+
assignment_id=entry.assignment_id,
|
|
2492
|
+
details={"pr_number": entry.pr_number, "reran": reran},
|
|
2493
|
+
)
|
|
2494
|
+
|
|
2495
|
+
if not touched:
|
|
2496
|
+
return
|
|
2497
|
+
|
|
2498
|
+
try:
|
|
2499
|
+
from coord import merge_queue as _mq # noqa: PLC0415
|
|
2500
|
+
|
|
2501
|
+
fresh = _mq.load_queue()
|
|
2502
|
+
by_id = {e.assignment_id: e for e in touched}
|
|
2503
|
+
merged = [by_id.get(item.assignment_id, item) for item in fresh]
|
|
2504
|
+
_mq.save_queue(merged)
|
|
2505
|
+
except Exception: # noqa: BLE001 — best-effort persistence; next tick recomputes
|
|
2506
|
+
pass
|
|
2507
|
+
|
|
2508
|
+
|
|
2353
2509
|
def _run_resume_probe(entry: QueueEntry) -> ProbeResult:
|
|
2354
2510
|
"""Run one entry's ``--resume-when`` probe with a hard timeout.
|
|
2355
2511
|
|
|
@@ -2730,6 +2886,15 @@ def drive_queue_tick(
|
|
|
2730
2886
|
if not reconcile_only:
|
|
2731
2887
|
_run_merge_only_candidates(plan, config_path)
|
|
2732
2888
|
|
|
2889
|
+
# #2535: independent of the drive-queue plan above (this scans the
|
|
2890
|
+
# MERGE queue directly, not drive-queue rows) — a bounded, best-effort
|
|
2891
|
+
# CI re-run for any entry blocked solely on stale-but-green checks
|
|
2892
|
+
# with an already-approved review. Same `not reconcile_only` posture
|
|
2893
|
+
# as the merge-only fast path just above: a `gh run rerun` is a real
|
|
2894
|
+
# external action that mode promises not to take.
|
|
2895
|
+
if not reconcile_only:
|
|
2896
|
+
_run_auto_revalidate_checks_stale(config_path)
|
|
2897
|
+
|
|
2733
2898
|
# #2235 Phase 0: record every entry this tick moved INTO or OUT OF
|
|
2734
2899
|
# `blocked`/`parked`, with the reason the queue stated and — for a
|
|
2735
2900
|
# release — what the release itself reveals about the true cause.
|
|
@@ -284,6 +284,189 @@ def portal_link(
|
|
|
284
284
|
)
|
|
285
285
|
|
|
286
286
|
|
|
287
|
+
# ── #2513 (PDR-5): manual "publish mocks to portal" ─────────────────────────
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
@portal_group.command("publish-mocks")
|
|
291
|
+
@_CONFIG_OPTION
|
|
292
|
+
@click.argument("repo")
|
|
293
|
+
@click.argument("tracking_issue", type=int)
|
|
294
|
+
def portal_publish_mocks(config_path, repo: str, tracking_issue: int) -> None:
|
|
295
|
+
"""Publish REPO's local Gate-A mock bundle for TRACKING_ISSUE's milestone now.
|
|
296
|
+
|
|
297
|
+
The on-demand counterpart to PDR-3's merge-triggered auto-push
|
|
298
|
+
(``coord.merge_queue._maybe_push_design_round``): that path only fires
|
|
299
|
+
once a `type="mock-author"` PR actually merges, which leaves a real gap
|
|
300
|
+
for iterating on a local ``coord acceptance mock ... --amend`` before
|
|
301
|
+
it's merged, or re-publishing after a manual edit. This uploads whatever
|
|
302
|
+
is currently on THIS machine's local checkout under
|
|
303
|
+
``tests/acceptance/ms-NN/`` — ``contract.md`` plus every ``mocks/*.html``
|
|
304
|
+
fixture, uncommitted changes included — no merge required. That's the
|
|
305
|
+
whole point of "on demand".
|
|
306
|
+
|
|
307
|
+
Reuses PDR-3's shared upload+enqueue helper
|
|
308
|
+
(:func:`coord.portal_sync.push_design_round_bundle`) as-is — only where
|
|
309
|
+
the files come from differs.
|
|
310
|
+
|
|
311
|
+
Unlike the merge-triggered path (which fails OPEN: no portal link on
|
|
312
|
+
file for the milestone is silently "nothing to do yet, run `coord portal
|
|
313
|
+
link`"), this is an operator-invoked command and fails LOUD — a missing
|
|
314
|
+
link, missing portal config, or an empty local mock bundle is a clear
|
|
315
|
+
error naming the fix, never a silent no-op.
|
|
316
|
+
"""
|
|
317
|
+
_refuse_if_thin_client("publish-mocks")
|
|
318
|
+
|
|
319
|
+
cfg = _load_config(config_path)
|
|
320
|
+
repo_cfg = cfg.repo(repo)
|
|
321
|
+
if repo_cfg is None:
|
|
322
|
+
click.secho(f"error: unknown repo {repo!r}", fg="red")
|
|
323
|
+
raise SystemExit(2)
|
|
324
|
+
client = client_from_config(cfg.portal)
|
|
325
|
+
if client is None:
|
|
326
|
+
click.secho(
|
|
327
|
+
"portal is not enabled — nothing to do (see `coord portal status`)",
|
|
328
|
+
fg="yellow",
|
|
329
|
+
)
|
|
330
|
+
raise SystemExit(1)
|
|
331
|
+
|
|
332
|
+
from coord import github_ops, portal_store # noqa: PLC0415
|
|
333
|
+
from coord.portal_sync import PortalSyncError, push_design_round_bundle # noqa: PLC0415
|
|
334
|
+
from coord.test_orchestrator import find_local_repo_path # noqa: PLC0415
|
|
335
|
+
|
|
336
|
+
try:
|
|
337
|
+
issue_data = github_ops.get_issue(repo_cfg.github, tracking_issue)
|
|
338
|
+
except Exception as exc: # noqa: BLE001 — surface as a clear CLI error, not a traceback
|
|
339
|
+
click.secho(f"could not fetch tracking issue #{tracking_issue}: {exc}", fg="red")
|
|
340
|
+
raise SystemExit(1) from exc
|
|
341
|
+
|
|
342
|
+
milestone = (issue_data or {}).get("milestone") or {}
|
|
343
|
+
milestone_number = milestone.get("number")
|
|
344
|
+
if milestone_number is None:
|
|
345
|
+
click.secho(
|
|
346
|
+
f"#{tracking_issue} is not scoped to a milestone — nothing to publish",
|
|
347
|
+
fg="red",
|
|
348
|
+
)
|
|
349
|
+
raise SystemExit(1)
|
|
350
|
+
|
|
351
|
+
link = portal_store.get_milestone_link(
|
|
352
|
+
repo_name=repo_cfg.name, milestone_number=milestone_number
|
|
353
|
+
)
|
|
354
|
+
if link is None:
|
|
355
|
+
click.secho(
|
|
356
|
+
f"{repo_cfg.name} ms-{milestone_number} has no portal submission linked — "
|
|
357
|
+
f"run `coord portal link {repo_cfg.name} {milestone_number} <submission_id>` "
|
|
358
|
+
"first",
|
|
359
|
+
fg="red",
|
|
360
|
+
)
|
|
361
|
+
raise SystemExit(1)
|
|
362
|
+
|
|
363
|
+
repo_dir = find_local_repo_path(repo_cfg.name, cfg)
|
|
364
|
+
if repo_dir is None or not repo_dir.exists():
|
|
365
|
+
click.secho(
|
|
366
|
+
f"no local repo checkout found for {repo_cfg.name!r} on this machine "
|
|
367
|
+
"(repo_paths in coordinator.yml)",
|
|
368
|
+
fg="red",
|
|
369
|
+
)
|
|
370
|
+
raise SystemExit(1)
|
|
371
|
+
|
|
372
|
+
try:
|
|
373
|
+
files = _collect_local_mock_bundle_files(repo_dir, milestone_number)
|
|
374
|
+
except _MockBundleReadError as exc:
|
|
375
|
+
click.secho(f"could not read local mock bundle: {exc}", fg="red")
|
|
376
|
+
raise SystemExit(1) from exc
|
|
377
|
+
if not files:
|
|
378
|
+
click.secho(
|
|
379
|
+
f"no mock bundle found under {repo_dir}/tests/acceptance/"
|
|
380
|
+
f"ms-{milestone_number}/ — nothing to publish",
|
|
381
|
+
fg="red",
|
|
382
|
+
)
|
|
383
|
+
raise SystemExit(1)
|
|
384
|
+
|
|
385
|
+
try:
|
|
386
|
+
bundle_key, row = push_design_round_bundle(
|
|
387
|
+
client,
|
|
388
|
+
link.submission_id,
|
|
389
|
+
files,
|
|
390
|
+
milestone_title=milestone.get("title") or f"ms-{milestone_number}",
|
|
391
|
+
tracking_issue_title=issue_data.get("title") or "",
|
|
392
|
+
tracking_issue_body=issue_data.get("body") or "",
|
|
393
|
+
)
|
|
394
|
+
except PortalBridgeError as exc:
|
|
395
|
+
click.secho(f"bundle upload failed: {exc}", fg="red")
|
|
396
|
+
raise SystemExit(1) from exc
|
|
397
|
+
except PortalSyncError as exc:
|
|
398
|
+
click.secho(f"enqueue failed: {exc}", fg="red")
|
|
399
|
+
raise SystemExit(1) from exc
|
|
400
|
+
|
|
401
|
+
click.secho(
|
|
402
|
+
f"published: {repo_cfg.name} ms-{milestone_number} -> "
|
|
403
|
+
f"submission {link.submission_id} (seq={row.seq}, bundle_key={bundle_key}, "
|
|
404
|
+
f"{len(files)} file(s): {', '.join(sorted(files))})",
|
|
405
|
+
fg="green",
|
|
406
|
+
)
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
class _MockBundleReadError(Exception):
|
|
410
|
+
"""A file under the local `ms-NN` acceptance dir could not be read as text.
|
|
411
|
+
|
|
412
|
+
Raised by `_collect_local_mock_bundle_files` in place of a raw
|
|
413
|
+
`UnicodeDecodeError` — mocks are machine-rendered HTML so this is
|
|
414
|
+
low-probability, but a stray non-UTF-8 file dropped in `mocks/` should
|
|
415
|
+
surface as a named CLI error like every other checked failure in this
|
|
416
|
+
command, not an unhandled traceback.
|
|
417
|
+
"""
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
def _collect_local_mock_bundle_files(repo_dir, milestone_number: int) -> dict:
|
|
421
|
+
"""Read a rendered Gate-A bundle off the LOCAL checkout at *repo_dir*.
|
|
422
|
+
|
|
423
|
+
PDR-5's on-demand counterpart to
|
|
424
|
+
:func:`coord.mock_author.collect_mock_bundle_files`, which reads a
|
|
425
|
+
*merged* branch off GitHub's Contents API — this reads whatever is
|
|
426
|
+
currently on disk, uncommitted changes included.
|
|
427
|
+
|
|
428
|
+
Same ``{relative_path: content}`` shape: ``"contract.md"`` plus every
|
|
429
|
+
``mocks/*.html`` fixture — which, if #2512 (master index page) has
|
|
430
|
+
landed, automatically picks up ``mocks/index.html`` too, since this
|
|
431
|
+
globs everything under ``mocks/`` rather than naming files. The suffix
|
|
432
|
+
match is case-INSENSITIVE (``SCREEN.HTML`` counts) so that this stays
|
|
433
|
+
aligned with the TUI's `gate_a_mocks_dir_exists_for` enablement gate
|
|
434
|
+
(#2513 review follow-up) — a file that lights the menu item up must be
|
|
435
|
+
a file this command actually publishes, or the operator gets an
|
|
436
|
+
enabled button whose dispatch dies with "nothing to publish". Empty when
|
|
437
|
+
the ``ms-NN`` acceptance directory doesn't exist locally at all —
|
|
438
|
+
callers treat that as an error (unlike the merge-triggered path's
|
|
439
|
+
"nothing to push", this command is operator-invoked and should say why
|
|
440
|
+
it did nothing rather than no-op quietly).
|
|
441
|
+
"""
|
|
442
|
+
from pathlib import Path # noqa: PLC0415
|
|
443
|
+
|
|
444
|
+
from coord.acceptance import ms_dirname # noqa: PLC0415
|
|
445
|
+
|
|
446
|
+
ms_dir = Path(repo_dir) / "tests" / "acceptance" / ms_dirname(milestone_number)
|
|
447
|
+
files: dict = {}
|
|
448
|
+
contract_path = ms_dir / "contract.md"
|
|
449
|
+
if contract_path.is_file():
|
|
450
|
+
files["contract.md"] = _read_text_or_raise(contract_path)
|
|
451
|
+
mocks_dir = ms_dir / "mocks"
|
|
452
|
+
if mocks_dir.is_dir():
|
|
453
|
+
for p in sorted(mocks_dir.iterdir()):
|
|
454
|
+
if p.is_file() and p.suffix.lower() == ".html":
|
|
455
|
+
files[f"mocks/{p.name}"] = _read_text_or_raise(p)
|
|
456
|
+
return files
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
def _read_text_or_raise(path) -> str:
|
|
460
|
+
"""`Path.read_text(encoding="utf-8")`, wrapping a decode failure in the
|
|
461
|
+
named `_MockBundleReadError` instead of letting a raw
|
|
462
|
+
`UnicodeDecodeError` traceback reach the operator.
|
|
463
|
+
"""
|
|
464
|
+
try:
|
|
465
|
+
return path.read_text(encoding="utf-8")
|
|
466
|
+
except UnicodeDecodeError as exc:
|
|
467
|
+
raise _MockBundleReadError(f"{path} is not valid UTF-8 text ({exc})") from exc
|
|
468
|
+
|
|
469
|
+
|
|
287
470
|
# ── #1982: the sync loop's operator surface ─────────────────────────────────
|
|
288
471
|
|
|
289
472
|
|
|
@@ -5074,9 +5074,9 @@ def _maybe_push_design_round(
|
|
|
5074
5074
|
# the whole point of the fail-open posture (see docstring above).
|
|
5075
5075
|
return None
|
|
5076
5076
|
|
|
5077
|
-
from coord.mock_author import
|
|
5077
|
+
from coord.mock_author import collect_mock_bundle_files # noqa: PLC0415
|
|
5078
5078
|
from coord.portal_bridge import PortalBridgeError, client_from_config # noqa: PLC0415
|
|
5079
|
-
from coord.portal_sync import PortalSyncError,
|
|
5079
|
+
from coord.portal_sync import PortalSyncError, push_design_round_bundle # noqa: PLC0415
|
|
5080
5080
|
|
|
5081
5081
|
client = client_from_config(portal_cfg)
|
|
5082
5082
|
if client is None:
|
|
@@ -5099,18 +5099,16 @@ def _maybe_push_design_round(
|
|
|
5099
5099
|
)
|
|
5100
5100
|
|
|
5101
5101
|
try:
|
|
5102
|
-
bundle_key =
|
|
5102
|
+
bundle_key, row = push_design_round_bundle(
|
|
5103
|
+
client,
|
|
5104
|
+
link.submission_id,
|
|
5105
|
+
files,
|
|
5106
|
+
milestone_title=milestone.get("title") or f"ms-{milestone_number}",
|
|
5107
|
+
tracking_issue_title=issue_data.get("title") or "",
|
|
5108
|
+
tracking_issue_body=issue_data.get("body") or "",
|
|
5109
|
+
)
|
|
5103
5110
|
except PortalBridgeError as e:
|
|
5104
5111
|
return MergeEvent(entry, "design_round_push_failed", f"bundle upload failed: {e}")
|
|
5105
|
-
|
|
5106
|
-
design_round = build_design_round(
|
|
5107
|
-
milestone_title=milestone.get("title") or f"ms-{milestone_number}",
|
|
5108
|
-
tracking_issue_title=issue_data.get("title") or "",
|
|
5109
|
-
tracking_issue_body=issue_data.get("body") or "",
|
|
5110
|
-
bundle_key=bundle_key,
|
|
5111
|
-
)
|
|
5112
|
-
try:
|
|
5113
|
-
row = enqueue_design_round(link.submission_id, design_round)
|
|
5114
5112
|
except PortalSyncError as e:
|
|
5115
5113
|
return MergeEvent(entry, "design_round_push_failed", f"enqueue failed: {e}")
|
|
5116
5114
|
|
|
@@ -242,6 +242,67 @@ def enqueue_design_round(
|
|
|
242
242
|
)
|
|
243
243
|
|
|
244
244
|
|
|
245
|
+
def push_design_round_bundle(
|
|
246
|
+
client: Any,
|
|
247
|
+
submission_id: str,
|
|
248
|
+
files: dict[str, str],
|
|
249
|
+
*,
|
|
250
|
+
milestone_title: str,
|
|
251
|
+
tracking_issue_title: str,
|
|
252
|
+
tracking_issue_body: str,
|
|
253
|
+
round_number: int = 1,
|
|
254
|
+
now: float | None = None,
|
|
255
|
+
) -> tuple[str, portal_store.OutboxRow]:
|
|
256
|
+
"""Upload *files* as a design round bundle, then queue its D1 metadata.
|
|
257
|
+
|
|
258
|
+
The shared tail of the "publish a Gate-A mock bundle to the portal"
|
|
259
|
+
story — extracted (#2513/PDR-5) so the two callers that need it never
|
|
260
|
+
duplicate the upload → reshape → enqueue sequence:
|
|
261
|
+
|
|
262
|
+
* :mod:`coord.merge_queue`'s post-merge hook (PDR-3/#2508), which reads
|
|
263
|
+
*files* off a just-merged ``mock-author`` branch via GitHub's Contents
|
|
264
|
+
API (:func:`coord.mock_author.collect_mock_bundle_files`) and calls
|
|
265
|
+
this automatically, fail-open, the moment that branch lands.
|
|
266
|
+
* ``coord portal publish-mocks`` (PDR-5, :mod:`coord.commands.portal`),
|
|
267
|
+
which reads *files* straight off the operator's local checkout — no
|
|
268
|
+
merge required — and calls this on demand, fail-loud.
|
|
269
|
+
|
|
270
|
+
Only the *source* of ``files`` differs between the two; everything from
|
|
271
|
+
"here are the files" downstream — upload, build the design-round
|
|
272
|
+
payload, queue it — is identical, which is the whole point of not
|
|
273
|
+
duplicating it (the previous shape had this sequence inlined in
|
|
274
|
+
``coord.merge_queue._maybe_push_design_round``).
|
|
275
|
+
|
|
276
|
+
Three steps, each able to fail independently — callers keep whatever
|
|
277
|
+
try/except shape they already had around the calls this replaces:
|
|
278
|
+
|
|
279
|
+
1. :meth:`coord.portal_bridge.PortalBridgeClient.upload_bundle` — raises
|
|
280
|
+
:class:`coord.portal_bridge.PortalBridgeError` on a transport/4xx/5xx
|
|
281
|
+
failure.
|
|
282
|
+
2. :func:`coord.mock_author.build_design_round` — reshapes the bundle
|
|
283
|
+
key + tracking-issue text into the D1 metadata payload; does not
|
|
284
|
+
raise (a malformed ``## Work order`` degrades to an empty
|
|
285
|
+
decomposition, per that function's own docstring).
|
|
286
|
+
3. :func:`enqueue_design_round` — raises :class:`PortalSyncError` for a
|
|
287
|
+
payload it refuses to queue.
|
|
288
|
+
|
|
289
|
+
Returns ``(bundle_key, row)`` — the R2 object key the portal assigned
|
|
290
|
+
the bundle, and the outbox row now queued for it.
|
|
291
|
+
"""
|
|
292
|
+
from coord.mock_author import build_design_round # noqa: PLC0415
|
|
293
|
+
|
|
294
|
+
bundle_key = client.upload_bundle(submission_id, files)
|
|
295
|
+
design_round = build_design_round(
|
|
296
|
+
milestone_title=milestone_title,
|
|
297
|
+
tracking_issue_title=tracking_issue_title,
|
|
298
|
+
tracking_issue_body=tracking_issue_body,
|
|
299
|
+
bundle_key=bundle_key,
|
|
300
|
+
round_number=round_number,
|
|
301
|
+
)
|
|
302
|
+
row = enqueue_design_round(submission_id, design_round, now=now)
|
|
303
|
+
return bundle_key, row
|
|
304
|
+
|
|
305
|
+
|
|
245
306
|
def enqueue_preview(
|
|
246
307
|
submission_id: str, preview_url: str, *, now: float | None = None
|
|
247
308
|
) -> portal_store.OutboxRow:
|
|
@@ -393,8 +393,16 @@ Phase 0 steps 1–2 and Phase 1 step 6 above are also reachable by right-clickin
|
|
|
393
393
|
not a live session). The CLI's own claim-detection refuses a duplicate dispatch while one is
|
|
394
394
|
already in flight. This *is* Phase 0 step 1.
|
|
395
395
|
- **"View Gate A mock (PR)"** 👁 → opens that worker's PR in the browser so a human can read
|
|
396
|
-
`contract.md`
|
|
397
|
-
|
|
396
|
+
`contract.md` and review/merge the branch. Disabled until a PR exists. **This does not show the
|
|
397
|
+
rendered mock(s)** (#2501) — GitHub's "Files changed" view renders `.html` as a source diff,
|
|
398
|
+
never a live page; use "View Gate A mock (local)" below for that. **Merging that PR does not
|
|
399
|
+
satisfy Gate A** (#2063) — it is only how you review/merge what you are signing off on.
|
|
400
|
+
- **"View Gate A mock (local)"** 👁 → the actual mock viewer (#2501). Fast-forward-pulls the local
|
|
401
|
+
checkout's default branch (never forcing, never touching a dirty or diverged tree — aborts with
|
|
402
|
+
a toast instead, same as everywhere else this repo touches git destructively) and then opens
|
|
403
|
+
`tests/acceptance/ms-NN/mocks/` from disk in the OS's default browser, where `.html` actually
|
|
404
|
+
renders. Disabled until that mocks directory exists locally. Opens `mocks/index.html` once #2512
|
|
405
|
+
ships it; falls back to opening the mocks directory itself until then.
|
|
398
406
|
- **"Approve Gate A"** ✓ → `coord gate-a --approved <repo> <tracking_issue>` — records the verdict
|
|
399
407
|
that actually satisfies Gate A. Sits directly beside the 👁 on purpose: reviewing and recording
|
|
400
408
|
are one gesture.
|