code-coordinator 0.5.279__tar.gz → 0.5.281__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.279 → code_coordinator-0.5.281}/PKG-INFO +1 -1
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/agent.py +5 -1
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/portal.py +15 -3
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/decomposition_chat.py +100 -9
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/portal_sync.py +26 -3
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_decomposition_chat.py +131 -13
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_portal_sync.py +46 -5
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/.gitignore +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/CLAUDE.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/GOAL.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/LICENSE +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/MANIFEST.in +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/README.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/__init__.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/audit.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/block_log.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/board_schema.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/board_service.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/brain.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/claim.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/cli.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/client.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/comments.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/config.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/dao.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/db.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/deps.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/drive.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/events.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/filelock.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/freshness.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/gates.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/goal.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/context.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/models.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/render.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/health/units.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/hooks.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/interactive.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/models.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/network.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/notify.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/openapi.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/parentage.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/plans.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/progress.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/release_window.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/reports.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/review.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/self_health.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/smoke.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/split_work.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/sql.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/state.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/test_author.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/test_report.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/usage.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/install-agent.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/pyproject.toml +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/setup.cfg +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/__init__.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/backends.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/conftest.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_config.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_db.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_events.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_generated_rust_fixture.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_init.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_models.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_network.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_portal_store.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_review.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_session.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_split.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_sqlite_connect_ratchet.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_state.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tests/write_parity.py +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/approved.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/types/generated.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-67/contract.md +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-67/manifest.yml +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.279 → code_coordinator-0.5.281}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -4067,7 +4067,11 @@ composer on the client's side pauses on the most recent question only, so \
|
|
|
4067
4067
|
a scattershot list gets a partial answer at best. Then:
|
|
4068
4068
|
|
|
4069
4069
|
coord portal enqueue-question <submission_id> "<question>"
|
|
4070
|
-
|
|
4070
|
+
|
|
4071
|
+
This one command queues the question AND announces it to the customer \
|
|
4072
|
+
(#2901) — `enqueue-question` queues its own `needs-input` status right \
|
|
4073
|
+
behind the question, so there is no separate announcement step to remember \
|
|
4074
|
+
or forget.
|
|
4071
4075
|
|
|
4072
4076
|
and STOP — end your final turn summarizing the question and why, and run \
|
|
4073
4077
|
nothing else this iteration (no filing, no decisions). IL-3's consumer \
|
|
@@ -1351,18 +1351,30 @@ def portal_enqueue_preview(submission_id: str, preview_url: str) -> None:
|
|
|
1351
1351
|
@click.argument("submission_id")
|
|
1352
1352
|
@click.argument("question")
|
|
1353
1353
|
def portal_enqueue_question(submission_id: str, question: str) -> None:
|
|
1354
|
-
"""Queue an open question for SUBMISSION_ID (sent on the next sync).
|
|
1354
|
+
"""Queue an open question for SUBMISSION_ID (sent on the next sync).
|
|
1355
|
+
|
|
1356
|
+
Also queues the `needs-input` status that announces it (#2901) — a
|
|
1357
|
+
question with no status row behind it sends no email, so this command
|
|
1358
|
+
always queues both rows in one call rather than leaving the second one
|
|
1359
|
+
to a caller who might forget it.
|
|
1360
|
+
"""
|
|
1355
1361
|
_refuse_if_thin_client("enqueue-question")
|
|
1356
1362
|
|
|
1357
1363
|
from coord.portal_sync import PortalSyncError, enqueue_question # noqa: PLC0415
|
|
1358
1364
|
|
|
1359
1365
|
try:
|
|
1360
|
-
|
|
1366
|
+
question_row, status_row = enqueue_question(submission_id, question)
|
|
1361
1367
|
except PortalSyncError as exc:
|
|
1362
1368
|
click.secho(str(exc), fg="red")
|
|
1363
1369
|
raise SystemExit(1) from exc
|
|
1364
1370
|
click.secho(
|
|
1365
|
-
f"queued: {
|
|
1371
|
+
f"queued: {question_row.submission_id} seq={question_row.seq} "
|
|
1372
|
+
f"rev={question_row.revision} question",
|
|
1373
|
+
fg="green",
|
|
1374
|
+
)
|
|
1375
|
+
click.secho(
|
|
1376
|
+
f"queued: {status_row.submission_id} seq={status_row.seq} "
|
|
1377
|
+
f"rev={status_row.revision} status=needs-input",
|
|
1366
1378
|
fg="green",
|
|
1367
1379
|
)
|
|
1368
1380
|
|
|
@@ -68,17 +68,104 @@ NOT_CAPTURED_SENTINEL = "Not captured at first contact"
|
|
|
68
68
|
|
|
69
69
|
def _field_missing(value: Any) -> bool:
|
|
70
70
|
"""True when *value* carries no real content — absent, blank, or the
|
|
71
|
-
portal's own "not captured at first contact" placeholder (#2750).
|
|
71
|
+
portal's own "not captured at first contact" placeholder (#2750).
|
|
72
|
+
|
|
73
|
+
#2864: the portal never sends the bare sentinel — it's the leading
|
|
74
|
+
clause of a longer sentence (e.g. ``"Not captured at first contact —
|
|
75
|
+
this came in through the contact form, so it still needs to be agreed
|
|
76
|
+
with the customer."``, em dash and all), so this matches the sentinel
|
|
77
|
+
as a **prefix**, casefolded and whitespace-normalised, rather than by
|
|
78
|
+
exact equality. A prefix match still leaves real content that merely
|
|
79
|
+
*mentions* the phrase mid-sentence reading as present, since the
|
|
80
|
+
sentinel then isn't at the start.
|
|
81
|
+
"""
|
|
72
82
|
if not isinstance(value, str):
|
|
73
83
|
return True
|
|
74
|
-
text = value.
|
|
75
|
-
|
|
84
|
+
text = " ".join(value.split())
|
|
85
|
+
if not text:
|
|
86
|
+
return True
|
|
87
|
+
sentinel = " ".join(NOT_CAPTURED_SENTINEL.split())
|
|
88
|
+
return text.casefold().startswith(sentinel.casefold())
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
#: Files `coord repo create` seeds into a brand-new repo as its first
|
|
92
|
+
#: commit(s) (#2747): `README.md` from `create_repo`'s own `--add-readme`,
|
|
93
|
+
#: plus `CLAUDE.md`, a CI workflow, and the ported `.githooks/*` from its
|
|
94
|
+
#: own seed commit (`coord.commands.repo._seed_files`). Kept here rather
|
|
95
|
+
#: than imported from `coord.commands.repo` — this module's briefing scopes
|
|
96
|
+
#: it to `coord/decomposition_chat.py` alone, and the set is small and
|
|
97
|
+
#: unlikely to drift silently (a drift only ever costs one extra spurious
|
|
98
|
+
#: DISCUSS round, never a false FILE).
|
|
99
|
+
_SEEDED_ROOT_FILES = frozenset({"README.md", "CLAUDE.md"})
|
|
100
|
+
_SEEDED_ROOT_DIRS = frozenset({".github", ".githooks"})
|
|
101
|
+
_SEEDED_GITHUB_WORKFLOW_FILES = frozenset({"ci.yml"})
|
|
102
|
+
_SEEDED_GITHOOKS_FILES = frozenset(
|
|
103
|
+
{"_lib.sh", "post-checkout", "post-commit", "post-merge"}
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def _dir_entries(repo: str, path: str, branch: str) -> tuple[list[str], list[str]]:
|
|
108
|
+
"""``(files, dirs)`` directly under *path* on *branch* — ``([], [])``
|
|
109
|
+
when *path* doesn't exist there at all (e.g. a repo that never got
|
|
110
|
+
`.githooks/` seeded) rather than raising, mirroring `github_ops.
|
|
111
|
+
repo_file_exists`'s own not-found handling. Any failure that isn't a
|
|
112
|
+
clean 404 propagates, same reasoning: a caller here must not read
|
|
113
|
+
"couldn't check" as "empty directory".
|
|
114
|
+
"""
|
|
115
|
+
from coord import github_ops # noqa: PLC0415
|
|
116
|
+
|
|
117
|
+
try:
|
|
118
|
+
files = github_ops.list_repo_dir(repo, path, branch)
|
|
119
|
+
dirs = github_ops.list_repo_subdirs(repo, path, branch)
|
|
120
|
+
except RuntimeError as exc:
|
|
121
|
+
msg = str(exc).lower()
|
|
122
|
+
if "not found" in msg or "404" in msg:
|
|
123
|
+
return [], []
|
|
124
|
+
raise
|
|
125
|
+
return files, dirs
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def _repo_has_only_seeded_files(repo: str, branch: str) -> bool:
|
|
129
|
+
"""True when every tracked file on *branch* of *repo* is one that
|
|
130
|
+
`coord repo create` itself seeds (#2864 bug 2) — walks the small, fixed
|
|
131
|
+
set of directories seeding can ever touch (root, `.github/`,
|
|
132
|
+
`.github/workflows/`, `.githooks/`); any file or directory outside that
|
|
133
|
+
set is real product history.
|
|
134
|
+
"""
|
|
135
|
+
files, dirs = _dir_entries(repo, "", branch)
|
|
136
|
+
if not set(files) <= _SEEDED_ROOT_FILES:
|
|
137
|
+
return False
|
|
138
|
+
if not set(dirs) <= _SEEDED_ROOT_DIRS:
|
|
139
|
+
return False
|
|
140
|
+
|
|
141
|
+
if ".github" in dirs:
|
|
142
|
+
gh_files, gh_dirs = _dir_entries(repo, ".github", branch)
|
|
143
|
+
if gh_files or set(gh_dirs) - {"workflows"}:
|
|
144
|
+
return False
|
|
145
|
+
if "workflows" in gh_dirs:
|
|
146
|
+
wf_files, wf_dirs = _dir_entries(repo, ".github/workflows", branch)
|
|
147
|
+
if not set(wf_files) <= _SEEDED_GITHUB_WORKFLOW_FILES or wf_dirs:
|
|
148
|
+
return False
|
|
149
|
+
|
|
150
|
+
if ".githooks" in dirs:
|
|
151
|
+
hook_files, hook_dirs = _dir_entries(repo, ".githooks", branch)
|
|
152
|
+
if not set(hook_files) <= _SEEDED_GITHOOKS_FILES or hook_dirs:
|
|
153
|
+
return False
|
|
154
|
+
|
|
155
|
+
return True
|
|
76
156
|
|
|
77
157
|
|
|
78
158
|
def _repo_is_greenfield(cfg: "Config", repo_name: str) -> bool:
|
|
79
159
|
"""Mechanical "nothing to decompose against yet" signal for *repo_name*
|
|
80
160
|
(#2750's second mode-selection trigger): no commits on its default
|
|
81
|
-
branch, or
|
|
161
|
+
branch, or every tracked file there is one `coord repo create` itself
|
|
162
|
+
seeds (:func:`_repo_has_only_seeded_files`).
|
|
163
|
+
|
|
164
|
+
#2864: used to be "no `CLAUDE.md` there", which `coord repo create`
|
|
165
|
+
(#2747) broke — it seeds `CLAUDE.md` as part of a brand-new repo's
|
|
166
|
+
first commit, so a repo created through the intake lane's own genesis
|
|
167
|
+
command could never be detected as greenfield by the intake lane's own
|
|
168
|
+
mode selector.
|
|
82
169
|
|
|
83
170
|
Fails safe toward ``True`` (i.e. toward MODE: DISCUSS) on an unmapped
|
|
84
171
|
repo or any lookup failure — a false positive here costs one extra
|
|
@@ -98,7 +185,10 @@ def _repo_is_greenfield(cfg: "Config", repo_name: str) -> bool:
|
|
|
98
185
|
sha = github_ops.get_branch_sha(repo_cfg.github, branch)
|
|
99
186
|
if sha is None:
|
|
100
187
|
return True
|
|
101
|
-
|
|
188
|
+
try:
|
|
189
|
+
return _repo_has_only_seeded_files(repo_cfg.github, branch)
|
|
190
|
+
except RuntimeError:
|
|
191
|
+
return True
|
|
102
192
|
|
|
103
193
|
|
|
104
194
|
def select_discuss_mode(
|
|
@@ -117,8 +207,9 @@ def select_discuss_mode(
|
|
|
117
207
|
|
|
118
208
|
* `done_definition` / `audience` missing, blank, or the portal's own
|
|
119
209
|
"not captured at first contact" sentinel;
|
|
120
|
-
* any mapped repo with no commits on its default branch or
|
|
121
|
-
`
|
|
210
|
+
* any mapped repo with no commits on its default branch, or whose
|
|
211
|
+
tracked files are only what `coord repo create` itself seeds
|
|
212
|
+
(:func:`_repo_is_greenfield`).
|
|
122
213
|
|
|
123
214
|
Returns ``(discuss, reason)`` — *reason* is always non-empty and is
|
|
124
215
|
meant to be the first thing the operator reads (#2750: "a session that
|
|
@@ -140,8 +231,8 @@ def select_discuss_mode(
|
|
|
140
231
|
greenfield = [r for r in repos if _repo_is_greenfield(cfg, r)]
|
|
141
232
|
if greenfield:
|
|
142
233
|
reasons.append(
|
|
143
|
-
f"mapped repo(s) {', '.join(greenfield)} have no commits or
|
|
144
|
-
"
|
|
234
|
+
f"mapped repo(s) {', '.join(greenfield)} have no commits or only "
|
|
235
|
+
"coord repo create's seed files — nothing to decompose against yet"
|
|
145
236
|
)
|
|
146
237
|
|
|
147
238
|
if reasons:
|
|
@@ -356,13 +356,36 @@ def enqueue_preview(
|
|
|
356
356
|
|
|
357
357
|
def enqueue_question(
|
|
358
358
|
submission_id: str, question: str, *, now: float | None = None
|
|
359
|
-
) -> portal_store.OutboxRow:
|
|
360
|
-
"""Queue an open question for the customer.
|
|
359
|
+
) -> tuple[portal_store.OutboxRow, portal_store.OutboxRow]:
|
|
360
|
+
"""Queue an open question for the customer, plus the announcement of it.
|
|
361
|
+
|
|
362
|
+
Queuing the question alone sends no email — the portal only mails the
|
|
363
|
+
customer off a push that actually names ``status``
|
|
364
|
+
(coord-portal's `src/bridge/updates.ts`) — so a caller that asked a
|
|
365
|
+
question and forgot the follow-up `enqueue_status(..., "needs-input")`
|
|
366
|
+
left the customer never told (#2901, SUB-1EA1D3: exactly this happened
|
|
367
|
+
to a real submission). Folding the announcement in here, in the same
|
|
368
|
+
call, immediately after the question row, makes that omission
|
|
369
|
+
impossible rather than merely documented: the existing
|
|
370
|
+
`ANNOUNCING_STATUSES`/`ordering_block_reason` guard then holds the
|
|
371
|
+
status row until this question is confirmed applied, for free, because
|
|
372
|
+
it is seq N+1 behind the question's seq N.
|
|
373
|
+
|
|
374
|
+
A second question on a submission already at `needs-input` still gets
|
|
375
|
+
its own status row here — coord-portal deliberately does not coalesce
|
|
376
|
+
a repeat `needs-input` (`src/notifications.ts`), on the grounds that a
|
|
377
|
+
second question is plausibly real news, so re-announcing is intended,
|
|
378
|
+
not churn to suppress.
|
|
379
|
+
|
|
380
|
+
Returns ``(question_row, status_row)`` in that seq order.
|
|
381
|
+
"""
|
|
361
382
|
if not question or not question.strip():
|
|
362
383
|
raise PortalSyncError("question must be non-empty")
|
|
363
|
-
|
|
384
|
+
question_row = portal_store.enqueue(
|
|
364
385
|
submission_id, KIND_QUESTION, {"question": question}, now=now
|
|
365
386
|
)
|
|
387
|
+
status_row = enqueue_status(submission_id, "needs-input", now=now)
|
|
388
|
+
return question_row, status_row
|
|
366
389
|
|
|
367
390
|
|
|
368
391
|
def enqueue_status(
|
|
@@ -27,14 +27,19 @@ def _stub_external_io(monkeypatch):
|
|
|
27
27
|
ledger (`fetch_running_context`, a real local `coord.db` read). Neither
|
|
28
28
|
is hermetic, and neither is what most of the tests below are
|
|
29
29
|
exercising — stub the low-level `github_ops` calls to a fixed "repo has
|
|
30
|
-
history
|
|
31
|
-
runs its real logic, just
|
|
32
|
-
ledger yet", so most tests
|
|
33
|
-
specifically exercise
|
|
34
|
-
ledger render override
|
|
30
|
+
real product history beyond what `coord repo create` seeds" answer (so
|
|
31
|
+
`_repo_is_greenfield` itself still runs its real logic, just
|
|
32
|
+
network-free) and the ledger fetch to "no ledger yet", so most tests
|
|
33
|
+
stay fast and deterministic. Tests that specifically exercise
|
|
34
|
+
`_repo_is_greenfield`/`select_discuss_mode`/the ledger render override
|
|
35
|
+
these locally.
|
|
35
36
|
"""
|
|
36
37
|
monkeypatch.setattr("coord.github_ops.get_branch_sha", lambda repo, branch: "deadbeef")
|
|
37
|
-
monkeypatch.setattr(
|
|
38
|
+
monkeypatch.setattr(
|
|
39
|
+
"coord.github_ops.list_repo_dir",
|
|
40
|
+
lambda repo, path, branch: ["README.md", "CLAUDE.md", "app.py"] if path == "" else [],
|
|
41
|
+
)
|
|
42
|
+
monkeypatch.setattr("coord.github_ops.list_repo_subdirs", lambda repo, path, branch: [])
|
|
38
43
|
monkeypatch.setattr(decomposition_chat, "fetch_running_context", lambda submission_id: {})
|
|
39
44
|
|
|
40
45
|
|
|
@@ -201,10 +206,37 @@ def test_field_missing_true_for_none_empty_and_sentinel():
|
|
|
201
206
|
assert decomposition_chat._field_missing(f" {decomposition_chat.NOT_CAPTURED_SENTINEL} ") is True
|
|
202
207
|
|
|
203
208
|
|
|
209
|
+
def test_field_missing_true_for_portal_real_full_sentinel_string():
|
|
210
|
+
"""#2864 bug 1: the portal never sends the bare sentinel — it's the
|
|
211
|
+
leading clause of a longer sentence, em dash and all. This is the
|
|
212
|
+
verbatim string the live portal sent for SUB-1EA1D3's `done_definition`
|
|
213
|
+
and `audience`."""
|
|
214
|
+
real = (
|
|
215
|
+
"Not captured at first contact — this came in through the contact "
|
|
216
|
+
"form, so it still needs to be agreed with the customer."
|
|
217
|
+
)
|
|
218
|
+
assert decomposition_chat._field_missing(real) is True
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
def test_field_missing_true_for_case_and_whitespace_variants():
|
|
222
|
+
assert decomposition_chat._field_missing(" not CAPTURED at First Contact ") is True
|
|
223
|
+
assert decomposition_chat._field_missing("NOT CAPTURED AT FIRST CONTACT — extra tail") is True
|
|
224
|
+
|
|
225
|
+
|
|
204
226
|
def test_field_missing_false_for_real_content():
|
|
205
227
|
assert decomposition_chat._field_missing("Existing subscription customers") is False
|
|
206
228
|
|
|
207
229
|
|
|
230
|
+
def test_field_missing_false_when_sentinel_only_mentioned_mid_sentence():
|
|
231
|
+
"""A prefix match must not fire when the phrase merely appears somewhere
|
|
232
|
+
inside otherwise-real content — only a leading match means "missing"."""
|
|
233
|
+
mid_sentence = (
|
|
234
|
+
"The client said this was Not captured at first contact previously, "
|
|
235
|
+
"but confirmed today: existing subscription customers only."
|
|
236
|
+
)
|
|
237
|
+
assert decomposition_chat._field_missing(mid_sentence) is False
|
|
238
|
+
|
|
239
|
+
|
|
208
240
|
def test_repo_is_greenfield_true_when_unmapped():
|
|
209
241
|
cfg = Config(repos=[], machines=[])
|
|
210
242
|
assert decomposition_chat._repo_is_greenfield(cfg, "nope") is True
|
|
@@ -219,16 +251,45 @@ def test_repo_is_greenfield_true_when_no_commits():
|
|
|
219
251
|
def test_repo_is_greenfield_true_when_commits_but_no_claude_md():
|
|
220
252
|
cfg = Config(repos=[_repo("api")], machines=[])
|
|
221
253
|
with patch("coord.github_ops.get_branch_sha", return_value="deadbeef"), patch(
|
|
222
|
-
"coord.github_ops.
|
|
223
|
-
):
|
|
254
|
+
"coord.github_ops.list_repo_dir", return_value=["README.md"]
|
|
255
|
+
), patch("coord.github_ops.list_repo_subdirs", return_value=[]):
|
|
256
|
+
assert decomposition_chat._repo_is_greenfield(cfg, "api") is True
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
def test_repo_is_greenfield_true_when_only_seeded_files():
|
|
260
|
+
"""#2864 bug 2: a repo whose default branch contains only what `coord
|
|
261
|
+
repo create` itself seeds (README.md, CLAUDE.md, the CI workflow,
|
|
262
|
+
.githooks/*) must still read as greenfield — `coord repo create`'s own
|
|
263
|
+
genesis commit must never defeat the mode selector it's supposed to
|
|
264
|
+
feed into."""
|
|
265
|
+
cfg = Config(repos=[_repo("api")], machines=[])
|
|
266
|
+
|
|
267
|
+
def _list_dir(repo, path, branch):
|
|
268
|
+
return {
|
|
269
|
+
"": ["README.md", "CLAUDE.md"],
|
|
270
|
+
".github": [],
|
|
271
|
+
".github/workflows": ["ci.yml"],
|
|
272
|
+
".githooks": ["_lib.sh", "post-checkout", "post-commit", "post-merge"],
|
|
273
|
+
}.get(path, [])
|
|
274
|
+
|
|
275
|
+
def _list_subdirs(repo, path, branch):
|
|
276
|
+
return {
|
|
277
|
+
"": [".github", ".githooks"],
|
|
278
|
+
".github": ["workflows"],
|
|
279
|
+
}.get(path, [])
|
|
280
|
+
|
|
281
|
+
with patch("coord.github_ops.get_branch_sha", return_value="deadbeef"), patch(
|
|
282
|
+
"coord.github_ops.list_repo_dir", side_effect=_list_dir
|
|
283
|
+
), patch("coord.github_ops.list_repo_subdirs", side_effect=_list_subdirs):
|
|
224
284
|
assert decomposition_chat._repo_is_greenfield(cfg, "api") is True
|
|
225
285
|
|
|
226
286
|
|
|
227
287
|
def test_repo_is_greenfield_false_when_commits_and_claude_md():
|
|
228
288
|
cfg = Config(repos=[_repo("api")], machines=[])
|
|
229
289
|
with patch("coord.github_ops.get_branch_sha", return_value="deadbeef"), patch(
|
|
230
|
-
"coord.github_ops.
|
|
231
|
-
|
|
290
|
+
"coord.github_ops.list_repo_dir",
|
|
291
|
+
return_value=["README.md", "CLAUDE.md", "app.py"],
|
|
292
|
+
), patch("coord.github_ops.list_repo_subdirs", return_value=[]):
|
|
232
293
|
assert decomposition_chat._repo_is_greenfield(cfg, "api") is False
|
|
233
294
|
|
|
234
295
|
|
|
@@ -279,7 +340,7 @@ def test_select_discuss_mode_auto_true_when_repo_greenfield(monkeypatch):
|
|
|
279
340
|
discuss, reason = decomposition_chat.select_discuss_mode(cfg, SUBMISSION)
|
|
280
341
|
assert discuss is True
|
|
281
342
|
assert "api" in reason
|
|
282
|
-
assert "
|
|
343
|
+
assert "coord repo create's seed files" in reason
|
|
283
344
|
|
|
284
345
|
|
|
285
346
|
def test_select_discuss_mode_auto_false_when_well_specified(monkeypatch):
|
|
@@ -290,6 +351,55 @@ def test_select_discuss_mode_auto_false_when_well_specified(monkeypatch):
|
|
|
290
351
|
assert "captured" in reason
|
|
291
352
|
|
|
292
353
|
|
|
354
|
+
def test_select_discuss_mode_true_for_sub_1ea1d3_live_payload(monkeypatch):
|
|
355
|
+
"""Regression test for #2864: SUB-1EA1D3, the greenfield grocery-list
|
|
356
|
+
submission #2746 was written around, verbatim as captured off the live
|
|
357
|
+
fleet on 2026-08-28. Before the fix both mechanical triggers failed
|
|
358
|
+
independently (the sentinel matched by equality, not prefix; the
|
|
359
|
+
seeded-only `grocery-list` repo read as non-greenfield because
|
|
360
|
+
`coord repo create` had itself seeded `CLAUDE.md`) and the session
|
|
361
|
+
picked MODE: FILE. Both must now fire, and the reason must name at
|
|
362
|
+
least one of them.
|
|
363
|
+
"""
|
|
364
|
+
live_sentinel_tail = (
|
|
365
|
+
"Not captured at first contact — this came in through the contact "
|
|
366
|
+
"form, so it still needs to be agreed with the customer."
|
|
367
|
+
)
|
|
368
|
+
sub_1ea1d3 = {
|
|
369
|
+
"submission_id": "SUB-1EA1D3",
|
|
370
|
+
"client": "grocery-list customer",
|
|
371
|
+
"outcome": "A working grocery-list app for the customer's household.",
|
|
372
|
+
"audience": live_sentinel_tail,
|
|
373
|
+
"done_definition": live_sentinel_tail,
|
|
374
|
+
"constraints": "",
|
|
375
|
+
"repos": ["grocery-list"],
|
|
376
|
+
"signoff_status": "approved",
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
def _list_dir(repo, path, branch):
|
|
380
|
+
return {
|
|
381
|
+
"": ["README.md", "CLAUDE.md"],
|
|
382
|
+
".github": [],
|
|
383
|
+
".github/workflows": ["ci.yml"],
|
|
384
|
+
".githooks": ["_lib.sh", "post-checkout", "post-commit", "post-merge"],
|
|
385
|
+
}.get(path, [])
|
|
386
|
+
|
|
387
|
+
def _list_subdirs(repo, path, branch):
|
|
388
|
+
return {
|
|
389
|
+
"": [".github", ".githooks"],
|
|
390
|
+
".github": ["workflows"],
|
|
391
|
+
}.get(path, [])
|
|
392
|
+
|
|
393
|
+
cfg = Config(repos=[_repo("grocery-list")], machines=[])
|
|
394
|
+
with patch("coord.github_ops.get_branch_sha", return_value="deadbeef"), patch(
|
|
395
|
+
"coord.github_ops.list_repo_dir", side_effect=_list_dir
|
|
396
|
+
), patch("coord.github_ops.list_repo_subdirs", side_effect=_list_subdirs):
|
|
397
|
+
discuss, reason = decomposition_chat.select_discuss_mode(cfg, sub_1ea1d3)
|
|
398
|
+
|
|
399
|
+
assert discuss is True
|
|
400
|
+
assert "done_definition" in reason or "audience" in reason or "grocery-list" in reason
|
|
401
|
+
|
|
402
|
+
|
|
293
403
|
# ── #2750 (IL-4): render_running_context_section ────────────────────────────
|
|
294
404
|
|
|
295
405
|
|
|
@@ -579,10 +689,18 @@ def test_system_prompt_describes_both_modes():
|
|
|
579
689
|
assert "MODE: FILE" in DECOMPOSITION_CHAT_SYSTEM_PROMPT
|
|
580
690
|
|
|
581
691
|
|
|
582
|
-
def
|
|
692
|
+
def test_system_prompt_ask_terminal_move_uses_enqueue_question_only():
|
|
693
|
+
"""#2901: `enqueue_question` now queues its own `needs-input`
|
|
694
|
+
announcement, so the ASK move's own step list must not tell the session
|
|
695
|
+
to run a second `enqueue-status` command — that was the exact
|
|
696
|
+
forgettable two-step sequence #2901 folded away (SUB-1EA1D3)."""
|
|
583
697
|
assert "coord portal enqueue-question" in DECOMPOSITION_CHAT_SYSTEM_PROMPT
|
|
584
|
-
assert "coord portal enqueue-status" in DECOMPOSITION_CHAT_SYSTEM_PROMPT
|
|
585
698
|
assert "needs-input" in DECOMPOSITION_CHAT_SYSTEM_PROMPT
|
|
699
|
+
ask_section = DECOMPOSITION_CHAT_SYSTEM_PROMPT.split("1. ASK")[1].split(
|
|
700
|
+
"2. PROPOSE"
|
|
701
|
+
)[0]
|
|
702
|
+
assert "enqueue-status" not in ask_section
|
|
703
|
+
assert "queues its own" in ask_section
|
|
586
704
|
|
|
587
705
|
|
|
588
706
|
def test_system_prompt_propose_terminal_move_uses_decision_commands():
|
|
@@ -21,6 +21,7 @@ from coord.portal_sync import (
|
|
|
21
21
|
enqueue_preview,
|
|
22
22
|
enqueue_question,
|
|
23
23
|
enqueue_status,
|
|
24
|
+
ordering_block_reason,
|
|
24
25
|
sync_tick,
|
|
25
26
|
)
|
|
26
27
|
|
|
@@ -222,12 +223,12 @@ def test_reallocation_converges_and_then_the_announcement_goes():
|
|
|
222
223
|
|
|
223
224
|
|
|
224
225
|
def test_second_question_cannot_ride_on_the_first_questions_confirmation():
|
|
226
|
+
# enqueue_question (#2901) queues its own needs-input status right
|
|
227
|
+
# behind the question — no separate enqueue_status call needed here.
|
|
225
228
|
enqueue_question(SUB, "which colour?")
|
|
226
|
-
enqueue_status(SUB, "needs-input")
|
|
227
229
|
sync_tick(client=FakeClient()) # round 1 lands cleanly
|
|
228
230
|
|
|
229
231
|
enqueue_question(SUB, "which font?")
|
|
230
|
-
enqueue_status(SUB, "needs-input")
|
|
231
232
|
# The second question fails to send; its announcement must not overtake it.
|
|
232
233
|
client = FakeClient(push_error=PortalBridgeError("boom"))
|
|
233
234
|
sync_tick(client=client)
|
|
@@ -238,6 +239,46 @@ def test_second_question_cannot_ride_on_the_first_questions_confirmation():
|
|
|
238
239
|
assert client2.pushed_kinds == ["question", "status"]
|
|
239
240
|
|
|
240
241
|
|
|
242
|
+
def test_enqueue_question_queues_its_own_announcement():
|
|
243
|
+
"""#2901: a question pushed without a status row behind it sends no
|
|
244
|
+
email (coord-portal's own rule — a push only mails the customer when it
|
|
245
|
+
actually names ``status``). `enqueue_question` must queue that status
|
|
246
|
+
itself, in the same call, so the announcement cannot be forgotten."""
|
|
247
|
+
question_row, status_row = enqueue_question(SUB, "which colour?")
|
|
248
|
+
|
|
249
|
+
assert question_row.kind == portal_sync.KIND_QUESTION
|
|
250
|
+
assert status_row.kind == portal_sync.KIND_STATUS
|
|
251
|
+
assert status_row.announces == "needs-input"
|
|
252
|
+
assert status_row.requires_kind == portal_sync.KIND_QUESTION
|
|
253
|
+
# The announcement is seq N+1 right behind its question — the ordering
|
|
254
|
+
# guard (`ANNOUNCING_STATUSES`/`ordering_block_reason`) keys off exactly
|
|
255
|
+
# this adjacency.
|
|
256
|
+
assert status_row.seq == question_row.seq + 1
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
def test_enqueue_question_reproduces_sub_1ea1d3_second_question_also_announced():
|
|
260
|
+
"""Regression for #2901 / SUB-1EA1D3: question (applied) -> status
|
|
261
|
+
(applied) -> a second question with NO status row behind it — the real
|
|
262
|
+
outbox shape that shipped with no email. With the fold, the second
|
|
263
|
+
`enqueue_question` call must also queue its own status, so the drain
|
|
264
|
+
sends question -> status -> question -> status in order, never a bare
|
|
265
|
+
trailing question."""
|
|
266
|
+
enqueue_question(SUB, "Two things to help us scope...")
|
|
267
|
+
sync_tick(client=FakeClient()) # first question + its announcement land
|
|
268
|
+
|
|
269
|
+
enqueue_question(SUB, "Thanks -- that covers who...")
|
|
270
|
+
client = FakeClient()
|
|
271
|
+
sync_tick(client=client)
|
|
272
|
+
|
|
273
|
+
assert client.pushed_kinds == ["question", "status"]
|
|
274
|
+
rows = portal_store.outbox_for_submission(SUB)
|
|
275
|
+
assert [r.kind for r in rows] == ["question", "status", "question", "status"]
|
|
276
|
+
assert [r.state for r in rows] == [portal_store.STATE_APPLIED] * 4
|
|
277
|
+
# The second question's announcement never sent ahead of its own
|
|
278
|
+
# question being confirmed applied.
|
|
279
|
+
assert ordering_block_reason(rows[3]) is None
|
|
280
|
+
|
|
281
|
+
|
|
241
282
|
def test_a_stalled_submission_does_not_stall_another_customers():
|
|
242
283
|
enqueue_design_round(SUB, _design())
|
|
243
284
|
enqueue_status(SUB, "awaiting-signoff")
|
|
@@ -1875,9 +1916,9 @@ def _push_and_apply_question(question: str = "Offline-first, yes or no?"):
|
|
|
1875
1916
|
path `mark_applied`'s `kind == "question"` branch runs for real once
|
|
1876
1917
|
`_push` gets a 200 back, which is what writes the `question_pushed`
|
|
1877
1918
|
ledger entry `_consume_questions` later pairs an answer against."""
|
|
1878
|
-
|
|
1879
|
-
portal_store.mark_applied(
|
|
1880
|
-
return
|
|
1919
|
+
question_row, _status_row = enqueue_question(SUB, question)
|
|
1920
|
+
portal_store.mark_applied(question_row)
|
|
1921
|
+
return question_row
|
|
1881
1922
|
|
|
1882
1923
|
|
|
1883
1924
|
class TestQuestionAnswerFields:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_coordinator-0.5.279 → code_coordinator-0.5.281}/code_coordinator.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.279 → code_coordinator-0.5.281}/code_coordinator.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.279 → code_coordinator-0.5.281}/code_coordinator.egg-info/requires.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.279 → code_coordinator-0.5.281}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
File without changes
|
{code_coordinator-0.5.279 → code_coordinator-0.5.281}/code_coordinator.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|