code-coordinator 0.5.289__tar.gz → 0.5.291__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.289 → code_coordinator-0.5.291}/.github/workflows/test.yml +36 -10
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/PKG-INFO +1 -1
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/code_coordinator.egg-info/SOURCES.txt +1 -1
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/code_coordinator.egg-info/scm_file_list.json +1 -1
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/agent.py +76 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/board_schema.py +6 -4
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/board_wire.py +2 -1
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/portal.py +62 -8
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/decomposition_chat.py +21 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/portal_store.py +133 -1
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/serve_app.py +90 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/usage.py +3 -3
- code_coordinator-0.5.291/docs/ADR_COORD_TUI_CI.md +217 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/codegen.py +124 -45
- code_coordinator-0.5.291/tests/test_board_fixture.py +82 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_board_wire.py +2 -1
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_portal.py +121 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_decomposition_chat.py +149 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_dist_name.py +33 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_generated_rust_fixture.py +78 -63
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_portal_store.py +212 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_sqlite_connect_ratchet.py +13 -3
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/types/generated.rs +12 -8
- code_coordinator-0.5.289/coord/board_bool_guard.py +0 -83
- code_coordinator-0.5.289/tests/test_board_fixture.py +0 -172
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/.gitignore +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/CLAUDE.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/GOAL.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/LICENSE +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/MANIFEST.in +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/README.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/__init__.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/approved_work.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/audit.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/block_log.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/board_service.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/brain.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/ci_fix.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/ci_gitlab.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/claim.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/cli.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/client.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/machine.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/pr.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/store_migrate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/comments.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/config.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/confirm_test.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/dao.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/db.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/deps.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/drive.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/events.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/filelock.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/forge_availability.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/freshness.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/gates.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/github_throttle.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/goal.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/release_cordon.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/stalled_pipeline.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/context.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/models.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/render.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/health/units.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/hooks.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/interactive.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/issues_sync_status.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/machine_onboard.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/models.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/network.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/notify.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/openapi.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/parentage.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/plans.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/progress.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/release_window.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/reports.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/rest_schema.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/review.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/self_health.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/skills/release-now/SKILL.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/smoke.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/split_work.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/sql.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/state.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/store_migrate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/test_author.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/test_report.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-failure-notify.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-failure-notify.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-fleet-watchdog.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-fleet-watchdog.timer +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/ADR_COORD_WEB_CI.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/CUSTOMER_FACING_APPS.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/OPERATOR_GUIDES.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/install-agent.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/pyproject.toml +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/coord-venv-rollback.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/fleet_watchdog.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/gen_mock_index.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/setup.cfg +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/__init__.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/backends.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/conftest.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_approve_dependency_busy_2804.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_approved_work_2532.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_backend_selection.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_board_schema.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_check_gh_argv_containment.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_ci_fix.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_ci_gitlab.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_claude_md_budget.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_diagnose_forge_availability.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_issue_comment.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_issue_view_list.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_pr.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_status_contested_tag.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_commands_common.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_config.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_confirm_test.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_coord_uat.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_dao.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_db.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_deploy_failure_notify_unit.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_deploy_notify_unit.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_drive_queue_blocked_rendering.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_drive_queue_launch_argv.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_drive_queue_roll_pending.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_events.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_fleet_watchdog.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_forge_availability.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_gen_mock_index.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_github_throttle.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_health_coord_web_ci_pin.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_health_fix.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_health_issues_sync_staleness.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_health_release_cordon_probe.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_init.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_install_agent_venv_2911.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_interactive_pane_log_2541.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_issues_sync_status.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_lock_contention_ratchet.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_machine_onboard.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_models.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_network.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_release_cordon_stuck_2490.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_release_propagate_threshold.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_release_roll_between_legs_2854.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_release_roll_window_handoff.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_repo_add.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_review.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_serve_rest_routes.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_session.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_split.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_sql_dialect.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_stale_busy_reviewer_697.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_state.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_store_contract.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_store_migrate.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_text_io_encoding_audit.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_worker_env_venv_isolation.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/test_write_parity.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tests/write_parity.py +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/approved.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-65/board_split_2288.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-67/contract.md +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-67/manifest.yml +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.289 → code_coordinator-0.5.291}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -31,6 +31,17 @@ jobs:
|
|
|
31
31
|
# testpaths=["tests"]) was the one accidental gap. (ms-51 — Playwright,
|
|
32
32
|
# never .py either — left this repo entirely with the webapp, #2009.)
|
|
33
33
|
- run: pytest --ignore=tests/acceptance
|
|
34
|
+
# #2897: the Rust drift gate `tests/test_generated_rust_fixture.py`
|
|
35
|
+
# no longer byte-compares the committed `tui/src/app/types/generated.rs`
|
|
36
|
+
# (see docs/ADR_COORD_TUI_CI.md and the header comment further down
|
|
37
|
+
# this file) — this explicit step stands in for that comparison while
|
|
38
|
+
# `tui/` still lives here. `$COORD_TUI_SRC=.` names this checkout as
|
|
39
|
+
# the coord-tui root (`RUST_OUTPUT_RELPATH` keeps the `tui/` prefix for
|
|
40
|
+
# exactly this reason). One matrix leg only: the generator's output
|
|
41
|
+
# depends on `coord.serve_app.openapi_spec()`, not the Python version.
|
|
42
|
+
- name: python scripts/codegen.py --rust --check
|
|
43
|
+
if: matrix.python-version == '3.12'
|
|
44
|
+
run: COORD_TUI_SRC=. python scripts/codegen.py --rust --check
|
|
34
45
|
# #2180: the cli-pytest sealed route (acceptance.drivers routes
|
|
35
46
|
# "coord/**" -> cli-pytest -> tests/acceptance/ms-37) run through the
|
|
36
47
|
# #2164 CI wrapper instead of a raw `pytest tests/acceptance` call, so
|
|
@@ -310,16 +321,31 @@ jobs:
|
|
|
310
321
|
# for it to run against, and a job that installs Node to build nothing is
|
|
311
322
|
# how the previous `acceptance`-on-every-push waste (#2389) started.
|
|
312
323
|
#
|
|
313
|
-
# #1941: `scripts/codegen.py` also generates coord-tui's RUST wire
|
|
314
|
-
# (`--rust`)
|
|
315
|
-
#
|
|
316
|
-
#
|
|
317
|
-
#
|
|
318
|
-
#
|
|
319
|
-
#
|
|
320
|
-
#
|
|
321
|
-
#
|
|
322
|
-
#
|
|
324
|
+
# #1941/#2897: `scripts/codegen.py` also generates coord-tui's RUST wire
|
|
325
|
+
# types (`--rust`). #2897 gave that half the SAME cross-repo shape as the
|
|
326
|
+
# TS half above (`--out PATH` / `$COORD_TUI_SRC`, no fallback default,
|
|
327
|
+
# docs/ADR_COORD_TUI_CI.md) — but `tui/` has not actually moved out of
|
|
328
|
+
# this repo yet, so unlike the TS byte-comparison (which is now
|
|
329
|
+
# exclusively `coord-web`'s CI job), the Rust byte-comparison has nowhere
|
|
330
|
+
# else to run yet and stays HERE, as an explicit step below rather than a
|
|
331
|
+
# pytest test:
|
|
332
|
+
#
|
|
333
|
+
# COORD_TUI_SRC=. python scripts/codegen.py --rust --check
|
|
334
|
+
#
|
|
335
|
+
# `tests/test_generated_rust_fixture.py` itself is narrowed to what one
|
|
336
|
+
# checkout can prove — the generator runs and covers every schema — same
|
|
337
|
+
# as `tests/test_generated_types_fixture.py`; it no longer byte-compares
|
|
338
|
+
# the committed `tui/src/app/types/generated.rs`. The day coord-tui gets
|
|
339
|
+
# its own checkout + CI, delete the step below (its replacement lives in
|
|
340
|
+
# that CI, installing `code-coordinator[server]` from PyPI exactly as
|
|
341
|
+
# `coord-web`'s does) — no pytest file to un-narrow.
|
|
342
|
+
#
|
|
343
|
+
# The consumer-side INTEGER-backed-bool text-scraping guard
|
|
344
|
+
# (`coord/board_bool_guard.py`) that used to also read Rust source text
|
|
345
|
+
# here is RETIRED as of #2897, not moved — see docs/ADR_COORD_TUI_CI.md:
|
|
346
|
+
# #2895 (Phase 1 of #2894) deleted coord-tui's last direct SQL reader, so
|
|
347
|
+
# `tests/test_board_schema.py`'s DTO-level assertions are now the sole
|
|
348
|
+
# guard against that class.
|
|
323
349
|
|
|
324
350
|
# #2886: a real Postgres 16 service, so `coord/sql.py`'s Postgres branches
|
|
325
351
|
# (paramstyle translation, upsert idioms, `information_schema`
|
|
@@ -39,7 +39,6 @@ coord/approved_work.py
|
|
|
39
39
|
coord/audit.py
|
|
40
40
|
coord/auto_loop.py
|
|
41
41
|
coord/block_log.py
|
|
42
|
-
coord/board_bool_guard.py
|
|
43
42
|
coord/board_schema.py
|
|
44
43
|
coord/board_service.py
|
|
45
44
|
coord/board_wire.py
|
|
@@ -296,6 +295,7 @@ deploy/coord-web-dist-build.timer
|
|
|
296
295
|
deploy/coord-web-rollback.sh
|
|
297
296
|
deploy/coord-web.service
|
|
298
297
|
deploy/node-shim.sh
|
|
298
|
+
docs/ADR_COORD_TUI_CI.md
|
|
299
299
|
docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md
|
|
300
300
|
docs/ADR_COORD_WEB_CI.md
|
|
301
301
|
docs/ADR_COORD_WEB_DIST.md
|
{code_coordinator-0.5.289 → code_coordinator-0.5.291}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -33,7 +33,6 @@
|
|
|
33
33
|
"coord/audit.py",
|
|
34
34
|
"coord/auto_loop.py",
|
|
35
35
|
"coord/block_log.py",
|
|
36
|
-
"coord/board_bool_guard.py",
|
|
37
36
|
"coord/board_schema.py",
|
|
38
37
|
"coord/board_service.py",
|
|
39
38
|
"coord/board_wire.py",
|
|
@@ -288,6 +287,7 @@
|
|
|
288
287
|
"deploy/coord-web-rollback.sh",
|
|
289
288
|
"deploy/coord-web.service",
|
|
290
289
|
"deploy/node-shim.sh",
|
|
290
|
+
"docs/ADR_COORD_TUI_CI.md",
|
|
291
291
|
"docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md",
|
|
292
292
|
"docs/ADR_COORD_WEB_CI.md",
|
|
293
293
|
"docs/ADR_COORD_WEB_DIST.md",
|
|
@@ -4139,6 +4139,82 @@ and report back what you asked/proposed/filed/queued/linked (and any gap) \
|
|
|
4139
4139
|
when done.\
|
|
4140
4140
|
"""
|
|
4141
4141
|
|
|
4142
|
+
# #2867: the ATTENDED posture. Appended to (never merged into)
|
|
4143
|
+
# DECOMPOSITION_CHAT_SYSTEM_PROMPT by `coord portal decompose-chat
|
|
4144
|
+
# --interactive` only — the headless dispatch
|
|
4145
|
+
# (`default_worker_command`'s `spec.type == "decomposition-chat"` branch)
|
|
4146
|
+
# must keep receiving the base prompt byte-for-byte, because it genuinely
|
|
4147
|
+
# has nobody to ask and its one-turn fire-and-forget shape is correct there.
|
|
4148
|
+
#
|
|
4149
|
+
# WHY this exists at all: #2750 shipped `--interactive` reusing the headless
|
|
4150
|
+
# prompt verbatim, so the attended session was written for an agent with
|
|
4151
|
+
# nobody to ask ("THIS iteration ends in EXACTLY ONE of three terminal
|
|
4152
|
+
# moves", each a command to run) and duly read the ledger, chose ASK, and
|
|
4153
|
+
# ran `enqueue-question` in the SAME turn — its whole output to the human
|
|
4154
|
+
# sitting there was a report of what it had already done. On a paid client
|
|
4155
|
+
# engagement where a round-trip takes days, that spent a day on questions
|
|
4156
|
+
# the operator may already have had answers to. The base prompt's
|
|
4157
|
+
# "summarize your plan before writing anything" was not enough: nothing
|
|
4158
|
+
# made it a STOP, and without a turn boundary a compliant session still
|
|
4159
|
+
# writes.
|
|
4160
|
+
DECOMPOSITION_CHAT_ATTENDED_ADDENDUM = """\
|
|
4161
|
+
|
|
4162
|
+
── ATTENDED SESSION (`--interactive`) — OVERRIDES THE ABOVE ──
|
|
4163
|
+
|
|
4164
|
+
An operator is sitting at this terminal RIGHT NOW, watching you type. That \
|
|
4165
|
+
changes the shape of this iteration, and where this section conflicts with \
|
|
4166
|
+
anything above, THIS SECTION WINS.
|
|
4167
|
+
|
|
4168
|
+
**YOUR FIRST TURN WRITES NOTHING.** Not `coord portal enqueue-question`, not \
|
|
4169
|
+
`coord portal enqueue-status`, not `coord portal decision propose/reject/\
|
|
4170
|
+
supersede`, not `coord issue create`, not `coord milestone create`, not \
|
|
4171
|
+
`coord drive-queue add`, not `coord portal link`, not `coord issue edit`. \
|
|
4172
|
+
Read-only commands (`coord portal ledger`, `gh issue view`, reading files) \
|
|
4173
|
+
are fine and expected. The "EXACTLY ONE of three terminal moves" rule above \
|
|
4174
|
+
still decides WHICH exit this iteration takes — it just does not get to \
|
|
4175
|
+
happen until the operator has answered you.
|
|
4176
|
+
|
|
4177
|
+
So your first turn is:
|
|
4178
|
+
|
|
4179
|
+
1. State your READ — the MODE line verbatim (as always), then what RUNNING \
|
|
4180
|
+
CONTEXT already tells you, explicitly including any operator-supplied \
|
|
4181
|
+
background recorded there.
|
|
4182
|
+
2. State your PROPOSED EXIT — which of Ask / Propose / Decompose you intend, \
|
|
4183
|
+
the exact command(s) you would run (question text, decision text, issue \
|
|
4184
|
+
titles), and WHY that exit and not the other two.
|
|
4185
|
+
3. State what you are ASSUMING or MISSING — above all, anything you were \
|
|
4186
|
+
about to ask the CLIENT that the OPERATOR may simply know. The operator may \
|
|
4187
|
+
have spoken to the client since the last iteration; a client round-trip \
|
|
4188
|
+
costs days and an operator answer costs one line, so ask the human in front \
|
|
4189
|
+
of you FIRST.
|
|
4190
|
+
4. END YOUR TURN AND WAIT. Do not narrate a plan and then execute it in the \
|
|
4191
|
+
same turn — the turn boundary IS the confirmation.
|
|
4192
|
+
|
|
4193
|
+
Then act on what the operator says: carry out the exit as proposed, or the \
|
|
4194
|
+
revised one they steer you to. If they confirm with no changes, run the \
|
|
4195
|
+
commands exactly as you stated them and report back. If they redirect you \
|
|
4196
|
+
into a different exit, take that one — it is still exactly one terminal \
|
|
4197
|
+
move per iteration.
|
|
4198
|
+
|
|
4199
|
+
**Recording what the operator tells you.** Background the operator relays \
|
|
4200
|
+
("I spoke to her — it's just the two of them, and the calendar is a \
|
|
4201
|
+
nice-to-have") is durable, ledger-class context that every FUTURE session on \
|
|
4202
|
+
every machine should see. It is not a decision, so do NOT push it through \
|
|
4203
|
+
`coord portal decision propose`. Record it verbatim with:
|
|
4204
|
+
|
|
4205
|
+
coord portal note <submission_id> "<what the operator told you>"
|
|
4206
|
+
|
|
4207
|
+
This is an ADDITIONAL write path you are permitted, on top of the ones the \
|
|
4208
|
+
Rules section above enumerates — and, being a write, it is also subject to \
|
|
4209
|
+
the first-turn rule: offer it, then record it once the operator agrees. \
|
|
4210
|
+
OFFER IT PROACTIVELY: the operator should not have to know this command \
|
|
4211
|
+
exists. Any time the operator gives you a substantive fact about the \
|
|
4212
|
+
client, the users, or the scope, say back what you would record and ask \
|
|
4213
|
+
whether to record it. Keep the wording theirs, not your paraphrase — the \
|
|
4214
|
+
ledger is verbatim by design, and the narrative (which is regenerable) is \
|
|
4215
|
+
where summarizing belongs.\
|
|
4216
|
+
"""
|
|
4217
|
+
|
|
4142
4218
|
# Deny list applied to decomposition-chat workers (#2533; extended #2750
|
|
4143
4219
|
# IL-4 for the ask/propose/decompose intake loop). Unlike milestone-chat,
|
|
4144
4220
|
# this type's WHOLE job is to write (issue create / issue edit / milestone
|
|
@@ -287,10 +287,12 @@ BOARD_PROJECTIONS: dict[str, type] = {
|
|
|
287
287
|
#: therefore ship as ``0``/``1``. Their DTO fields are annotated ``int`` on
|
|
288
288
|
#: purpose; ``tests/test_board_schema.py`` asserts the generated JSON Schema
|
|
289
289
|
#: types them ``integer`` and never ``boolean``, so the wire shape survives a
|
|
290
|
-
#: storage-engine swap (Postgres would make these real ``BOOLEAN``s). This
|
|
291
|
-
#: the DTO-level counterpart of ``coord/board_bool_guard.py``'s consumer-
|
|
292
|
-
#: check against the real Rust wire structs (``tui/src/app/types.rs``
|
|
293
|
-
#:
|
|
290
|
+
#: storage-engine swap (Postgres would make these real ``BOOLEAN``s). This
|
|
291
|
+
#: WAS the DTO-level counterpart of ``coord/board_bool_guard.py``'s consumer-
|
|
292
|
+
#: side check against the real Rust wire structs (``tui/src/app/types.rs``
|
|
293
|
+
#: and its generated ``types/generated.rs`` sibling, #1941); that
|
|
294
|
+
#: text-scraping check is retired as of #2897 (docs/ADR_COORD_TUI_CI.md) —
|
|
295
|
+
#: this assertion is now the sole remaining guard.
|
|
294
296
|
INTEGER_BACKED_BOOLEANS: frozenset[str] = frozenset(
|
|
295
297
|
{"is_interactive", "review_scoped", "hold_after", "no_acceptance"}
|
|
296
298
|
)
|
|
@@ -113,7 +113,8 @@ TRUNCATION_NOTICE = "\n… [truncated on the /board wire — full text: detail e
|
|
|
113
113
|
# two: `coord/**` and `tui/**`). Lines carrying it survive the body cut; see
|
|
114
114
|
# `_machine_readable_residue`. Kept in sync with the Rust side by
|
|
115
115
|
# tests/test_board_wire.py::test_allowed_glob_marker_matches_the_rust_parser,
|
|
116
|
-
# the same cross-language
|
|
116
|
+
# the same cross-language-guard posture the now-retired coord/board_bool_
|
|
117
|
+
# guard.py used (#2897, docs/ADR_COORD_TUI_CI.md).
|
|
117
118
|
#
|
|
118
119
|
# Measured cost of the retention: ZERO on today's live board — 0 of 781
|
|
119
120
|
# issue bodies carry the marker (the house `## Files` convention is a bare
|
|
@@ -596,6 +596,7 @@ def _run_decompose_chat_interactive(
|
|
|
596
596
|
|
|
597
597
|
from coord.agent import ( # noqa: PLC0415
|
|
598
598
|
AssignmentSpec as _AssignmentSpecDc,
|
|
599
|
+
DECOMPOSITION_CHAT_ATTENDED_ADDENDUM,
|
|
599
600
|
DECOMPOSITION_CHAT_DENY_COMMANDS,
|
|
600
601
|
DECOMPOSITION_CHAT_SYSTEM_PROMPT,
|
|
601
602
|
build_deny_prompt,
|
|
@@ -664,7 +665,8 @@ def _run_decompose_chat_interactive(
|
|
|
664
665
|
if _board_service.resolve() is not None:
|
|
665
666
|
click.secho(
|
|
666
667
|
"note: this machine is a thin client — `coord portal decision`/"
|
|
667
|
-
"`ledger`/`link` route through the daemon (#2751),
|
|
668
|
+
"`ledger`/`link`/`note` route through the daemon (#2751/#2867), "
|
|
669
|
+
"but `coord "
|
|
668
670
|
"portal enqueue-question`/`enqueue-status` (the Ask move) do "
|
|
669
671
|
"not yet and will refuse loudly if this iteration needs them. "
|
|
670
672
|
"ssh to the daemon host for that case (#2750's own stated "
|
|
@@ -699,7 +701,9 @@ def _run_decompose_chat_interactive(
|
|
|
699
701
|
f"Intake session for portal submission {submission_id} "
|
|
700
702
|
f"(MODE: {mode_word} — {discuss_reason}): read the full context at "
|
|
701
703
|
f"{brief_path} (submission fields, repo topology, and the running-"
|
|
702
|
-
"context ledger so far) and let's work through it."
|
|
704
|
+
"context ledger so far) and let's work through it. This is an "
|
|
705
|
+
"ATTENDED session: state your read and your PROPOSED exit, then stop "
|
|
706
|
+
"and wait for me — write nothing until I answer (#2867)."
|
|
703
707
|
)
|
|
704
708
|
|
|
705
709
|
spec = _AssignmentSpecDc(
|
|
@@ -719,15 +723,22 @@ def _run_decompose_chat_interactive(
|
|
|
719
723
|
# internal branch table has no `"decomposition-chat"` case, so leaving
|
|
720
724
|
# it implicit would silently fall through to the generic work-shaped
|
|
721
725
|
# branch (full WORKER_SYSTEM_PROMPT + Edit/Write/Monitor), which is
|
|
722
|
-
# wrong for a no-worktree chat type.
|
|
723
|
-
#
|
|
724
|
-
#
|
|
725
|
-
#
|
|
726
|
+
# wrong for a no-worktree chat type.
|
|
727
|
+
#
|
|
728
|
+
# #2867: the attended addendum is appended HERE and only here — the
|
|
729
|
+
# headless dispatch path (`coord.agent.default_worker_command`'s own
|
|
730
|
+
# `spec.type == "decomposition-chat"` branch) keeps the base prompt
|
|
731
|
+
# byte-for-byte, so its one-turn fire-and-forget behaviour is unchanged.
|
|
732
|
+
# This session, by contrast, has a human in the pane: the addendum makes
|
|
733
|
+
# its first turn confirm-then-write (#2742's absorbed half, which #2750
|
|
734
|
+
# only ever wired into mode SELECTION, never into the posture itself).
|
|
726
735
|
argv = provider.build_command(
|
|
727
736
|
spec,
|
|
728
737
|
resolved_model=resolved_model,
|
|
729
|
-
system_prompt=
|
|
730
|
-
|
|
738
|
+
system_prompt=(
|
|
739
|
+
DECOMPOSITION_CHAT_SYSTEM_PROMPT
|
|
740
|
+
+ DECOMPOSITION_CHAT_ATTENDED_ADDENDUM
|
|
741
|
+
+ build_deny_prompt(DECOMPOSITION_CHAT_DENY_COMMANDS)
|
|
731
742
|
),
|
|
732
743
|
allowed_tools="Read,Bash",
|
|
733
744
|
)
|
|
@@ -1805,6 +1816,16 @@ def _render_ledger_text(payload: dict) -> str:
|
|
|
1805
1816
|
f"{a['text']} (by {a['actor'] or 'customer'})"
|
|
1806
1817
|
)
|
|
1807
1818
|
|
|
1819
|
+
# #2867: verbatim, attributed, in ledger seq order — its own heading so
|
|
1820
|
+
# a later session can tell operator-relayed background from something
|
|
1821
|
+
# the client actually wrote on the portal. `.get` (not `[...]`) because
|
|
1822
|
+
# a thin client may be talking to a daemon that predates this key.
|
|
1823
|
+
notes = payload.get("operator_notes") or []
|
|
1824
|
+
if notes:
|
|
1825
|
+
lines += ["", "## Operator notes"]
|
|
1826
|
+
for n in notes:
|
|
1827
|
+
lines.append(f"- [{n['seq']}] {n['text']} (by {n['actor'] or 'operator'})")
|
|
1828
|
+
|
|
1808
1829
|
lines += ["", "## Decisions"]
|
|
1809
1830
|
current = payload["decisions"]
|
|
1810
1831
|
if not current:
|
|
@@ -1861,6 +1882,39 @@ def portal_ledger(submission_id: str, as_json: bool) -> None:
|
|
|
1861
1882
|
click.echo(_render_ledger_text(payload))
|
|
1862
1883
|
|
|
1863
1884
|
|
|
1885
|
+
@portal_group.command("note")
|
|
1886
|
+
@click.argument("submission_id")
|
|
1887
|
+
@click.argument("text")
|
|
1888
|
+
def portal_note(submission_id: str, text: str) -> None:
|
|
1889
|
+
"""Record operator-supplied background about SUBMISSION_ID (#2867).
|
|
1890
|
+
|
|
1891
|
+
The ledger layer that holds what the OPERATOR knows — "spoke to the
|
|
1892
|
+
client: household of two, no logins needed" — which before this had
|
|
1893
|
+
nowhere durable to live and died with the tmux pane it was typed into.
|
|
1894
|
+
Stored verbatim on the ledger, attributed to you, and rendered into
|
|
1895
|
+
every future session's RUNNING CONTEXT on any machine.
|
|
1896
|
+
|
|
1897
|
+
Deliberately NOT `coord portal decision propose`: a relayed fact is not
|
|
1898
|
+
a judgment call, has no proposed/confirmed lifecycle, and does not
|
|
1899
|
+
belong in the decision archive.
|
|
1900
|
+
|
|
1901
|
+
Like `decision` and `link` (#2751) this is not thin-client-refused — it
|
|
1902
|
+
routes through the daemon's `/portal-note` seam when `board_service` is
|
|
1903
|
+
configured, so it works from wherever the operator happens to be.
|
|
1904
|
+
"""
|
|
1905
|
+
from coord import portal_store # noqa: PLC0415
|
|
1906
|
+
|
|
1907
|
+
try:
|
|
1908
|
+
entry = portal_store.append_operator_note(submission_id, text, actor=_actor())
|
|
1909
|
+
except ValueError as exc:
|
|
1910
|
+
click.secho(f"error: {exc}", fg="red")
|
|
1911
|
+
raise SystemExit(2) from exc
|
|
1912
|
+
click.secho(
|
|
1913
|
+
f"noted: {submission_id} #{entry.seq} (by {entry.actor}) — {entry.text}",
|
|
1914
|
+
fg="green",
|
|
1915
|
+
)
|
|
1916
|
+
|
|
1917
|
+
|
|
1864
1918
|
@portal_group.group("decision")
|
|
1865
1919
|
def portal_decision_group() -> None:
|
|
1866
1920
|
"""Propose / confirm / reject / supersede a decision (#2749).
|
|
@@ -278,6 +278,11 @@ def render_running_context_section(payload: dict[str, Any]) -> str:
|
|
|
278
278
|
ones carrying why), and the current narrative. This is what lets a
|
|
279
279
|
fresh iteration pick up exactly where the last one left off with no
|
|
280
280
|
memory of the prior session (#2750's "the loop").
|
|
281
|
+
|
|
282
|
+
Since #2867 it also renders the ledger's operator-note layer — what a
|
|
283
|
+
human relayed out of band ("I spoke to her; it's just the two of them")
|
|
284
|
+
— attributed as operator-supplied so a session can tell it from
|
|
285
|
+
something the client wrote on the portal itself.
|
|
281
286
|
"""
|
|
282
287
|
lines: list[str] = ["RUNNING CONTEXT (from the portal ledger):", "", "Q&A so far:"]
|
|
283
288
|
qa = payload.get("qa") or []
|
|
@@ -301,6 +306,22 @@ def render_running_context_section(payload: dict[str, Any]) -> str:
|
|
|
301
306
|
f"{a.get('text', '')} (by {a.get('actor') or 'customer'})"
|
|
302
307
|
)
|
|
303
308
|
|
|
309
|
+
# #2867: verbatim and attributed, so a session on a different machine
|
|
310
|
+
# with no shared transcript still sees what the operator was told out of
|
|
311
|
+
# band. Placed ahead of decisions because it is INPUT to them.
|
|
312
|
+
notes = payload.get("operator_notes") or []
|
|
313
|
+
if notes:
|
|
314
|
+
lines.append("")
|
|
315
|
+
lines.append(
|
|
316
|
+
"Operator-supplied background (relayed by a human, NOT written by "
|
|
317
|
+
"the client on the portal — treat as fact, do not re-ask it):"
|
|
318
|
+
)
|
|
319
|
+
for n in notes:
|
|
320
|
+
lines.append(
|
|
321
|
+
f" - [{n.get('seq')}] {n.get('text')} "
|
|
322
|
+
f"(by {n.get('actor') or 'operator'})"
|
|
323
|
+
)
|
|
324
|
+
|
|
304
325
|
lines.append("")
|
|
305
326
|
lines.append("Current decisions (proposed/confirmed — treat as live guidance):")
|
|
306
327
|
current = payload.get("decisions") or []
|
|
@@ -1739,6 +1739,44 @@ LEDGER_KIND_DRAFT_EDITED = "draft_edited"
|
|
|
1739
1739
|
LEDGER_KIND_DRAFT_APPROVED = "draft_approved"
|
|
1740
1740
|
LEDGER_KIND_DRAFT_REJECTED = "draft_rejected"
|
|
1741
1741
|
|
|
1742
|
+
#: #2867: background the OPERATOR relays — "I spoke to her; it's just the two
|
|
1743
|
+
#: of them and the calendar is a nice-to-have." Ledger-class, not
|
|
1744
|
+
#: decision-class: it is a FACT someone told the operator, not a judgment
|
|
1745
|
+
#: call with a proposed/confirmed lifecycle, so forcing it through
|
|
1746
|
+
#: `coord portal decision propose` would both lose the raw statement and
|
|
1747
|
+
#: pollute the decision archive. Still coord-observed in the sense this
|
|
1748
|
+
#: section's ownership note means — a human typed it at coord's own CLI,
|
|
1749
|
+
#: which is not "an agent's say-so about a fact it does not solely observe".
|
|
1750
|
+
#: Stored VERBATIM and never folded into the narrative (#2746: "a ledger that
|
|
1751
|
+
#: IS a narrative cannot be regenerated — that asymmetry is the design").
|
|
1752
|
+
LEDGER_KIND_OPERATOR_NOTE = "operator_note"
|
|
1753
|
+
|
|
1754
|
+
#: Marks a ledger ``actor`` as a human at coord's CLI rather than the portal
|
|
1755
|
+
#: wire, so a later session can tell operator-relayed context from something
|
|
1756
|
+
#: the client actually wrote. See :func:`operator_actor`.
|
|
1757
|
+
OPERATOR_ACTOR_PREFIX = "operator:"
|
|
1758
|
+
|
|
1759
|
+
|
|
1760
|
+
def operator_actor(name: str = "") -> str:
|
|
1761
|
+
"""The ``actor`` string for an operator-authored ledger row.
|
|
1762
|
+
|
|
1763
|
+
``"jane"`` → ``"operator:jane"``; empty → the bare ``"operator"``. Already
|
|
1764
|
+
prefixed values pass through unchanged, so routing a note through the
|
|
1765
|
+
daemon (which re-normalizes) can't produce ``operator:operator:jane``.
|
|
1766
|
+
"""
|
|
1767
|
+
n = (name or "").strip()
|
|
1768
|
+
if not n:
|
|
1769
|
+
return "operator"
|
|
1770
|
+
return n if n.startswith(OPERATOR_ACTOR_PREFIX) else f"{OPERATOR_ACTOR_PREFIX}{n}"
|
|
1771
|
+
|
|
1772
|
+
|
|
1773
|
+
def is_operator_actor(actor: str) -> bool:
|
|
1774
|
+
"""True when *actor* names a human at coord's CLI (:func:`operator_actor`'s
|
|
1775
|
+
output) rather than the customer or an agent — what the briefing renders
|
|
1776
|
+
attribute notes with."""
|
|
1777
|
+
a = (actor or "").strip()
|
|
1778
|
+
return a == "operator" or a.startswith(OPERATOR_ACTOR_PREFIX)
|
|
1779
|
+
|
|
1742
1780
|
|
|
1743
1781
|
@dataclass(frozen=True)
|
|
1744
1782
|
class LedgerEntry:
|
|
@@ -1870,6 +1908,79 @@ def ledger_for_submission(submission_id: str) -> list[LedgerEntry]:
|
|
|
1870
1908
|
return [_ledger_from_row(r) for r in rows]
|
|
1871
1909
|
|
|
1872
1910
|
|
|
1911
|
+
def operator_notes_for_submission(submission_id: str) -> list[LedgerEntry]:
|
|
1912
|
+
"""*submission_id*'s operator notes (#2867), oldest first — the ledger
|
|
1913
|
+
rows a human typed, filtered out of :func:`ledger_for_submission`'s full
|
|
1914
|
+
history by kind."""
|
|
1915
|
+
return [
|
|
1916
|
+
e
|
|
1917
|
+
for e in ledger_for_submission(submission_id)
|
|
1918
|
+
if e.kind == LEDGER_KIND_OPERATOR_NOTE
|
|
1919
|
+
]
|
|
1920
|
+
|
|
1921
|
+
|
|
1922
|
+
def _append_operator_note_local(
|
|
1923
|
+
submission_id: str, text: str, *, actor: str = "", now: float | None = None
|
|
1924
|
+
) -> LedgerEntry:
|
|
1925
|
+
"""Write half of :func:`append_operator_note` — runs on the daemon host
|
|
1926
|
+
(either directly, or via ``/portal-note`` on behalf of a thin client).
|
|
1927
|
+
|
|
1928
|
+
Validates the submission EXISTS here rather than in the CLI: on a thin
|
|
1929
|
+
client the local ``portal_submissions`` table is empty by construction
|
|
1930
|
+
(#2336), so a caller-side check would reject every id. Doing it here
|
|
1931
|
+
means the "unknown submission" error is raised where the real table
|
|
1932
|
+
lives, whichever machine the operator typed the command on.
|
|
1933
|
+
"""
|
|
1934
|
+
if not submission_id or not submission_id.strip():
|
|
1935
|
+
raise ValueError("operator note needs a submission_id")
|
|
1936
|
+
if not text or not text.strip():
|
|
1937
|
+
raise ValueError("operator note needs non-empty text")
|
|
1938
|
+
if get_submission(submission_id) is None:
|
|
1939
|
+
raise ValueError(
|
|
1940
|
+
f"unknown submission {submission_id!r} — no portal submission with "
|
|
1941
|
+
"that id (check `coord portal status` for the current ids)"
|
|
1942
|
+
)
|
|
1943
|
+
return append_ledger_entry(
|
|
1944
|
+
submission_id,
|
|
1945
|
+
LEDGER_KIND_OPERATOR_NOTE,
|
|
1946
|
+
text=text.strip(),
|
|
1947
|
+
actor=operator_actor(actor),
|
|
1948
|
+
now=now,
|
|
1949
|
+
)
|
|
1950
|
+
|
|
1951
|
+
|
|
1952
|
+
def _route_note(payload: dict[str, Any]) -> dict[str, Any] | None:
|
|
1953
|
+
"""POST *payload* to the daemon's ``/portal-note`` seam, or ``None`` if
|
|
1954
|
+
this process IS the daemon host — the note-shaped twin of
|
|
1955
|
+
:func:`_route_decision`, and daemon-routed for exactly the same reason
|
|
1956
|
+
(#2751): the operator may be sitting at any machine in the fleet, and a
|
|
1957
|
+
note written into a thin client's own empty DB would be silently lost.
|
|
1958
|
+
"""
|
|
1959
|
+
from coord import board_service # noqa: PLC0415
|
|
1960
|
+
|
|
1961
|
+
svc = board_service.resolve()
|
|
1962
|
+
return board_service.route_write(svc, "/portal-note", payload)
|
|
1963
|
+
|
|
1964
|
+
|
|
1965
|
+
def append_operator_note(
|
|
1966
|
+
submission_id: str, text: str, *, actor: str = "", now: float | None = None
|
|
1967
|
+
) -> LedgerEntry:
|
|
1968
|
+
"""Append one operator-supplied background fact to *submission_id*'s
|
|
1969
|
+
ledger (#2867) — routed to the daemon when ``board_service`` is
|
|
1970
|
+
configured, else written locally.
|
|
1971
|
+
|
|
1972
|
+
Raises :class:`ValueError` for an unknown submission, empty text, or a
|
|
1973
|
+
missing id. The stored text is VERBATIM (stripped of surrounding
|
|
1974
|
+
whitespace only) and is never rewritten into the narrative.
|
|
1975
|
+
"""
|
|
1976
|
+
routed = _route_note(
|
|
1977
|
+
{"submission_id": submission_id, "text": text, "actor": actor}
|
|
1978
|
+
)
|
|
1979
|
+
if routed is not None:
|
|
1980
|
+
return _ledger_from_row(routed["entry"])
|
|
1981
|
+
return _append_operator_note_local(submission_id, text, actor=actor, now=now)
|
|
1982
|
+
|
|
1983
|
+
|
|
1873
1984
|
# ── layer 2: decisions (agent-authored, operator-confirmed) ─────────────────
|
|
1874
1985
|
|
|
1875
1986
|
DECISION_PROPOSED = "proposed"
|
|
@@ -2208,6 +2319,11 @@ def render_ledger_payload(submission_id: str) -> dict[str, Any]:
|
|
|
2208
2319
|
:func:`coord.portal_sync._record_question_answer` never drops one just
|
|
2209
2320
|
because it can't be paired) lands in ``unpaired_answers`` instead of
|
|
2210
2321
|
being silently lost.
|
|
2322
|
+
|
|
2323
|
+
Operator notes (#2867) come back verbatim under their own
|
|
2324
|
+
``operator_notes`` key, in ledger ``seq`` order — deliberately NOT mixed
|
|
2325
|
+
into ``qa`` (they answer no question) and NOT folded into ``narrative``
|
|
2326
|
+
(they are ledger-class facts, and the narrative is regenerable).
|
|
2211
2327
|
"""
|
|
2212
2328
|
ledger = ledger_for_submission(submission_id)
|
|
2213
2329
|
decisions = decisions_for_submission(submission_id)
|
|
@@ -2215,8 +2331,11 @@ def render_ledger_payload(submission_id: str) -> dict[str, Any]:
|
|
|
2215
2331
|
|
|
2216
2332
|
questions: dict[int | None, dict[str, Any]] = {}
|
|
2217
2333
|
unpaired_answers: list[LedgerEntry] = []
|
|
2334
|
+
operator_notes: list[LedgerEntry] = []
|
|
2218
2335
|
for entry in ledger:
|
|
2219
|
-
if entry.kind ==
|
|
2336
|
+
if entry.kind == LEDGER_KIND_OPERATOR_NOTE:
|
|
2337
|
+
operator_notes.append(entry)
|
|
2338
|
+
elif entry.kind == LEDGER_KIND_QUESTION_PUSHED:
|
|
2220
2339
|
questions.setdefault(
|
|
2221
2340
|
entry.question_revision, {"question": entry, "answers": []}
|
|
2222
2341
|
)
|
|
@@ -2252,6 +2371,19 @@ def render_ledger_payload(submission_id: str) -> dict[str, Any]:
|
|
|
2252
2371
|
}
|
|
2253
2372
|
for a in unpaired_answers
|
|
2254
2373
|
],
|
|
2374
|
+
# #2867: verbatim, in ledger `seq` order (`ledger_for_submission` is
|
|
2375
|
+
# seq-ordered and this list preserves that), carrying the operator
|
|
2376
|
+
# `actor` so every renderer can attribute them rather than letting
|
|
2377
|
+
# them read as something the client said.
|
|
2378
|
+
"operator_notes": [
|
|
2379
|
+
{
|
|
2380
|
+
"seq": n.seq,
|
|
2381
|
+
"text": n.text,
|
|
2382
|
+
"actor": n.actor,
|
|
2383
|
+
"recorded_at": n.recorded_at,
|
|
2384
|
+
}
|
|
2385
|
+
for n in operator_notes
|
|
2386
|
+
],
|
|
2255
2387
|
"decisions": [
|
|
2256
2388
|
{
|
|
2257
2389
|
"seq": d.seq,
|