drydock-cli 2.8.5__tar.gz → 2.8.6__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.
- drydock_cli-2.8.6/.auto_release.lock +1 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/PKG-INFO +1 -1
- drydock_cli-2.8.6/drydock/__main__.py +17 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/cli.py +60 -38
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/agent_loop.py +71 -11
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/config/_settings.py +29 -1
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/config/local_detect.py +3 -1
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/config/migrate.py +16 -5
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/pyproject.toml +1 -1
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/llm_balancer.py +8 -1
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/trip_log.md +235 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/uv.lock +1 -1
- drydock_cli-2.8.5/.auto_release.lock +0 -1
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/.claude/scheduled_tasks.lock +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/.github/CODEOWNERS +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/.github/workflows/build-and-upload.yml +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/.github/workflows/ci.yml +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/.github/workflows/issue-labeler.yml +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/.github/workflows/release.yml +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/.gitignore +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/.pre-commit-config.yaml +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/.python-version +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/.typos.toml +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/.vscode/extensions.json +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/.vscode/launch.json +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/.vscode/settings.json +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/AGENTS.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/Admiral.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/CHANGELOG.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/CLAUDE.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/CONTRIBUTING.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/DEPLOYMENT.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/HLE_PRD.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/JETSON_BENCH.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/LICENSE +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/MODEL_SHORTCOMINGS.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/NOTICE +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/README.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/SOVEREIGN_PRD.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/TRIAGE_v1.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/action.yml +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/README.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results1.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results13.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results14.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results15.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results16.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results17.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results18.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results19.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results2.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results20.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results3.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results4.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results5.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results6.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results7.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results8.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results9.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/baseline_history/results_evolved_v1.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/distribution/zed/LICENSE +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/distribution/zed/extension.toml +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/distribution/zed/icons/mistral_vibe.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/docs/README.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/docs/acp-setup.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/docs/archive/BASELINE_412.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/docs/archive/Drydock_rebrand.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/docs/archive/OVERNIGHT_PROGRESS.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/docs/archive/OVERNIGHT_REPORT_2026_04_13.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/docs/archive/PERF_SWEEP_PLAN.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/docs/archive/PRD.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/docs/archive/drydock_terms.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/docs/archive/resume.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/docs/proxy-setup.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/acp/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/acp/acp_agent_loop.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/acp/acp_logger.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/acp/entrypoint.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/acp/tools/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/acp/tools/base.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/acp/tools/builtins/bash.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/acp/tools/builtins/read_file.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/acp/tools/builtins/search_replace.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/acp/tools/builtins/todo.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/acp/tools/builtins/write_file.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/acp/tools/session_update.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/acp/utils.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/admiral/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/admiral/detectors.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/admiral/detectors_proposed.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/admiral/history.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/admiral/interventions.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/admiral/llm_analyzer.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/admiral/metrics.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/admiral/opus_escalator.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/admiral/persistence.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/admiral/policy.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/admiral/proposer.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/admiral/stager.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/admiral/task_classifier.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/admiral/tuning.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/admiral/validator.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/admiral/worker.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/autocompletion/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/autocompletion/base.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/autocompletion/path_completion.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/autocompletion/slash_command.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/clipboard.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/commands.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/entrypoint.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/fix_windows_path.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/history_manager.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/terminal_setup.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/app.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/app.tcss +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/external_editor.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/handlers/event_handler.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/notifications/adapters/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/notifications/ports/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/approval_app.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/checkpoint_picker.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/compact.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/loading.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/messages.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/tools.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/windowing/history.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/textual_ui/windowing/state.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/update_notifier/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/update_notifier/update.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/cli/update_notifier/whats_new.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/agents/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/agents/manager.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/agents/models.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/auth/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/auth/crypto.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/auth/github.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/autocompletion/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/autocompletion/completers.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/autocompletion/file_indexer/store.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/autocompletion/fuzzy.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/autocompletion/path_prompt.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/build_orchestrator.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/checkpoint.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/classifier/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/classifier/__main__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/classifier/classifier.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/classifier/dispatcher.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/classifier/rules.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/classifier/signal.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/config/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/config/_dotenv.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/config/doctor.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/config/harness_files/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/config/harness_files/_harness_manager.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/config/harness_files/_paths.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/consultant.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/context_recovery.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/drydock_states.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/hooks.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/llm/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/llm/backend/anthropic.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/llm/backend/base.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/llm/backend/factory.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/llm/backend/generic.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/llm/backend/mistral.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/llm/backend/vertex.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/llm/exceptions.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/llm/format.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/llm/message_utils.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/llm/types.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/logger.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/middleware.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/output_formatters.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/paths/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/paths/_drydock_home.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/paths/_local_config_walk.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/paths/conventions.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/plan_session.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/plugins.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/programmatic.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/prompts/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/prompts/builder.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/prompts/cli.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/prompts/compact.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/prompts/dangerous_directory.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/prompts/diagnostic.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/prompts/explore.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/prompts/gemma4.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/prompts/planner.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/prompts/project_context.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/prompts/tests.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/proxy_setup.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/session/agent_memory.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/session/checkpoints.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/session/session_loader.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/session/session_logger.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/session/session_migration.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/session/state_file.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/session_checker.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/skills/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/skills/manager.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/skills/models.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/skills/parser.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/slug.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/steering_hook.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/system_prompt.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/telemetry/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/telemetry/send.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/teleport/errors.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/teleport/git.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/teleport/nuage.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/teleport/teleport.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/teleport/types.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/base.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/_task_manager.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/ask_user_question.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/bash.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/cron.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/glob_tool.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/grep.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/invoke_skill.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/lsp.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/mcp_resources.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/notebook_edit.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/powershell.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/bash.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/cron.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/glob.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/grep.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/retrieve.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/task.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/todo.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/read_file.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/retrieve.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/search_replace.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/task.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/todo.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/tool_search.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/webfetch.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/websearch.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/worktree.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/builtins/write_file.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/injection_guard.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/manager.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/mcp/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/mcp/registry.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/mcp/tools.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/mcp_sampling.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/ui.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/tools/utils.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/trusted_folders.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/types.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/core/utils.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/graphrag/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/graphrag/__main__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/graphrag/code_indexer.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/graphrag/retriever.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/graphrag/storage.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/graphrag/text_indexer.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/setup/onboarding/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/setup/onboarding/base.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/setup/onboarding/onboarding.tcss +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/setup/onboarding/screens/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/setup/onboarding/screens/api_key.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/setup/onboarding/screens/choice.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/setup/onboarding/screens/local_model.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/setup/onboarding/screens/welcome.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/api-design/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/audit-tests/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/batch/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/commit-code/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/context-summary/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/create-presentation/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/deep-research/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/deploy/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/diff-review/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/doc-gen/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/explain-code/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/explore-code/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/fix-issue/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/git-ops/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/init-project/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/investigate/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/loop/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/migrate/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/perf-analyze/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/plan-impl/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/pr-review/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/refactor/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/regex-help/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/review/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/security-review/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/ship/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/simplify/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/strong-tests/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/skills/test-verify/SKILL.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/steering/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/steering/__main__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/steering/applier.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/steering/config.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/steering/registry.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/steering/sandbox.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/steering/vectors.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock/whats_new.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/drydock-acp.spec +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/flake.lock +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/flake.nix +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/research/README.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/research/config_base.toml +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/research/config_best.toml +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/research/domain_spec.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/research/experimenter.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/research/kernel.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/research/mini_prd.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/research/mini_prompts.txt +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/research/proposer.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/research/results.tsv +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/README.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/admiral_probe.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/archive/auto_test_loop.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/archive/monitor_test_battery.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/archive/overnight_agents_test.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/archive/test_bank.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/archive/test_full.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/archive/test_smoke.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/archive/tui_test.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/audit_sampler.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/auto_generate_tests.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/auto_release.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/autonomous_review.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/autonomous_review_prompt.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/backup.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/bump_version.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/classify_pulse.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/consume_retrieval_queue.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/deploy_to_github.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/fetch_arxiv_abstracts.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/gen_2000_prompts.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/hle_eval.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/hle_eval_seed.jsonl +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/notify_release.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/perf_baseline_when_idle.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/perf_sweep.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/poll_issues.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/publish_to_pypi.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/queue_top.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/ralph_loop.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/research_babysitter.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/shakedown.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/shakedown_interactive.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/shakedown_suite.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/shakedown_variance.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/stress_babysitter.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/stress_prompts_50.txt +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/stress_prompts_realuser.txt +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/stress_prompts_tool_agent.txt +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/stress_prompts_tool_agent_2000.txt +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/stress_shakedown.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/stress_telegram_status.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/stress_watcher.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/telegram_bot.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/scripts/vllm_failover.sh +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/conftest.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_acp.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_agent_thought.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_bash.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_compact_session_updates.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_content.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_initialize.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_list_sessions.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_load_session.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_multi_session.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_new_session.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_proxy_setup_acp.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_read_file.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_search_replace.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_set_config_option.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_set_mode.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_set_model.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_tool_call_session_update.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_utils.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/acp/test_write_file.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/autocompletion/test_file_indexer.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/autocompletion/test_fuzzy.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/autocompletion/test_path_completer_recursive.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/autocompletion/test_path_completion_controller.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/autocompletion/test_slash_command_controller.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/backend/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/backend/data/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/backend/data/fireworks.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/backend/data/mistral.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/backend/test_anthropic_adapter.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/backend/test_backend.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/backend/test_generic_adapter_sanitize.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/backend/test_reasoning_adapter.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/test_bell_notifications.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/test_braille_renderer.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/test_clipboard.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/test_commands.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/test_copy_shortcuts.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/test_external_editor.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/test_no_markup_static.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/test_question_app.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/test_spinner.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/test_switching_mode.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/test_ui_clipboard_notifications.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/test_ui_session_resume.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/test_ui_skill_dispatch.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/textual_ui/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/cli/textual_ui/test_session_picker.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/conftest.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_agents.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_auth_crypto.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_auth_github.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_circuit_breaker_count_escalation.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_circuit_breaker_readonly_threshold.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_config_load_dotenv.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_config_paths.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_config_resolution.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_file_logging.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_plan_session.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_proxy_setup.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_slug.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_telemetry_send.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_teleport_git.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_teleport_nuage.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_teleport_service.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_trusted_folders.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/core/test_utils.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/e2e/common.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/e2e/conftest.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/e2e/mock_server.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/e2e/test_cli_tui_onboarding.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/e2e/test_cli_tui_streaming.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/fixtures/doc_qa_system_prd.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/mock/__init__.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/mock/mock_backend_factory.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/mock/mock_entrypoint.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/mock/utils.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/onboarding/test_run_onboarding.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/onboarding/test_ui_onboarding.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/session/test_session_loader.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/session/test_session_logger.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/session/test_session_migration.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/skills/conftest.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/skills/test_manager.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/skills/test_models.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/skills/test_parser.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_code_block_horizontal_scrolling/test_snapshot_allows_horizontal_scrolling_for_long_code_blocks.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/base_snapshot_test_app.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/conftest.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/snap_compare.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/stubs/fake_backend.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/stubs/fake_client.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/stubs/fake_tool.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_admiral.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_admiral_phase3.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_admiral_proposed.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_admiral_struggle_dedup.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_agent_auto_compact.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_agent_backend.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_agent_observer_streaming.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_agent_stats.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_agent_tasks.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_agent_tool_call.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_agents.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_bank_build.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_bank_debug.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_bank_multiagent.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_bank_prd.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_bank_prd_extended.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_bank_tools.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_bank_update.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_build_projects.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_checkpoint.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_classifier.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_cli_programmatic_preload.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_config_migration.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_context_recovery.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_current_bugs.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_dispatcher.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_drydock_regression.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_drydock_tasks.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_fake_tool_call_paren_syntax.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_full_regression.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_graphrag.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_hallucinated_tool_suppression.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_history_manager.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_integration.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_issue_fixes.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_local_detect.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_loop_detection.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_message_id.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_message_merging.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_middleware.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_multi_agent.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_read_file_not_found_listing.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_real_failures.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_real_issues.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_real_workflow.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_reasoning_content.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_retrieval_consumer.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_retrieve_tool.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_search_replace_args_not_truncated.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_smoke.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_steering.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_steering_hook.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_system_prompt.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_tagged_text.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_task_complete_nudge.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_tool_args.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_truncate_args_valid_json.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_truncated_arg_path_hint.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_truncated_search_replace_escalation.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_truncated_write_escalation.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_ui_external_editor.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_ui_input_history.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_user_issues.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_wall_of_text_rescue.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_workloads.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/test_write_file_missing_path.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/testbank_helpers.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_ask_user_question.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_bash.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_bash_binary_grep_hint.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_bash_consec_empty_search.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_bash_echo_escape_loop_breaker.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_bash_empty_search_loop_breaker.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_bash_error_loop_breaker.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_bash_exact_cmd_loop_breaker.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_bash_heredoc_confirmation.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_bash_kill_exit1_annotation.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_bash_python_c_syntaxerr_loop_breaker.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_exit_plan_mode.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_grep.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_hallucinated_retrieval_redirect.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_invoke_context.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_manager_gemma_derived_models.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_manager_get_tool_config.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_mcp.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_mcp_sampling.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_read_file_dedup_alternating_offset.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_read_file_dedup_reembed.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_read_file_directory.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_read_file_limit_truncation.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_search_replace_append_fallback.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_search_replace_dir_path.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_search_replace_empty_content.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_search_replace_file_not_found.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_search_replace_first_failure_hint.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_search_replace_hard_stop.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_search_replace_malformed_block.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_search_replace_no_op_loop_breaker.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_search_replace_placeholder.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_search_replace_refused_loop_breaker.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_task.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_ui_bash_execution.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_webfetch.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_websearch.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_write_file_dedup_missing_imports.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/tools/test_write_file_missing_path_hint.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/update_notifier/test_do_update.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/update_notifier/test_github_update_gateway.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/update_notifier/test_ui_update_notification.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/update_notifier/test_update_use_case.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/tests/update_notifier/test_whats_new.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/worked_examples/README.md +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/worked_examples/cli_subcommand_dispatch.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/worked_examples/lookup.json +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/worked_examples/sql_parser.py +0 -0
- {drydock_cli-2.8.5 → drydock_cli-2.8.6}/worked_examples/tree_walking_interpreter.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3983696
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: drydock-cli
|
|
3
|
-
Version: 2.8.
|
|
3
|
+
Version: 2.8.6
|
|
4
4
|
Summary: Local-first CLI coding agent — tested with Gemma 4 26B via vLLM
|
|
5
5
|
Project-URL: Homepage, https://github.com/fbobe321/drydock
|
|
6
6
|
Project-URL: Repository, https://github.com/fbobe321/drydock
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""Entry point for `python -m drydock`.
|
|
2
|
+
|
|
3
|
+
This file lets users run drydock without the `drydock` console script
|
|
4
|
+
shim being on PATH — useful on Windows where `pip install --user`
|
|
5
|
+
puts the script in `%APPDATA%\\Python\\PythonXY\\Scripts` which isn't
|
|
6
|
+
on PATH by default.
|
|
7
|
+
|
|
8
|
+
Usage:
|
|
9
|
+
python -m drydock # same as `drydock`
|
|
10
|
+
python -m drydock --fix-windows-path
|
|
11
|
+
python -m drydock --setup
|
|
12
|
+
python -m drydock -p "your prompt here"
|
|
13
|
+
"""
|
|
14
|
+
from drydock.cli.entrypoint import main
|
|
15
|
+
|
|
16
|
+
if __name__ == "__main__":
|
|
17
|
+
main()
|
|
@@ -75,49 +75,71 @@ def bootstrap_config_files() -> None:
|
|
|
75
75
|
except Exception as e: # migration must never break startup
|
|
76
76
|
logger.debug("config migration failed: %s", e)
|
|
77
77
|
if not config_file.exists():
|
|
78
|
+
# Try auto-detecting a running local LLM first. Saves the user a
|
|
79
|
+
# setup screen if they already have llama.cpp / Ollama / vLLM /
|
|
80
|
+
# LM Studio listening on a known port.
|
|
81
|
+
detected_info = None
|
|
78
82
|
try:
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
# a
|
|
83
|
+
from drydock.core.config.local_detect import detect_local_llm
|
|
84
|
+
detected_info = detect_local_llm()
|
|
85
|
+
except Exception as e:
|
|
86
|
+
logger.debug("local-LLM detection failed: %s", e)
|
|
87
|
+
|
|
88
|
+
if detected_info is not None:
|
|
89
|
+
# Detected — write a config patched to point at the live
|
|
90
|
+
# server with no user interaction required.
|
|
86
91
|
try:
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
92
|
+
config_file.parent.mkdir(parents=True, exist_ok=True)
|
|
93
|
+
default = DrydockConfig.create_default()
|
|
94
|
+
from drydock.core.config.local_detect import patch_config_for_local
|
|
95
|
+
patch_config_for_local(default, detected_info)
|
|
96
|
+
rprint(
|
|
97
|
+
f"[green]Auto-detected {detected_info.label} at "
|
|
98
|
+
f"{detected_info.api_base}[/]\n"
|
|
99
|
+
f" Using model: [cyan]{detected_info.model_name}[/]\n"
|
|
100
|
+
f" To use a different LLM, run [cyan]drydock --setup[/] "
|
|
101
|
+
f"or edit [cyan]{config_file}[/]"
|
|
90
102
|
)
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
103
|
+
with config_file.open("wb") as f:
|
|
104
|
+
tomli_w.dump(default, f)
|
|
105
|
+
except Exception as e:
|
|
106
|
+
rprint(f"[yellow]Could not create default config file: {e}[/]")
|
|
107
|
+
else:
|
|
108
|
+
# No local server answering. Run the onboarding flow so the
|
|
109
|
+
# user can choose between (a) Mistral API key, (b) point
|
|
110
|
+
# drydock at a custom local URL via LocalModelScreen. Don't
|
|
111
|
+
# silently write a config pointing at a port nothing is
|
|
112
|
+
# listening on — that surprises users who run drydock
|
|
113
|
+
# without knowing they need to start a model server first.
|
|
114
|
+
rprint(
|
|
115
|
+
"[yellow]No local LLM server detected on the usual ports "
|
|
116
|
+
"(llama.cpp:8000/8080, Ollama:11434, LM Studio:1234).[/]\n"
|
|
117
|
+
" Launching setup so you can point drydock at your "
|
|
118
|
+
"model server."
|
|
119
|
+
)
|
|
120
|
+
try:
|
|
121
|
+
from drydock.setup.onboarding import run_onboarding
|
|
122
|
+
run_onboarding()
|
|
123
|
+
except SystemExit:
|
|
124
|
+
raise # onboarding cancelled — let the exit propagate
|
|
125
|
+
except Exception as e:
|
|
126
|
+
# Onboarding failed for some reason (e.g. no TTY in CI).
|
|
127
|
+
# Fall back to writing the defaults so drydock can at
|
|
128
|
+
# least try to start, and tell the user what to fix.
|
|
129
|
+
logger.debug("onboarding failed: %s", e)
|
|
130
|
+
try:
|
|
131
|
+
config_file.parent.mkdir(parents=True, exist_ok=True)
|
|
132
|
+
default = DrydockConfig.create_default()
|
|
133
|
+
with config_file.open("wb") as f:
|
|
134
|
+
tomli_w.dump(default, f)
|
|
107
135
|
rprint(
|
|
108
|
-
"[yellow]
|
|
109
|
-
"
|
|
110
|
-
"
|
|
111
|
-
"
|
|
112
|
-
"[cyan]drydock --setup[/], or edit "
|
|
113
|
-
f"[cyan]{config_file}[/] to use a different URL."
|
|
136
|
+
f"[yellow]Setup failed ({e}). Wrote default config "
|
|
137
|
+
f"pointing at http://127.0.0.1:8000/v1.[/]\n"
|
|
138
|
+
f" Edit [cyan]{config_file}[/] or run "
|
|
139
|
+
"[cyan]drydock --setup[/] to fix."
|
|
114
140
|
)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
with config_file.open("wb") as f:
|
|
118
|
-
tomli_w.dump(default, f)
|
|
119
|
-
except Exception as e:
|
|
120
|
-
rprint(f"[yellow]Could not create default config file: {e}[/]")
|
|
141
|
+
except Exception as ee:
|
|
142
|
+
rprint(f"[yellow]Could not create default config file: {ee}[/]")
|
|
121
143
|
|
|
122
144
|
history_file = HISTORY_FILE.path
|
|
123
145
|
if not history_file.exists():
|
|
@@ -868,6 +868,50 @@ class AgentLoop:
|
|
|
868
868
|
or "400 bad request" in error_str.lower()
|
|
869
869
|
or "status: 400" in error_str.lower()):
|
|
870
870
|
# Context limit or malformed request — aggressive recovery
|
|
871
|
+
# Step 0 (added 2026-05-09): if the error looks like a
|
|
872
|
+
# malformed tool call (most common 400 cause that ISN'T
|
|
873
|
+
# context-overflow), drop the offending assistant
|
|
874
|
+
# message + its orphaned tool-result follow-ups so the
|
|
875
|
+
# retry doesn't re-send the same bad payload. Without
|
|
876
|
+
# this, drydock would re-send the same broken
|
|
877
|
+
# tool_call N times until MAX_API_ERRORS gave up,
|
|
878
|
+
# leaving the user with a sticky banner that only
|
|
879
|
+
# /clear or session-restart could clear.
|
|
880
|
+
dropped_bad_tool_call = False
|
|
881
|
+
bad_call_indicators = (
|
|
882
|
+
"tool_call", "tool call", "function call",
|
|
883
|
+
"function.arguments", "arguments",
|
|
884
|
+
"invalid json", "json decode", "schema",
|
|
885
|
+
"validation error", "tool_use", "function name",
|
|
886
|
+
)
|
|
887
|
+
if any(ind in error_str.lower() for ind in bad_call_indicators):
|
|
888
|
+
try:
|
|
889
|
+
# Walk backward to the most recent assistant
|
|
890
|
+
# message with tool_calls — that's the payload
|
|
891
|
+
# vLLM rejected.
|
|
892
|
+
bad_idx = None
|
|
893
|
+
for i in range(len(self.messages) - 1, -1, -1):
|
|
894
|
+
m = self.messages[i]
|
|
895
|
+
if m.role == Role.assistant and getattr(m, "tool_calls", None):
|
|
896
|
+
bad_idx = i
|
|
897
|
+
break
|
|
898
|
+
if bad_idx is not None:
|
|
899
|
+
# Drop the bad assistant message PLUS any
|
|
900
|
+
# tool-role messages that followed it (they
|
|
901
|
+
# reference tool_call_ids that no longer
|
|
902
|
+
# exist; sending them alone is also a 400).
|
|
903
|
+
new_msgs = list(self.messages[:bad_idx])
|
|
904
|
+
self.messages.reset(new_msgs)
|
|
905
|
+
dropped_bad_tool_call = True
|
|
906
|
+
logger.info(
|
|
907
|
+
"Auto-recovery: dropped bad tool-call "
|
|
908
|
+
"message (idx=%d) and %d follow-ups",
|
|
909
|
+
bad_idx, len(self.messages) - bad_idx
|
|
910
|
+
if hasattr(self, "messages") else 0,
|
|
911
|
+
)
|
|
912
|
+
except Exception as drop_err:
|
|
913
|
+
logger.debug("bad-tool-call drop failed: %s", drop_err)
|
|
914
|
+
|
|
871
915
|
try:
|
|
872
916
|
# First try: truncate old messages
|
|
873
917
|
for i, msg in enumerate(self.messages):
|
|
@@ -897,7 +941,17 @@ class AgentLoop:
|
|
|
897
941
|
logger.info("Emergency reset: kept first user + last 5 messages")
|
|
898
942
|
except Exception:
|
|
899
943
|
pass
|
|
900
|
-
|
|
944
|
+
if dropped_bad_tool_call:
|
|
945
|
+
error_text = (
|
|
946
|
+
"Your last tool call was rejected by the "
|
|
947
|
+
"server (likely malformed arguments). "
|
|
948
|
+
"Try a simpler form, or use a different tool."
|
|
949
|
+
)
|
|
950
|
+
else:
|
|
951
|
+
error_text = (
|
|
952
|
+
"Context compacted due to API error. "
|
|
953
|
+
"Continue with your task."
|
|
954
|
+
)
|
|
901
955
|
else:
|
|
902
956
|
error_text = f"API error occurred: {e}. Please continue with your task."
|
|
903
957
|
self._inject_system_note(error_text)
|
|
@@ -1025,7 +1079,8 @@ class AgentLoop:
|
|
|
1025
1079
|
if (assistant_msg.role == Role.assistant
|
|
1026
1080
|
and assistant_msg.tool_calls):
|
|
1027
1081
|
prev_tool_name = assistant_msg.tool_calls[-1].function.name if assistant_msg.tool_calls[-1].function else None
|
|
1028
|
-
_readonly_tools = {"read_file", "grep", "glob", "ls", "pwd"
|
|
1082
|
+
_readonly_tools = {"read_file", "grep", "glob", "ls", "pwd",
|
|
1083
|
+
"ralph_repo_index", "retrieve", "search_files"}
|
|
1029
1084
|
_write_tools = {"write_file", "search_replace"}
|
|
1030
1085
|
_prev_was_read = prev_tool_name in _readonly_tools
|
|
1031
1086
|
_prev_was_write = prev_tool_name in _write_tools
|
|
@@ -2822,17 +2877,22 @@ class AgentLoop:
|
|
|
2822
2877
|
):
|
|
2823
2878
|
return "FORCE_STOP"
|
|
2824
2879
|
|
|
2825
|
-
# Check 1a: Same TOOL NAME repeated
|
|
2826
|
-
#
|
|
2827
|
-
#
|
|
2828
|
-
#
|
|
2829
|
-
#
|
|
2880
|
+
# Check 1a: Same TOOL NAME repeated consecutively, regardless of args.
|
|
2881
|
+
# Catches the "write_file with missing/corrupted args 36 times in a row"
|
|
2882
|
+
# pathology where each sig differs but the model is clearly stuck.
|
|
2883
|
+
# Threshold is lower for exploration/indexing tools (ralph_repo_index,
|
|
2884
|
+
# read_file, glob, grep) that should never need 4+ consecutive calls —
|
|
2885
|
+
# each call after the first is a stall-recovery loop, not progress.
|
|
2886
|
+
# Write/shell tools keep the higher threshold (8) since they legitimately
|
|
2887
|
+
# appear many times in sequence when building multi-file projects.
|
|
2830
2888
|
# Record a hot-combo on the stuck tool with an empty-path marker
|
|
2831
2889
|
# so the per-tool mute in _chat will remove it for 1 turn.
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
|
|
2890
|
+
_productive_tools = {"write_file", "search_replace", "bash", "run_command"}
|
|
2891
|
+
_check_1a_threshold = 8 if (tool_names and tool_names[-1] in _productive_tools) else 4
|
|
2892
|
+
if len(tool_names) >= _check_1a_threshold:
|
|
2893
|
+
last_n = tool_names[-_check_1a_threshold:]
|
|
2894
|
+
if all(n == last_n[-1] for n in last_n):
|
|
2895
|
+
self._hot_tool_path = (last_n[-1], "<stuck>")
|
|
2836
2896
|
return "FORCE_STOP"
|
|
2837
2897
|
|
|
2838
2898
|
# Check 1c: High recent-error fraction. If ≥6 of last 10 tool
|
|
@@ -301,11 +301,39 @@ DEFAULT_MODELS = [
|
|
|
301
301
|
output_price=0.3,
|
|
302
302
|
),
|
|
303
303
|
ModelConfig(
|
|
304
|
-
|
|
304
|
+
# Default local model is Gemma 4 — the recommended setup per
|
|
305
|
+
# CLAUDE.md (`start_gemma4.sh`). The `name` here is the model id
|
|
306
|
+
# the OpenAI-compatible server reports; for `start_gemma4.sh` +
|
|
307
|
+
# vLLM that's literally "gemma4". The local_detect probe will
|
|
308
|
+
# overwrite this at first launch with whatever the running
|
|
309
|
+
# server actually reports, so a user running a different
|
|
310
|
+
# local model (e.g. llama-3, mistral-small) gets matched up
|
|
311
|
+
# automatically.
|
|
312
|
+
name="gemma4",
|
|
305
313
|
provider="llamacpp",
|
|
306
314
|
alias="local",
|
|
307
315
|
input_price=0.0,
|
|
308
316
|
output_price=0.0,
|
|
317
|
+
# Gemma 4 anti-loop sampling recipe (see CLAUDE.md). Temperature
|
|
318
|
+
# MUST be 1.0 — lower values reinforce loops on quantized GGUF.
|
|
319
|
+
# The other knobs prevent the model from getting stuck on
|
|
320
|
+
# repeated tokens.
|
|
321
|
+
temperature=1.0,
|
|
322
|
+
# llama-server article recipe is `-c 32768`. Match it so
|
|
323
|
+
# auto_compact_threshold gets clamped to 28K (32K - 4K headroom)
|
|
324
|
+
# and the server doesn't return empty/garbage on context overflow.
|
|
325
|
+
context_window=32_768,
|
|
326
|
+
auto_compact_threshold=28_000,
|
|
327
|
+
# llama.cpp uses `repeat_penalty` (its native knob), not the
|
|
328
|
+
# OpenAI-style `frequency_penalty`. `temperature=1.0` is the
|
|
329
|
+
# top-level field above; the other three sampling params live
|
|
330
|
+
# here and get forwarded as extra_sampling to the server.
|
|
331
|
+
extra_params={
|
|
332
|
+
"top_k": 40,
|
|
333
|
+
"top_p": 0.95,
|
|
334
|
+
"repeat_penalty": 1.1,
|
|
335
|
+
"max_tokens": 2048,
|
|
336
|
+
},
|
|
309
337
|
),
|
|
310
338
|
]
|
|
311
339
|
|
|
@@ -140,6 +140,8 @@ def patch_config_for_local(
|
|
|
140
140
|
extra = model.setdefault("extra_params", {})
|
|
141
141
|
extra.setdefault("top_k", 40)
|
|
142
142
|
extra.setdefault("top_p", 0.95)
|
|
143
|
-
|
|
143
|
+
# llama.cpp's native repetition knob, not the
|
|
144
|
+
# OpenAI-style frequency_penalty.
|
|
145
|
+
extra.setdefault("repeat_penalty", 1.1)
|
|
144
146
|
extra.setdefault("max_tokens", 2048)
|
|
145
147
|
break
|
|
@@ -72,6 +72,7 @@ def migrate_user_config(config_file: Path) -> None:
|
|
|
72
72
|
return
|
|
73
73
|
|
|
74
74
|
added: list[str] = []
|
|
75
|
+
fixed: list[str] = []
|
|
75
76
|
models = data.get("models")
|
|
76
77
|
if isinstance(models, list):
|
|
77
78
|
for model in models:
|
|
@@ -86,8 +87,17 @@ def migrate_user_config(config_file: Path) -> None:
|
|
|
86
87
|
window = model.get("context_window") or _default_window_for(provider)
|
|
87
88
|
model["auto_compact_threshold"] = _default_compact_threshold_for(window)
|
|
88
89
|
added.append(f"models.{label}.auto_compact_threshold")
|
|
89
|
-
|
|
90
|
-
|
|
90
|
+
# llamacpp models written by v2.8.3–v2.8.5 used the
|
|
91
|
+
# OpenAI-style `frequency_penalty`. llama.cpp's actual
|
|
92
|
+
# repetition knob is `repeat_penalty` — rename it so the
|
|
93
|
+
# server accepts the value instead of silently ignoring it.
|
|
94
|
+
if "llamacpp" in provider.lower():
|
|
95
|
+
extra = model.get("extra_params")
|
|
96
|
+
if isinstance(extra, dict) and "frequency_penalty" in extra and "repeat_penalty" not in extra:
|
|
97
|
+
extra["repeat_penalty"] = extra.pop("frequency_penalty")
|
|
98
|
+
fixed.append(f"models.{label}.extra_params: frequency_penalty → repeat_penalty")
|
|
99
|
+
|
|
100
|
+
if not added and not fixed:
|
|
91
101
|
return
|
|
92
102
|
|
|
93
103
|
try:
|
|
@@ -97,8 +107,9 @@ def migrate_user_config(config_file: Path) -> None:
|
|
|
97
107
|
logger.warning("config migration: cannot write %s: %s", config_file, e)
|
|
98
108
|
return
|
|
99
109
|
|
|
110
|
+
changes = added + fixed
|
|
100
111
|
rprint(
|
|
101
|
-
f"[cyan]Drydock config migrated:
|
|
102
|
-
f"
|
|
103
|
-
+ "\n ".join(
|
|
112
|
+
f"[cyan]Drydock config migrated: {len(changes)} change(s) to "
|
|
113
|
+
f"{config_file}[/]\n "
|
|
114
|
+
+ "\n ".join(changes)
|
|
104
115
|
)
|
|
@@ -26,7 +26,14 @@ import urllib.request
|
|
|
26
26
|
|
|
27
27
|
BACKENDS = [
|
|
28
28
|
"http://localhost:8000",
|
|
29
|
-
|
|
29
|
+
# 192.168.50.21:8000 (romulus) PAUSED 2026-05-09 — its llama.cpp
|
|
30
|
+
# build reports `b1-e77056f` which is well below the b3000+ that
|
|
31
|
+
# the article-recommended Gemma 4 inference fixes shipped in. We
|
|
32
|
+
# suspect intermittent jumbled-text output (random character
|
|
33
|
+
# insertions like "contaiens"/"folloiwng") originates from this
|
|
34
|
+
# backend. Re-add this line and rebuild romulus once it's on a
|
|
35
|
+
# current llama.cpp build (b9000+ to match remus's docker image).
|
|
36
|
+
# "http://192.168.50.21:8000",
|
|
30
37
|
# 192.168.50.19:8080 (Jetson) was probed for inclusion 2026-05-05
|
|
31
38
|
# but its /v1/chat/completions endpoint times out after 90s with
|
|
32
39
|
# no response (only /v1/models returns, and in Ollama-style schema
|
|
@@ -1,5 +1,159 @@
|
|
|
1
1
|
# Drydock Trip Log
|
|
2
2
|
|
|
3
|
+
## 2026-05-09 04:34 UTC tick
|
|
4
|
+
- Stress: 907/1658; PID 3875067 alive (9h elapsed), done=23, skip=77, writes=6 since step 807 resume; run is progressing (steps 904-907 just completed in the last few minutes, step 907 got +1 write); SKIP rate ~77% consistent with known approval-modal blocking in "Test:" prompt range (tui_skip_root_cause.md)
|
|
5
|
+
- Write rate: 6 file writes since restart (~1 per 15 steps in this range); test-style prompts ("Test: idempotency/rollback/golden/fuzz") produce fewer writes than build prompts
|
|
6
|
+
- Admiral last 30 min: harness:thinking_stall x178 (dominant, all addressed by v2.8.0–v2.8.5), hallucinated_name x14, bash_generic x6, heredoc_loop x2
|
|
7
|
+
- vLLM 400s: 0; balancer PID 3944578 on :8001 healthy (gemma4 forwarding cleanly); romulus backend paused (llama.cpp too old, 820a557)
|
|
8
|
+
- GH issues: 0 open
|
|
9
|
+
- Dispatch queue: harness=73842, retrieval=74 (0 actionable, all within 7-day window)
|
|
10
|
+
- retrieval-drain: 0 projects ingested
|
|
11
|
+
- Action this tick: no fix committed — system healthy; initial confusion about CDT vs UTC timestamps on ls output (23:33 CDT = 04:33 UTC, harness is current); all top dispatch patterns already addressed by v2.8.0–v2.8.5; no new actionable bugs found
|
|
12
|
+
|
|
13
|
+
## 2026-05-09 04:03 UTC tick
|
|
14
|
+
- Stress: 899/1658, PID 3875067 alive (8.5h elapsed on this run); done=18, skip=73, recycle=37 since step 807 resume — 80% SKIP rate is worse than the known 33% baseline (project_tui_skip_root_cause.md). Prompts in this range are "API: SSE/JSON-RPC/gRPC/WebSocket" which may trigger approval modals or port-binding orphan processes that disrupt harness input. Run IS making forward progress (idx 807→899). Write rate: low; test-style prompts.
|
|
15
|
+
- vLLM 400s: 0 in last 30m; balancer PID 3944578 healthy on :8001 (llama.cpp backend at :8000, romulus paused); gemma4 container Up 15 days (cosmetic "unhealthy" Docker health check — serves OK).
|
|
16
|
+
- GH issues: 0 open.
|
|
17
|
+
- Dispatch queue: harness=73613 (dominated by thinking_stall 49K + bash_generic 12K; all patterns addressed by recent commits within 24h — 2cfa973, aeae8bb, 7696a55, 488dcce); retrieval=74 (0 actionable, all within 7-day window).
|
|
18
|
+
- retrieval-drain: 0 projects ingested.
|
|
19
|
+
- Action this tick: no fix committed — thinking_stall addressed by 4 commits this cycle; bash_generic confidence=0.6 with admiral already nudging; skip rate elevated but root cause is known harness/modal issue, not a drydock source bug fixable this tick.
|
|
20
|
+
|
|
21
|
+
## 2026-05-09 03:30 UTC tick
|
|
22
|
+
- Stress: 895/1658, PID 3875067 alive (8h elapsed); SKIP rate ~78% (69 SKIPs / 88 steps from resume point 807); 0 timeouts. Skip cluster at steps 880–894 (15 consecutive SKIPs) self-resolved after TUI recycling; step 895 accepted and actively processing. Write rate: 0 writes in current session window (prompts are test/query style, not write-file style).
|
|
23
|
+
- vLLM 400s: 0; balancer PID 3944578 healthy on :8001; gemma4 container Up 3+ days (cosmetic unhealthy).
|
|
24
|
+
- GH issues: 0 open.
|
|
25
|
+
- Dispatch queue: harness=73380 (all thinking_stall / bash_generic, all addressed by v2.8.x); retrieval=74 (0 actionable, all within 7-day window); steering: none.
|
|
26
|
+
- retrieval-drain: 0 projects ingested.
|
|
27
|
+
- Action this tick: no fix committed — system healthy, skip cluster self-resolved, no new unaddressed patterns. Noted: 403_tool_agent appears in both trusted and untrusted lists in trusted_folders.toml (trusted wins at runtime, not causing active harm).
|
|
28
|
+
|
|
29
|
+
## 2026-05-09 03:01 UTC tick
|
|
30
|
+
- Stress: step ~879+/1658; PID 3875067 alive (7h30m elapsed), 48 active session files; stress_shakedown.py running at step 807+ resumed
|
|
31
|
+
- Write rate: per prior tick ~1 DONE/23 min; approval-modal skip cluster still the dominant failure mode
|
|
32
|
+
- Admiral last 30 min: harness:thinking_stall dominant (48742 cumulative), harness:loop:bash_generic (12008), harness:tool:hallucinated_name (5721) — all addressed by v2.8.x commits
|
|
33
|
+
- vLLM 400s: 0; balancer PID 3944578 responsive on :8001 (gemma4 model only, romulus paused)
|
|
34
|
+
- GH issues: 0 open
|
|
35
|
+
- Dispatch queue: harness=72900+, retrieval=74 (0 actionable, all within 7-day window)
|
|
36
|
+
- retrieval-drain: 0 projects ingested
|
|
37
|
+
- Action this tick: no fix committed — all top patterns addressed by v2.8.0–v2.8.5; system healthy
|
|
38
|
+
|
|
39
|
+
## 2026-05-09 02:03 UTC tick
|
|
40
|
+
- Stress: 880/1658; PID 3875067 alive (6.5h elapsed since 19:30 UTC restart); done=17, skip=54, recycle=27 — all SKIPs from approval-modal blocking (known issue, tui_skip_root_cause.md)
|
|
41
|
+
- Write rate: ~1 DONE per 23 min; stress watcher detected skip-cluster at 01:48 UTC (24 SKIPs in 28 prompts), actuated TUI recycle via SIGUSR1 at 01:54 UTC; new TUI child 3950083 alive, currently on retry 1 for step 880
|
|
42
|
+
- Admiral last 30 min: stress-alert skip-cluster + retry-spike (01:48/01:54 UTC), tui-recycle-requested fired; AdmiralWorker bootstrapping repeatedly (normal — director restarts between active sessions)
|
|
43
|
+
- vLLM 400s: 0; balancer PID 3873081 on :8001 healthy (gemma4 serving, 0 errors); romulus backend remains commented out (llama.cpp too old)
|
|
44
|
+
- GH issues: 0 open
|
|
45
|
+
- Dispatch queue: harness=72657, retrieval=74 (0 actionable, all within 7-day window); no steering queue
|
|
46
|
+
- retrieval-drain: 0 projects ingested (all 74 already ingested)
|
|
47
|
+
- Action this tick: no fix committed — all top dispatch patterns (thinking_stall, hallucinated_name, search_replace:not_found_loop, bash_generic, heredoc_loop) addressed by v2.8.0–v2.8.5 commits in last 24h; stress watcher self-actuating on skip clusters; system otherwise healthy
|
|
48
|
+
|
|
49
|
+
## 2026-05-09 01:31 UTC tick
|
|
50
|
+
- Stress: 875/1658 (PID 3875067, running from 19:31 UTC restart); 0 PASSes since restart — pure SKIP cascade from approval-modal blocking (known issue, tui_skip_root_cause.md)
|
|
51
|
+
- Write rate: 0% since restart (all TUI-did-not-accept retries)
|
|
52
|
+
- Admiral last 30 min: harness:thinking_stall dominant (950 fires in last 2h, all source=canned, addressed by v2.8.3–v2.8.5); hallucinated_name=96, search_replace:not_found_loop=38, bash_generic=32, heredoc_loop=24 — all addressed by prior commits
|
|
53
|
+
- vLLM 400s: 0; balancer PID 3873081 on :8001 healthy; gemma4 container up and serving
|
|
54
|
+
- GH issues: 0 open
|
|
55
|
+
- Dispatch queue: harness=72406, retrieval=74 (0 actionable, all within 7-day window); no steering queue
|
|
56
|
+
- retrieval-drain: 0 projects ingested
|
|
57
|
+
- Action this tick: no fix committed — all top dispatch patterns (thinking_stall, hallucinated_name, search_replace:not_found_loop, bash_generic, heredoc_loop) addressed by commits in v2.8.3–v2.8.5; stress run continues in approval-modal SKIP cascade (known, not a drydock code bug); system healthy
|
|
58
|
+
|
|
59
|
+
## 2026-05-09 00:05 UTC tick
|
|
60
|
+
- Stress: step 807+/1658 (PID 3875067, running 4h34m), harness alive, latest session log at 290+ steps
|
|
61
|
+
- Write rate: active (stress log shows 13K+ step lines on prior session)
|
|
62
|
+
- Admiral last 30 min: thinking_stall dominant (47422 total in queue, source=canned ralph_repo_index loop firing 7+ times per session)
|
|
63
|
+
- vLLM 400s: 0
|
|
64
|
+
- GH issues: 0 open
|
|
65
|
+
- Dispatch queue: harness=71567 total (thinking_stall=47422, bash_generic=11954, hallucinated_name=5577, sr_not_found=4658, heredoc=1492), retrieval=74 (all already ingested)
|
|
66
|
+
- Action this tick: committed fix aeae8bb — lowered Check 1a consecutive-same-tool-name FORCE_STOP threshold from 8 to 4 for exploration tools (ralph_repo_index, read_file, glob, grep), kept at 8 for write_file/search_replace/bash. Addresses harness:thinking_stall pattern where ralph_repo_index stall-recovery looped 7+ times (~7 minutes wasted) before old threshold fired. Auto-release will ship at next 0/6/12/18 CDT tick.
|
|
67
|
+
|
|
68
|
+
## 2026-05-08 23:30 UTC tick
|
|
69
|
+
- Stress: ~840+/1658 (advancing), PID 3875067 alive (9h from step 807); latest session session_20260508_231646_8f2bd4d7 at 63 messages, actively processing "API: SSE client" prompt — normal progress
|
|
70
|
+
- Write rate: active (writes + tool calls visible in session log, no stuck state)
|
|
71
|
+
- Admiral last 30 min: 0 admiral review fires; dispatch queue patterns unchanged from prior tick — thinking_stall (47169), bash_generic (11948), hallucinated_name (5553), search_replace:not_found (4646), all already addressed in v2.8.3–v2.8.5
|
|
72
|
+
- vLLM 400s: 0; gemma4 docker "unhealthy" (stale health probe) but serving cleanly; balancer on :8001 responsive
|
|
73
|
+
- GH issues: 0 open
|
|
74
|
+
- Dispatch queue: harness=71266 (all top patterns addressed), retrieval=74 (0 actionable, all within 7-day window), steering=N/A
|
|
75
|
+
- retrieval-drain: 0 projects ingested
|
|
76
|
+
- Action this tick: no fix committed — all top dispatch patterns covered by recent releases; stress run progressing; system healthy
|
|
77
|
+
|
|
78
|
+
## 2026-05-08 23:02 UTC tick
|
|
79
|
+
- Stress: 825+/1658 (advancing), PID 3875067 alive (3h 29m elapsed from step 807); latest session session_20260508_225328_d00c4f87 at 79 messages, actively writing gRPC client-streaming files — progressing normally
|
|
80
|
+
- Write rate: active (tool writes visible in session log, no stuck state)
|
|
81
|
+
- Admiral last 30 min: no new harness log since 18:00 UTC cron; dispatch queue patterns all addressed (thinking_stall→v2.8.5, bash_generic→a41f454, hallucinated_name→bf9f0e2, search_replace:not_found→444e4a5, heredoc_loop→3215b3f, escape_loop→ee8936e, dedup_attempted→74a5ae3, tool_error_raised→9bdd8a3)
|
|
82
|
+
- vLLM 400s: 0; llamacpp-gemma4 Up 3 days (unhealthy status but serving cleanly on :8001 via balancer PID 3873081)
|
|
83
|
+
- GH issues: 0 open
|
|
84
|
+
- Dispatch queue: harness=70993 (all patterns addressed), retrieval=74 (0 actionable, all within 7-day window), steering=N/A
|
|
85
|
+
- retrieval-drain: 0 projects ingested
|
|
86
|
+
- Action this tick: no fix committed — all top dispatch patterns (thinking_stall, bash_generic, hallucinated_name, search_replace:not_found_loop, heredoc_loop) already addressed in v2.8.3-v2.8.5 commits from today; stress run advancing normally on gRPC prompts; system healthy
|
|
87
|
+
|
|
88
|
+
## 2026-05-08 22:33 UTC tick
|
|
89
|
+
- Stress: 844/1658 (in progress), PID 3875067 alive; last babysitter tick 22:00 UTC showed done=11 skip=19 recycle=9 from step 807 restart; active on "API: GraphQL mutation"
|
|
90
|
+
- Write rate: 37% (11 done / 30 total steps since restart); SKIP cascade continues on API-server prompts matching known approval-modal blocking pattern
|
|
91
|
+
- Admiral last 30 min: harness:thinking_stall firing after read_file/bash/write_file/exit_plan_mode (all variants); inline stall retry working (stall_debug confirms has_tool_calls=True throughout); 3 admiral review ticks in last 30 min
|
|
92
|
+
- vLLM 400s: 0; balancer PID 3873081 on :8001 healthy; gemma4 docker responding on :8000
|
|
93
|
+
- GH issues: 0 open
|
|
94
|
+
- Dispatch queue: harness=70714 (46713 thinking_stall, 11936 bash_generic, 5505 hallucinated_name, 4622 search_replace:not_found_loop, 1474 heredoc_loop, 464 other), retrieval=74 (0 actionable), steering=N/A
|
|
95
|
+
- retrieval-drain: 0 projects ingested (74 entries, all within 7-day re-ingest window)
|
|
96
|
+
- Action this tick: no fix committed. All queue patterns covered: thinking_stall → v2.8.5, heredoc_loop → v2.8.3, hallucinated_name → v2.8.5; bash_generic FORCE_STOP already active in agent_loop.py (removes bash for 1 turn on 3x repeat); no new actionable drydock bugs found.
|
|
97
|
+
|
|
98
|
+
## 2026-05-08 22:09 UTC tick
|
|
99
|
+
- Stress: 839/1658, PID 3875067 alive (resumed from step 807); ~50% SKIP rate on API-server prompts (known approval-modal issue, not a code bug)
|
|
100
|
+
- Write rate: mixed — 9 done vs 20 SKIP in last 30 steps; skip clusters on "API: REST GET/POST endpoint" prompts
|
|
101
|
+
- Admiral last 30 min: harness:thinking_stall firing on bash/write_file/exit_plan_mode/ralph_repo_index stalls; all handled by v2.8.5 FORCE_STOP mechanism
|
|
102
|
+
- vLLM 400s: 0; balancer on :8001 healthy (PID 3873081); llamacpp-gemma4 Up 3+ days
|
|
103
|
+
- GH issues: 0 open
|
|
104
|
+
- Dispatch queue: harness=70430 (46480 thinking_stall, 11930 bash_generic, 5478 hallucinated_name, 4610 search_replace:not_found_loop, 1468 heredoc_loop, 470 other), retrieval=74 (0 actionable — all already ingested), steering=N/A
|
|
105
|
+
- retrieval-drain: 0 projects ingested (74 entries, all within 7-day re-ingest window)
|
|
106
|
+
- Action this tick: no fix committed. All dispatch queue patterns are either (a) already addressed by commits in last 24h (thinking_stall → v2.8.5, heredoc_loop → v2.8.3, hallucinated_name → v2.8.5) or (b) stale re-classifications of same session events from 09:33 UTC (bash_generic, search_replace:not_found_loop). No new actionable drydock bugs found.
|
|
107
|
+
|
|
108
|
+
## 2026-05-08 19:02 UTC tick
|
|
109
|
+
- Stress: 804/1658, PID 3852269 alive (restarted 17:33 UTC after old PID died at step 788)
|
|
110
|
+
- Write rate: done=7, skip=10 in first 1.5h of new run; skip rate ~54% consistent with prior run at same step range (API-server prompts orphan ports, triggers recycle)
|
|
111
|
+
- Admiral last 30 min: harness:thinking_stall dominant; all queue evidence predates v2.8.5 fix
|
|
112
|
+
- vLLM 400s: 0 (docker "unhealthy" flag is uptime label, not error state)
|
|
113
|
+
- GH issues: 0 open
|
|
114
|
+
- Dispatch queue: harness=68535 (all harness:thinking_stall, pre-fix), retrieval=74 (0 actionable — all already ingested), steering=0
|
|
115
|
+
- Action this tick: no fix committed — system healthy, recent fixes (7696a55/488dcce in v2.8.5) cover the queued pattern, no new actionable bugs found
|
|
116
|
+
|
|
117
|
+
## 2026-05-08 18:40 UTC tick
|
|
118
|
+
- Stress: 787/1658, PID 3852269 alive, active session (session_20260508_183019, 45 msgs)
|
|
119
|
+
- Write rate: unchanged from prior tick; stress running on tool_agent prompts
|
|
120
|
+
- Admiral last 30 min: harness:thinking_stall dominant (addressed by v2.8.5 commits 7696a55 + 488dcce today); no new urgent patterns
|
|
121
|
+
- vLLM 400s: 0 in last 30min; balancer on :8001 PID 3837273 healthy; vLLM :8000 responding
|
|
122
|
+
- GH issues: 0 open
|
|
123
|
+
- Dispatch queue: harness=68226 (44689 thinking_stall, 11888 bash_generic, 5289 hallucinated_name, 4497 search_replace:not_found_loop), retrieval=74 (0 actionable), steering=0. Queue counts are inflated by classify_pulse re-classifying same events every 10min with no dedup.
|
|
124
|
+
- retrieval-drain: 0 projects ingested (all 74 entries already ingested)
|
|
125
|
+
- Action this tick: no fix committed. All infrastructure healthy. bash_generic (11888 entries) has existing 3-consecutive FORCE_STOP at agent_loop.py:2745; entries are stale/duplicate from repeated classify_pulse runs. thinking_stall already addressed in today's release. No new actionable pattern found.
|
|
126
|
+
|
|
127
|
+
## 2026-05-08 18:17 UTC tick
|
|
128
|
+
- Stress: 787/1658, PID 3852269 alive, running tool_agent stress prompts (--resume-from-step 787)
|
|
129
|
+
- Write rate: ~11 prompts/hr prior to previous stall; harness restarted last tick
|
|
130
|
+
- Admiral last 30 min: thinking_stall=242, hallucinated_name=24, search_replace:not_found_loop=18, heredoc_loop=15, bash_generic=12 — thinking_stall still dominant despite v2.8.5 fixes (legitimate bash/read_file stalls are the unaddressed sub-pattern)
|
|
131
|
+
- vLLM 400s: balancer shows 400+502 errors (context overflow); vLLM API responds fine; Docker "unhealthy" is cosmetic
|
|
132
|
+
- GH issues: 0 open
|
|
133
|
+
- Dispatch queue: harness=67915 (44445 thinking_stall, 11878 bash_generic, 5262 hallucinated_name, 4479 search_replace:not_found_loop, 1387 heredoc_loop), retrieval=74 (0 actionable, all ingested), steering=0
|
|
134
|
+
- retrieval-drain: 0 projects ingested
|
|
135
|
+
- Action this tick: no fix committed. Investigated search_replace:not_found_loop (18 fires/30min) — source already embeds file head on "not found anywhere" at line 1073-1082; the remaining loop cases are when fuzzy_context fires instead, suppressing the head embed. Not trivially safe to fix without risk of breaking fuzzy path. No new GH issues, all infrastructure healthy.
|
|
136
|
+
|
|
137
|
+
## 2026-05-08 17:34 UTC tick
|
|
138
|
+
- Stress: 788/1658 (was dead, restarted from step 787 by babysitter); new PID 3852269. Prior harness had been stuck since 12:32 UTC (5h) — drydock child PID 3849192 wedged in 400-error/compaction loop, session stuck at 101 msgs; balancer showed sustained 400 errors on both backends. Stress watcher alive but couldn't trigger recycle because harness was alive. Babysitter restarted on this tick at step 787.
|
|
139
|
+
- Write rate: ~11 prompts/hr prior to stall (done=419, skip=350, recycle=251 at death; prev babysitter tick idx=779)
|
|
140
|
+
- Admiral last 30 min: harness:thinking_stall dominant; all patterns covered by v2.8.5
|
|
141
|
+
- vLLM 400s: sustained (context overflow handled by emergency compaction); llamacpp-gemma4 functional; balancer PID 3837273 on :8001 OK
|
|
142
|
+
- GH issues: 0 open
|
|
143
|
+
- Dispatch queue: harness=67604, retrieval=74 (0 actionable, all ingested)
|
|
144
|
+
- retrieval-drain: 0 projects ingested
|
|
145
|
+
- Action this tick: stress harness restart (babysitter invoked manually after detecting dead PID). No code committed — no new actionable bugs found; all top dispatch patterns covered by v2.8.0–v2.8.5.
|
|
146
|
+
|
|
147
|
+
## 2026-05-08 17:09 UTC tick
|
|
148
|
+
- Stress: 779/1658, PID 3209682 alive (started May 06), progressing on "API: JSON-RPC server"
|
|
149
|
+
- Write rate: n/a (log format unchanged)
|
|
150
|
+
- Admiral last 30 min: 0 vLLM JSONDecodeErrors; llamacpp-gemma4 Up 3+ days (unhealthy flag cosmetic, functional); balancer PID 3837273 on :8001 healthy
|
|
151
|
+
- vLLM 400s: 0
|
|
152
|
+
- GH issues: 0 open
|
|
153
|
+
- Dispatch queue: harness=67299 (43967 thinking_stall, 11854 bash_generic, 5214 hallucinated_name, 4443 search_replace:not_found_loop, 1357 heredoc_loop), retrieval=74 (0 new actionable), steering=N/A
|
|
154
|
+
- retrieval-drain: 0 projects ingested (all 74 already consumed)
|
|
155
|
+
- Action this tick: no fix committed. Investigated top 3 unaddressed patterns: (1) harness:thinking_stall — already addressed by today's 7696a55+488dcce; (2) harness:loop:bash_generic — hash-check fires at count≥3 in bash.py line 714, queue entries are detections not failures, pattern is well-handled; (3) harness:search_replace:not_found_loop — covered by 444e4a5. All major patterns have active fixes; system is healthy.
|
|
156
|
+
|
|
3
157
|
## 2026-05-08 16:35 UTC tick
|
|
4
158
|
- Stress: 772/1658, PID 3209682 alive, progressing; 28% of last 25 sessions had at least 1 write, 1.44 avg writes/session; 51% SKIP rate driven by approval-modal input blocking (known issue per memory)
|
|
5
159
|
- Write rate: 28% sessions with writes (last 25)
|
|
@@ -3388,3 +3542,84 @@ restarted, cron self-match bug fixed in this same session).
|
|
|
3388
3542
|
- GH issues: 0 open
|
|
3389
3543
|
- Dispatch queue: harness=66668 (all harness:thinking_stall), retrieval=74 (0 actionable), steering=0
|
|
3390
3544
|
- Action this tick: committed fix — lower hallucinated-tool FORCE_STOP threshold from 3 to 1 (addresses pattern harness:thinking_stall). Prior fix (488dcce) set threshold=3 but stress sessions only make 1-2 ghost calls before harness kills them, so FORCE_STOP never fired. New threshold=1 triggers immediately on first ralph_repo_index call. Auto_release will ship at next 0/6/12/18 CDT tick.
|
|
3545
|
+
|
|
3546
|
+
## 2026-05-08 19:32 UTC tick
|
|
3547
|
+
- Stress: 808/1658; harness PID 3852269 was dead (died between 19:00–19:32 UTC); babysitter restarted at 19:30 → new PID 3875067 resuming from step 807
|
|
3548
|
+
- Write rate: n/a (new restart, too early to measure)
|
|
3549
|
+
- Admiral last 30 min: harness=82 thinking_stall (all source=canned/opus echoes from prior sessions, not fresh fires), 6 search_replace:not_found_loop (source=canned, already fixed in v2.7.40), 2 heredoc_loop (already fixed in v2.8.3)
|
|
3550
|
+
- vLLM 400s: 0 (llamacpp-gemma4 up 3 days, 0 errors in last 30m)
|
|
3551
|
+
- GH issues: 0 open
|
|
3552
|
+
- Dispatch queue: harness=68844, retrieval=74 (0 actionable, all 74 already ingested within 7-day window)
|
|
3553
|
+
- retrieval-drain: 0 projects ingested
|
|
3554
|
+
- Action this tick: no fix committed — restarted dead stress harness via babysitter; all top dispatch patterns (thinking_stall, search_replace:not_found_loop, heredoc_loop) already covered by v2.7.40–v2.8.5. System otherwise healthy.
|
|
3555
|
+
|
|
3556
|
+
## 2026-05-08 20:01 UTC tick
|
|
3557
|
+
- Stress: PID 3875067 alive, step 808/1658, 29min elapsed (restarted from dead harness at 19:30 UTC via babysitter)
|
|
3558
|
+
- Write rate: n/a (too early after restart to measure)
|
|
3559
|
+
- Admiral last 30 min: harness:thinking_stall continues (empty_after_tool:write_file, exit_plan_mode — all source=canned echoes from prior sessions; not fresh bugs)
|
|
3560
|
+
- vLLM 400s: 0; balancer has transient 500s from context-overflow requests but serving gemma4 cleanly (~71 tok/s, /v1/chat/completions responsive)
|
|
3561
|
+
- GH issues: 0 open
|
|
3562
|
+
- Dispatch queue: harness=69163 (all harness:thinking_stall), retrieval=74 (0 actionable, all within 7-day window)
|
|
3563
|
+
- retrieval-drain: 0 projects ingested
|
|
3564
|
+
- Action this tick: no fix committed — all top patterns covered by v2.8.0–v2.8.5; thinking_stall handler already addresses empty_after_tool:write_file and exit_plan_mode cases; system healthy
|
|
3565
|
+
|
|
3566
|
+
## 2026-05-08 20:30 UTC tick
|
|
3567
|
+
- Stress: PID 3875067 alive, step 820/1658 (+12 steps since 20:01 restart tick; ~0.4 steps/min)
|
|
3568
|
+
- Write rate: n/a (model is at 95+ messages in current session per stall debug, actively calling tools)
|
|
3569
|
+
- Admiral last 30 min: harness:thinking_stall (empty_after_tool:write_file and exit_plan_mode, source=canned) still classifying; stall debug confirms these are handled — all recent entries show content_len=0 has_tool_calls=True (active tool calls, not real stalls)
|
|
3570
|
+
- vLLM 400s: 0
|
|
3571
|
+
- GH issues: 0 open
|
|
3572
|
+
- Dispatch queue: harness=69490, retrieval=74 (0 actionable, all already ingested)
|
|
3573
|
+
- retrieval-drain: 0 projects ingested
|
|
3574
|
+
- Action this tick: no fix committed — investigated thinking_stall pattern in dispatch queue; confirmed that all recent entries in stall debug log are has_tool_calls=True (normal operation, not empty stalls); exit_plan_mode handled by inline stall handler but is a real registered tool (not in hallucinated path), generic "Continue working" nudge fires; no actionable code change needed this tick
|
|
3575
|
+
|
|
3576
|
+
## 2026-05-08 21:32 UTC tick
|
|
3577
|
+
- Stress: 825/1658; PID 3875067 alive (1:31 elapsed), TUI child PID 3890954 alive (8.5 min), step 825 "API: WebSocket server" in progress
|
|
3578
|
+
- Write rate: 0% since restart — 12 consecutive SKIPs (steps 808-824) with 5 TUI recycles; no PASSes since babysitter restart at 19:30 UTC; mass-skip matches known approval-modal pattern (tui_skip_root_cause.md)
|
|
3579
|
+
- Admiral last 30 min: harness:thinking_stall fires continue (empty_after_tool:write_file, exit_plan_mode — source=canned, handled in v2.8.3–v2.8.5)
|
|
3580
|
+
- vLLM 400s: 0; llamacpp-gemma4 Up 3 days (unhealthy status but serving cleanly), balancer PID 3873081 on :8001 responsive
|
|
3581
|
+
- GH issues: 0 open
|
|
3582
|
+
- Dispatch queue: harness=69822, retrieval=74 (0 actionable, all 74 already ingested within 7-day window)
|
|
3583
|
+
- retrieval-drain: 0 projects ingested
|
|
3584
|
+
- Action this tick: no fix committed — investigated mass-SKIP cascade in stress run; root cause is approval-modal blocking chat input (known issue, tui_skip_root_cause.md); all top dispatch patterns already addressed in v2.8.3–v2.8.5; system otherwise healthy
|
|
3585
|
+
|
|
3586
|
+
## 2026-05-08 21:31 UTC tick
|
|
3587
|
+
- Stress: ~808/1658, PID 3875067 alive (running 2h, resuming from step 807)
|
|
3588
|
+
- Write rate: 9 done / 13 skip in this run segment; skip pattern consistent with known approval-modal blocking (tui_skip_root_cause.md)
|
|
3589
|
+
- Admiral last 30 min: ~10 thinking_stall fires (empty_after_tool variants on write_file/exit_plan_mode)
|
|
3590
|
+
- vLLM 400s: 0; llamacpp-gemma4 Up 3 days, balancer PID 3873081 on :8001 healthy
|
|
3591
|
+
- GH issues: 0 open
|
|
3592
|
+
- Dispatch queue: harness=70131, retrieval=74 (0 actionable, all within 7-day re-ingest window)
|
|
3593
|
+
- retrieval-drain: 0 projects ingested
|
|
3594
|
+
- Action this tick: no fix committed — thinking_stall already addressed by v2.8.5 commits (7696a55, 488dcce) earlier today; SKIP cascade is known modal-blocking issue, no code fix warranted; system otherwise healthy
|
|
3595
|
+
|
|
3596
|
+
## 2026-05-09 01:31 UTC tick
|
|
3597
|
+
- Stress: PID 3875067 alive, 5h30m elapsed since 19:31 UTC restart; step counter not visible in logs but harness confirmed running
|
|
3598
|
+
- Write rate: 0% since restart (pure SKIP, known approval-modal blocking issue — tui_skip_root_cause.md)
|
|
3599
|
+
- Admiral last 30 min: harness:thinking_stall dominant (all source=canned, already addressed by v2.8.3–v2.8.5)
|
|
3600
|
+
- vLLM 400s: 0; balancer PID 3873081 on :8001 healthy (gemma4 serving cleanly, ~71 tok/s)
|
|
3601
|
+
- GH issues: 0 open
|
|
3602
|
+
- Dispatch queue: harness=72149, retrieval=74 (0 actionable, all within 7-day window); no steering queue
|
|
3603
|
+
- retrieval-drain: 0 projects ingested (all 74 already ingested)
|
|
3604
|
+
- Pattern review: thinking_stall (47906), bash_generic (11968), hallucinated_name (5625), search_replace:not_found_loop (4682), heredoc_loop (1504) — all addressed by v2.8.0–v2.8.5; no new actionable patterns in queue
|
|
3605
|
+
- Action this tick: no fix committed — all top dispatch patterns addressed; system healthy
|
|
3606
|
+
|
|
3607
|
+
## 2026-05-09 01:00 UTC tick
|
|
3608
|
+
- Stress: 865/1658 (PID 3875067, 5h elapsed since 19:31 UTC restart); 44 SKIPs, 0 PASSes — all TUI did-not-accept retries, consistent with known approval-modal blocking (tui_skip_root_cause.md)
|
|
3609
|
+
- Write rate: 0% since restart (pure SKIP run, no functional progress)
|
|
3610
|
+
- Admiral last 30 min: harness:thinking_stall dominant (empty_after_tool:ralph_repo_index source=canned, 5+ consecutive fires between 23:30-23:35 UTC)
|
|
3611
|
+
- vLLM 400s: 0; balancer PID 3873081 on :8001 healthy (gemma4 serving OK)
|
|
3612
|
+
- GH issues: 0 open
|
|
3613
|
+
- Dispatch queue: harness=71858, retrieval=74 (0 actionable, all within 7-day window)
|
|
3614
|
+
- retrieval-drain: 0 projects ingested
|
|
3615
|
+
- Action this tick: committed fix 2cfa973 — added ralph_repo_index/retrieve/search_files to _readonly_tools in stall handler so post-indexing stalls get targeted "stop re-reading, write something" nudge instead of generic "Continue working" canned message (addresses pattern harness:thinking_stall)
|
|
3616
|
+
|
|
3617
|
+
## 2026-05-09 02:31 UTC tick
|
|
3618
|
+
- Stress: 879/1658; PID 3875067 alive (7h elapsed since 19:30 UTC restart); done=17, skip=54, recycle=27 — skip rate remains ~76%, consistent with known approval-modal blocking (tui_skip_root_cause.md)
|
|
3619
|
+
- Write rate: ~1 DONE per 27 min since restart
|
|
3620
|
+
- Admiral last 30 min: harness:thinking_stall dominant (174 in last 200 queue entries), hallucinated_name (16), bash_generic (8), heredoc_loop (2) — all addressed by v2.8.0–v2.8.5
|
|
3621
|
+
- vLLM 400s: 0; balancer PID responsive on :8001, gemma4 Up 3 days (unhealthy cosmetic); serving cleanly
|
|
3622
|
+
- GH issues: 0 open
|
|
3623
|
+
- Dispatch queue: harness=72901, retrieval=74 (0 actionable, all within 7-day window)
|
|
3624
|
+
- retrieval-drain: 0 projects ingested
|
|
3625
|
+
- Action this tick: committed 820a557 — pause romulus backend in llm_balancer.py (llama.cpp b1-e77056f, suspected source of jumbled-text insertions; re-add after romulus reaches b9000+)
|