drydock-cli 2.8.49__tar.gz → 2.8.51__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.51/.auto_release.lock +1 -0
- drydock_cli-2.8.51/.drydock/graphrag.sqlite +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/CLAUDE.md +45 -41
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/PKG-INFO +1 -1
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/app.py +51 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/approval_app.py +43 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/agent_loop.py +30 -11
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/retrieve.py +9 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/pyproject.toml +1 -1
- drydock_cli-2.8.51/scripts/_archived_eval_harness/README.md +38 -0
- drydock_cli-2.8.49/scripts/hle_eval.py → drydock_cli-2.8.51/scripts/_archived_eval_harness/hle_eval.py.deprecated +1 -1
- drydock_cli-2.8.51/tests/cli/textual_ui/__init__.py +0 -0
- drydock_cli-2.8.51/tests/mock/__init__.py +0 -0
- drydock_cli-2.8.51/tests/test_approval_modal_stray_keys.py +92 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/trip_log.md +100 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/uv.lock +15 -1
- drydock_cli-2.8.49/.auto_release.lock +0 -1
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/.github/CODEOWNERS +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/.github/workflows/build-and-upload.yml +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/.github/workflows/ci.yml +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/.github/workflows/issue-labeler.yml +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/.github/workflows/release.yml +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/.gitignore +0 -0
- /drydock_cli-2.8.49/.pause_stress → /drydock_cli-2.8.51/.pause_hle_babysitter +0 -0
- /drydock_cli-2.8.49/drydock/acp/__init__.py → /drydock_cli-2.8.51/.pause_hle_burndown +0 -0
- /drydock_cli-2.8.49/drydock/acp/tools/__init__.py → /drydock_cli-2.8.51/.pause_hle_burndown_keepalive +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/.pre-commit-config.yaml +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/.python-version +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/.typos.toml +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/.vscode/extensions.json +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/.vscode/launch.json +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/.vscode/settings.json +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/AGENTS.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/Admiral.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/CHANGELOG.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/CONTRIBUTING.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/DEEP_NOIR_PRD.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/DEPLOYMENT.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/DRYDOCK.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/HLE_PRD.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/JETSON_BENCH.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/LICENSE +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/MODEL_SHORTCOMINGS.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/NOTICE +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/README.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/SOVEREIGN_PRD.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/TRIAGE_v1.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/action.yml +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/README.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results1.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results13.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results14.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results15.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results16.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results17.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results18.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results19.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results2.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results20.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results3.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results4.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results5.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results6.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results7.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results8.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results9.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/baseline_history/results_evolved_v1.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/distribution/zed/LICENSE +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/distribution/zed/extension.toml +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/distribution/zed/icons/mistral_vibe.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/docs/README.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/docs/acp-setup.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/docs/archive/BASELINE_412.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/docs/archive/Drydock_rebrand.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/docs/archive/OVERNIGHT_PROGRESS.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/docs/archive/OVERNIGHT_REPORT_2026_04_13.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/docs/archive/PERF_SWEEP_PLAN.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/docs/archive/PRD.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/docs/archive/drydock_terms.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/docs/archive/resume.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/docs/proxy-setup.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/__main__.py +0 -0
- {drydock_cli-2.8.49/drydock/cli → drydock_cli-2.8.51/drydock/acp}/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/acp/acp_agent_loop.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/acp/acp_logger.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/acp/entrypoint.py +0 -0
- {drydock_cli-2.8.49/drydock/cli/autocompletion → drydock_cli-2.8.51/drydock/acp/tools}/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/acp/tools/base.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/acp/tools/builtins/bash.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/acp/tools/builtins/read_file.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/acp/tools/builtins/search_replace.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/acp/tools/builtins/todo.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/acp/tools/builtins/write_file.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/acp/tools/session_update.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/acp/utils.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/admiral/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/admiral/detectors.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/admiral/detectors_proposed.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/admiral/history.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/admiral/interventions.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/admiral/llm_analyzer.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/admiral/metrics.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/admiral/opus_escalator.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/admiral/persistence.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/admiral/policy.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/admiral/proposer.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/admiral/stager.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/admiral/task_classifier.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/admiral/tuning.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/admiral/validator.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/admiral/worker.py +0 -0
- {drydock_cli-2.8.49/drydock/cli/textual_ui → drydock_cli-2.8.51/drydock/cli}/__init__.py +0 -0
- {drydock_cli-2.8.49/drydock/cli/textual_ui/notifications/adapters → drydock_cli-2.8.51/drydock/cli/autocompletion}/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/autocompletion/base.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/autocompletion/path_completion.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/autocompletion/slash_command.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/cli.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/clipboard.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/commands.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/entrypoint.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/fix_windows_path.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/history_manager.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/terminal_setup.py +0 -0
- {drydock_cli-2.8.49/drydock/cli/textual_ui/notifications/ports → drydock_cli-2.8.51/drydock/cli/textual_ui}/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/app.tcss +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/external_editor.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/handlers/event_handler.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
- {drydock_cli-2.8.49/drydock/cli/textual_ui/widgets → drydock_cli-2.8.51/drydock/cli/textual_ui/notifications/adapters}/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
- {drydock_cli-2.8.49/drydock/core/autocompletion → drydock_cli-2.8.51/drydock/cli/textual_ui/notifications/ports}/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
- {drydock_cli-2.8.49/drydock/core/llm → drydock_cli-2.8.51/drydock/cli/textual_ui/widgets}/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/checkpoint_picker.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/compact.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/loading.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/messages.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/tools.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/windowing/history.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/textual_ui/windowing/state.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/update_notifier/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/update_notifier/update.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/cli/update_notifier/whats_new.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/agents/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/agents/manager.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/agents/models.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/auth/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/auth/crypto.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/auth/github.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/auto_solve.py +0 -0
- {drydock_cli-2.8.49/drydock/core/telemetry → drydock_cli-2.8.51/drydock/core/autocompletion}/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/autocompletion/completers.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/autocompletion/file_indexer/store.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/autocompletion/fuzzy.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/autocompletion/path_prompt.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/build_orchestrator.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/checkpoint.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/classifier/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/classifier/__main__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/classifier/classifier.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/classifier/dispatcher.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/classifier/rules.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/classifier/signal.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/config/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/config/_dotenv.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/config/_settings.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/config/doctor.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/config/harness_files/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/config/harness_files/_harness_manager.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/config/harness_files/_paths.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/config/local_detect.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/config/migrate.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/constraint_extract.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/constraint_hint.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/consultant.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/context_recovery.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/drydock_states.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/goal.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/hooks.py +0 -0
- {drydock_cli-2.8.49/drydock/core/tools/builtins/prompts → drydock_cli-2.8.51/drydock/core/llm}/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/llm/backend/anthropic.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/llm/backend/base.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/llm/backend/factory.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/llm/backend/generic.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/llm/backend/mistral.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/llm/backend/vertex.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/llm/exceptions.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/llm/format.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/llm/message_utils.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/llm/types.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/logger.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/middleware.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/output_formatters.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/paths/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/paths/_drydock_home.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/paths/_local_config_walk.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/paths/conventions.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/plan_session.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/plugins.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/programmatic.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/prompts/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/prompts/builder.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/prompts/cli.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/prompts/compact.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/prompts/dangerous_directory.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/prompts/diagnostic.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/prompts/explore.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/prompts/gemma4.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/prompts/planner.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/prompts/project_context.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/prompts/tests.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/proxy_setup.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/session/agent_memory.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/session/checkpoints.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/session/session_loader.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/session/session_logger.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/session/session_migration.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/session/state_file.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/session_checker.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/skills/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/skills/manager.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/skills/models.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/skills/parser.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/slug.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/steering_hook.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/system_prompt.py +0 -0
- {drydock_cli-2.8.49/drydock/skills → drydock_cli-2.8.51/drydock/core/telemetry}/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/telemetry/send.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/teleport/errors.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/teleport/git.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/teleport/nuage.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/teleport/teleport.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/teleport/types.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/base.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/_task_manager.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/algebra_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/ask_user_question.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/bash.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/chemistry_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/count_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/cron.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/glob_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/grep.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/invoke_skill.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/linear_algebra_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/logic_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/lsp.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/math_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/mcp_resources.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/memory_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/notebook_edit.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/number_theory_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/powershell.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prolog_tool.py +0 -0
- {drydock_cli-2.8.49/tests/backend → drydock_cli-2.8.51/drydock/core/tools/builtins/prompts}/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/bash.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/cron.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/glob.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/grep.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/retrieve.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/task.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/todo.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/read_file.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/search_replace.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/set_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/solve_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/stats_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/task.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/todo.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/tool_search.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/units_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/verify_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/webfetch.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/websearch.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/worktree.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/builtins/write_file.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/injection_guard.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/manager.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/mcp/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/mcp/registry.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/mcp/tools.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/mcp_sampling.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/ui.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/tools/utils.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/trusted_folders.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/types.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/core/utils.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/curiosity/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/curiosity/__main__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/curiosity/gap_detector.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/curiosity/item.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/curiosity/queue.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/curiosity/surprise.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/graphrag/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/graphrag/__main__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/graphrag/code_indexer.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/graphrag/retriever.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/graphrag/storage.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/graphrag/text_indexer.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/setup/onboarding/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/setup/onboarding/base.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/setup/onboarding/onboarding.tcss +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/setup/onboarding/screens/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/setup/onboarding/screens/api_key.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/setup/onboarding/screens/choice.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/setup/onboarding/screens/local_model.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/setup/onboarding/screens/welcome.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
- {drydock_cli-2.8.49/tests/cli/textual_ui → drydock_cli-2.8.51/drydock/skills}/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/api-design/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/audit-tests/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/batch/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/commit-code/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/constraint-reasoning/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/context-summary/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/create-presentation/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/deep-research/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/deploy/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/diff-review/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/doc-gen/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/explain-code/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/explore-code/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/fix-issue/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/git-ops/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/init-project/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/investigate/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/logic/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/logic/assets/cheat_sheet_full.txt +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/loop/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/migrate/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/perf-analyze/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/plan-impl/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/pr-review/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/prove/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/refactor/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/regex-help/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/review/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/security-review/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/ship/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/simplify/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/strong-tests/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/skills/test-verify/SKILL.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/steering/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/steering/__main__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/steering/applier.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/steering/config.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/steering/registry.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/steering/sandbox.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/steering/sidecar/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/steering/sidecar/header_parser.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/steering/sidecar/hooks.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/steering/sidecar/loader.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/steering/sidecar/server.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/steering/train/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/steering/train/capture.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/steering/train/compute_vector.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/steering/train/extract_pairs.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/steering/train/scan_sessions.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/steering/vectors.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock/whats_new.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/drydock-acp.spec +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/flake.lock +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/flake.nix +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/outlook_draft_assistant.tar.gz +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/research/README.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/research/config_base.toml +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/research/config_best.toml +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/research/deep_noir/pairs/empty_after_bash.jsonl +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/research/deep_noir/pairs/scan_empty_after_bash.jsonl +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/research/domain_spec.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/research/experimenter.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/research/kernel.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/research/mini_prd.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/research/mini_prompts.txt +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/research/proposer.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/research/results.tsv +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/resume.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/README.md +0 -0
- /drydock_cli-2.8.49/scripts/auto_solve_audit.py → /drydock_cli-2.8.51/scripts/_archived_eval_harness/auto_solve_audit.py.deprecated +0 -0
- /drydock_cli-2.8.49/scripts/hle_babysitter.sh → /drydock_cli-2.8.51/scripts/_archived_eval_harness/hle_babysitter.sh.deprecated +0 -0
- /drydock_cli-2.8.49/scripts/hle_burndown.sh → /drydock_cli-2.8.51/scripts/_archived_eval_harness/hle_burndown.sh.deprecated +0 -0
- /drydock_cli-2.8.49/scripts/hle_burndown_keepalive.sh → /drydock_cli-2.8.51/scripts/_archived_eval_harness/hle_burndown_keepalive.sh.deprecated +0 -0
- /drydock_cli-2.8.49/scripts/hle_burndown_status.py → /drydock_cli-2.8.51/scripts/_archived_eval_harness/hle_burndown_status.py.deprecated +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/admiral_probe.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/archive/auto_test_loop.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/archive/monitor_test_battery.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/archive/overnight_agents_test.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/archive/test_bank.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/archive/test_full.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/archive/test_smoke.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/archive/tui_test.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/audit_sampler.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/auto_generate_tests.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/auto_release.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/autonomous_review.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/autonomous_review_prompt.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/backfill_hle_curiosity.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/backup.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/bench_inference.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/bump_version.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/classify_pulse.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/consume_retrieval_queue.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/curiosity_idle_cycle.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/dedupe_dispatch_queues.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/deploy_to_github.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/dispatch_report.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/drydock_status.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/fetch_arxiv_abstracts.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/gen_2000_prompts.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/hle_aggregate.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/hle_eval_seed.jsonl +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/llm_balancer.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/notify_release.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/perf_baseline_when_idle.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/perf_sweep.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/poll_issues.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/publish_to_pypi.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/queue_top.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/ralph_loop.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/rejudge_hle.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/research_babysitter.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/shakedown.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/shakedown_interactive.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/shakedown_suite.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/shakedown_variance.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/start_steering_sidecar.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/stress_babysitter.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/stress_prompts_50.txt +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/stress_prompts_realuser.txt +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/stress_prompts_tool_agent.txt +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/stress_prompts_tool_agent_2000.txt +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/stress_shakedown.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/stress_telegram_status.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/stress_watcher.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/telegram_bot.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/tool_usage_report.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/scripts/vllm_failover.sh +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/conftest.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_acp.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_agent_thought.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_bash.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_compact_session_updates.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_content.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_initialize.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_list_sessions.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_load_session.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_multi_session.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_new_session.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_proxy_setup_acp.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_read_file.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_search_replace.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_set_config_option.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_set_mode.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_set_model.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_tool_call_session_update.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_utils.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/acp/test_write_file.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/autocompletion/test_file_indexer.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/autocompletion/test_fuzzy.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/autocompletion/test_path_completer_recursive.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/autocompletion/test_path_completion_controller.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/autocompletion/test_slash_command_controller.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
- {drydock_cli-2.8.49/tests/mock → drydock_cli-2.8.51/tests/backend}/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/backend/data/__init__.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/backend/data/fireworks.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/backend/data/mistral.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/backend/test_anthropic_adapter.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/backend/test_backend.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/backend/test_generic_adapter_sanitize.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/backend/test_reasoning_adapter.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/test_bell_notifications.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/test_braille_renderer.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/test_clipboard.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/test_commands.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/test_copy_shortcuts.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/test_external_editor.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/test_no_markup_static.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/test_question_app.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/test_spinner.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/test_switching_mode.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/test_ui_clipboard_notifications.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/test_ui_session_resume.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/test_ui_skill_dispatch.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/cli/textual_ui/test_session_picker.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/conftest.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_agents.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_auth_crypto.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_auth_github.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_circuit_breaker_count_escalation.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_circuit_breaker_readonly_threshold.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_config_load_dotenv.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_config_paths.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_config_resolution.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_file_logging.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_plan_session.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_proxy_setup.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_slug.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_telemetry_send.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_teleport_git.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_teleport_nuage.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_teleport_service.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_trusted_folders.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/core/test_utils.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/e2e/common.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/e2e/conftest.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/e2e/mock_server.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/e2e/test_cli_tui_onboarding.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/e2e/test_cli_tui_streaming.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/fixtures/doc_qa_system_prd.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/mock/mock_backend_factory.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/mock/mock_entrypoint.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/mock/utils.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/onboarding/test_run_onboarding.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/onboarding/test_ui_onboarding.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/session/test_session_loader.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/session/test_session_logger.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/session/test_session_migration.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/skills/conftest.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/skills/test_manager.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/skills/test_models.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/skills/test_parser.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/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.49 → drydock_cli-2.8.51}/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.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/base_snapshot_test_app.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/conftest.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/snap_compare.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/stubs/fake_backend.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/stubs/fake_client.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/stubs/fake_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_admiral.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_admiral_hallucinated_tool_filter.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_admiral_intervention_outcome.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_admiral_phase3.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_admiral_proposed.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_admiral_session_id.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_admiral_struggle_dedup.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_agent_auto_compact.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_agent_backend.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_agent_observer_streaming.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_agent_stats.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_agent_tasks.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_agent_tool_call.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_agents.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_algebra_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_api_error_recovery.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_auto_retrieve_soft_nudge.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_auto_solve.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_bank_build.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_bank_debug.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_bank_multiagent.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_bank_prd.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_bank_prd_extended.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_bank_tools.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_bank_update.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_build_projects.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_checkpoint.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_chemistry_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_classifier.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_cli_programmatic_preload.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_config_migration.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_constraint_extract.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_constraint_hint.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_context_recovery.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_count_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_curiosity.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_current_bugs.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_dispatch_report.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_dispatcher.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_drydock_regression.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_drydock_tasks.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_fake_tool_call_paren_syntax.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_full_regression.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_goal.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_graphrag.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_graphrag_worked_examples.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_hallucinated_tool_suppression.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_history_manager.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_hle_aggregate.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_hle_score_method_split.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_hle_typing.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_integration.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_issue_fixes.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_linear_algebra_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_local_detect.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_logic_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_loop_detection.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_math_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_mcp_settings.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_memory_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_message_id.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_message_merging.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_middleware.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_multi_agent.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_number_theory_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_prolog_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_read_file_not_found_listing.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_real_failures.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_real_issues.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_real_workflow.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_reasoning_content.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_rejudge_hle.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_retrieval_consumer.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_retrieve_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_search_replace_args_not_truncated.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_set_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_smoke.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_solve_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_stats_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_steering.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_steering_capture.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_steering_compute_vector.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_steering_extract_pairs.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_steering_hook.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_steering_sidecar_chat_inputs.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_steering_sidecar_hooks.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_system_prompt.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_tagged_text.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_task_complete_nudge.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_tool_args.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_truncate_args_valid_json.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_truncated_arg_path_hint.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_truncated_search_replace_escalation.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_truncated_write_escalation.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_ui_external_editor.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_ui_input_history.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_units_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_user_issues.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_verify_tool.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_wall_of_text_rescue.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_workloads.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/test_write_file_missing_path.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/testbank_helpers.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_ask_user_question.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_bash.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_bash_binary_grep_hint.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_bash_consec_empty_search.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_bash_echo_escape_loop_breaker.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_bash_empty_search_loop_breaker.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_bash_error_loop_breaker.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_bash_exact_cmd_loop_breaker.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_bash_heredoc_confirmation.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_bash_kill_exit1_annotation.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_bash_python_c_syntaxerr_loop_breaker.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_exit_plan_mode.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_grep.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_hallucinated_retrieval_redirect.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_invoke_context.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_manager_gemma_derived_models.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_manager_get_tool_config.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_mcp.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_mcp_sampling.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_read_file_dedup_alternating_offset.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_read_file_dedup_reembed.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_read_file_directory.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_read_file_limit_truncation.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_search_replace_append_fallback.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_search_replace_dir_path.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_search_replace_empty_content.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_search_replace_file_not_found.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_search_replace_first_failure_hint.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_search_replace_hard_stop.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_search_replace_malformed_block.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_search_replace_no_op_loop_breaker.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_search_replace_placeholder.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_search_replace_refused_loop_breaker.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_task.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_ui_bash_execution.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_webfetch.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_websearch.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_write_file_dedup_missing_imports.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/tools/test_write_file_missing_path_hint.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/update_notifier/test_do_update.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/update_notifier/test_github_update_gateway.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/update_notifier/test_ui_update_notification.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/update_notifier/test_update_use_case.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/tests/update_notifier/test_whats_new.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/worked_examples/README.md +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/worked_examples/cli_subcommand_dispatch.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/worked_examples/lookup.json +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/worked_examples/sql_parser.py +0 -0
- {drydock_cli-2.8.49 → drydock_cli-2.8.51}/worked_examples/tree_walking_interpreter.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2484742
|
|
Binary file
|
|
@@ -43,57 +43,61 @@ Drydock is a local CLI coding agent (fork of mistral-vibe, Apache 2.0).
|
|
|
43
43
|
- **370 PRDs** at /data3/drydock_test_projects/ — the benchmark suite
|
|
44
44
|
- **Current version:** v2.8.27 on PyPI (auto-released every 6h from `main`)
|
|
45
45
|
- **Active continuous loops:** stress harness (hourly), autonomous_review
|
|
46
|
-
(30-min), classify_pulse (10-min), telegram_bot keepalive (2-min)
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
46
|
+
(30-min), classify_pulse (10-min), telegram_bot keepalive (2-min).
|
|
47
|
+
HLE eval loops were removed 2026-05-17 per operator directive — see
|
|
48
|
+
the "NO CUSTOM EVAL HARNESSES" rule below.
|
|
49
|
+
- 🚨 **NO CUSTOM EVAL HARNESSES (2026-05-17).** The user has banned
|
|
50
|
+
bespoke evaluation infrastructure (HLE eval scripts, burndown
|
|
51
|
+
daemons, batch runners, judge-prompt pipelines, telemetry-aggregator
|
|
52
|
+
cron jobs, etc.). Even when such a harness drives the real TUI via
|
|
53
|
+
pexpect, the *concept* tempts the agent to fix harness-specific
|
|
54
|
+
issues (timeout tuning, env-var-gated behaviour, judge edge cases)
|
|
55
|
+
that don't help real users. Improving drydock comes from USING
|
|
56
|
+
drydock interactively as a real user does — the operator notices
|
|
57
|
+
pain, the agent fixes the pain. If you need a regression check,
|
|
58
|
+
write a unit test against the drydock library. If you need a
|
|
59
|
+
benchmark, run prompts through the TUI by hand and observe. Do
|
|
60
|
+
NOT spin up background eval daemons. Archived scripts at
|
|
61
|
+
`scripts/_archived_eval_harness/` — leave them archived.
|
|
62
|
+
|
|
63
|
+
## Current plan (2026-05-17)
|
|
64
|
+
|
|
65
|
+
Focus is on **TUI experience** — the operator uses drydock interactively;
|
|
66
|
+
the agent fixes what the operator hits. No HLE eval loops, no custom
|
|
67
|
+
benchmark daemons (see the "NO CUSTOM EVAL HARNESSES" rule above).
|
|
68
|
+
|
|
69
|
+
1. **TUI bugs the operator notices in real use** — error recovery
|
|
70
|
+
paths, slash commands, tool reliability. Recent ships: /undo,
|
|
71
|
+
/back, /goal, vision (--mmproj), recovery meta-fix.
|
|
72
|
+
|
|
73
|
+
2. **GraphRAG** — the auto-prefetch hook ships good chunks on trivia
|
|
74
|
+
but not on hard symbolic Math. Two concrete moves: lower
|
|
70
75
|
`QUALITY_THRESHOLD` (currently 8.0 in `agent_loop.py:3391`) once
|
|
71
|
-
we know the real score distribution, and
|
|
72
|
-
fallback (`/data3/arxiv_corpus/graphrag.sqlite`)
|
|
73
|
-
index returns nothing above threshold.
|
|
76
|
+
we know the real score distribution, and the arxiv-corpus
|
|
77
|
+
fallback (`/data3/arxiv_corpus/graphrag.sqlite`) is wired.
|
|
74
78
|
|
|
75
79
|
3. **Deep Noir** — sidecar/hooks/capture/train all coded; the
|
|
76
80
|
`apply_chat_template` API-drift fix shipped 2026-05-14 (f02aa4b).
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
`
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
81
|
+
Contrastive-pair extraction was fixed by **706f226 (2026-05-10)**:
|
|
82
|
+
admiral now records the live `agent_loop.session_id` (which IS the
|
|
83
|
+
short hash used by session dirs), and `extract_pairs._find_session_dir`
|
|
84
|
+
builds a `{meta.session_id → dir}` map from the on-disk
|
|
85
|
+
meta.json files. Both pieces work.
|
|
86
|
+
Real remaining issue: **admiral_state.json has ~3000 pre-fix
|
|
87
|
+
findings (recorded 2026-04-19 to 2026-05-10) whose UUIDs are
|
|
88
|
+
phantom — they don't resolve to any on-disk session_dir**.
|
|
89
|
+
`extract_pairs` correctly yields only the post-fix findings (~20
|
|
90
|
+
sessions across all categories as of 2026-05-17). The training
|
|
91
|
+
set will fill in as new findings accumulate. Pre-fix findings
|
|
92
|
+
are unrecoverable; consider GC'ing them out of admiral_state.json
|
|
93
|
+
so future audits aren't misleading.
|
|
88
94
|
|
|
89
95
|
Operator controls for the continuous loops:
|
|
90
96
|
|
|
91
97
|
```bash
|
|
92
|
-
touch /data3/drydock/.pause_hle_babysitter # pause hourly HLE cron
|
|
93
|
-
touch /data3/drydock/.pause_hle_burndown # pause back-to-back burndown daemon
|
|
94
|
-
touch /data3/drydock/.pause_hle_burndown_keepalive # disable burndown auto-resurrection
|
|
95
98
|
touch /data3/drydock_test_projects/.pause_watchdog
|
|
96
99
|
touch /data3/drydock/.pause_auto_release # pause 6h PyPI publish
|
|
100
|
+
touch /data3/drydock/.pause_stress # pause stress harness restarts
|
|
97
101
|
```
|
|
98
102
|
|
|
99
103
|
## Build & Test
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: drydock-cli
|
|
3
|
-
Version: 2.8.
|
|
3
|
+
Version: 2.8.51
|
|
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
|
|
@@ -480,9 +480,58 @@ class DrydockApp(App): # noqa: PLR0904
|
|
|
480
480
|
|
|
481
481
|
await self._handle_user_message(value)
|
|
482
482
|
|
|
483
|
+
async def on_approval_app_stray_key(
|
|
484
|
+
self, message: ApprovalApp.StrayKey
|
|
485
|
+
) -> None:
|
|
486
|
+
"""The approval modal forwarded a stray keystroke (user started
|
|
487
|
+
typing chat input while the modal was up). Buffer printable chars
|
|
488
|
+
into a scratch string; flush as one pending message on Enter.
|
|
489
|
+
|
|
490
|
+
Without this, real users hitting an approval modal mid-type lose
|
|
491
|
+
every character they tap — the modal swallows everything not in
|
|
492
|
+
its 1/y/2/3/n/up/down/enter bindings. Stress harness exposed it
|
|
493
|
+
as 30% SKIP rate; root cause is the same for real interactive
|
|
494
|
+
users."""
|
|
495
|
+
if not hasattr(self, "_stray_key_buffer"):
|
|
496
|
+
self._stray_key_buffer: str = ""
|
|
497
|
+
if not hasattr(self, "_pending_messages"):
|
|
498
|
+
self._pending_messages: list[str] = []
|
|
499
|
+
|
|
500
|
+
if message.is_enter:
|
|
501
|
+
buf = self._stray_key_buffer.strip()
|
|
502
|
+
if buf:
|
|
503
|
+
self._pending_messages.append(buf)
|
|
504
|
+
self._stray_key_buffer = ""
|
|
505
|
+
# Tell the user we caught their stray input
|
|
506
|
+
try:
|
|
507
|
+
await self._mount_and_scroll(UserCommandMessage(
|
|
508
|
+
f"_Queued chat input typed during approval modal "
|
|
509
|
+
f"({len(buf)} chars): \"{buf[:60]}…\". Will run "
|
|
510
|
+
f"after the modal closes._"
|
|
511
|
+
))
|
|
512
|
+
except Exception:
|
|
513
|
+
pass
|
|
514
|
+
return
|
|
515
|
+
|
|
516
|
+
if message.text:
|
|
517
|
+
self._stray_key_buffer += message.text
|
|
518
|
+
|
|
519
|
+
def _flush_stray_key_buffer(self) -> None:
|
|
520
|
+
"""Move any buffered stray-key text to _pending_messages.
|
|
521
|
+
Called from every approval-close path so chars typed during the
|
|
522
|
+
modal aren't lost even if the user didn't press Enter."""
|
|
523
|
+
buf = getattr(self, "_stray_key_buffer", "").strip()
|
|
524
|
+
if not buf:
|
|
525
|
+
return
|
|
526
|
+
if not hasattr(self, "_pending_messages"):
|
|
527
|
+
self._pending_messages = []
|
|
528
|
+
self._pending_messages.append(buf)
|
|
529
|
+
self._stray_key_buffer = ""
|
|
530
|
+
|
|
483
531
|
async def on_approval_app_approval_granted(
|
|
484
532
|
self, message: ApprovalApp.ApprovalGranted
|
|
485
533
|
) -> None:
|
|
534
|
+
self._flush_stray_key_buffer()
|
|
486
535
|
if self._pending_approval and not self._pending_approval.done():
|
|
487
536
|
self._pending_approval.set_result((ApprovalResponse.YES, None))
|
|
488
537
|
|
|
@@ -491,6 +540,7 @@ class DrydockApp(App): # noqa: PLR0904
|
|
|
491
540
|
async def on_approval_app_approval_granted_always_tool(
|
|
492
541
|
self, message: ApprovalApp.ApprovalGrantedAlwaysTool
|
|
493
542
|
) -> None:
|
|
543
|
+
self._flush_stray_key_buffer()
|
|
494
544
|
self._set_tool_permission_always(
|
|
495
545
|
message.tool_name, save_permanently=message.save_permanently
|
|
496
546
|
)
|
|
@@ -503,6 +553,7 @@ class DrydockApp(App): # noqa: PLR0904
|
|
|
503
553
|
async def on_approval_app_approval_rejected(
|
|
504
554
|
self, message: ApprovalApp.ApprovalRejected
|
|
505
555
|
) -> None:
|
|
556
|
+
self._flush_stray_key_buffer()
|
|
506
557
|
if self._pending_approval and not self._pending_approval.done():
|
|
507
558
|
feedback = str(
|
|
508
559
|
get_user_cancellation_message(CancellationReason.OPERATION_CANCELLED)
|
|
@@ -45,6 +45,25 @@ class ApprovalApp(Container):
|
|
|
45
45
|
self.tool_args = tool_args
|
|
46
46
|
self.save_permanently = save_permanently
|
|
47
47
|
|
|
48
|
+
class StrayKey(Message):
|
|
49
|
+
"""User started typing chat input while the modal was up.
|
|
50
|
+
|
|
51
|
+
Real users (and the pexpect-based stress harness) hit this when
|
|
52
|
+
an approval modal appears mid-conversation: their keystrokes get
|
|
53
|
+
routed to ApprovalApp, which only binds up/down/enter/1/y/2/3/n
|
|
54
|
+
and silently drops everything else. Before this fix, those
|
|
55
|
+
characters disappeared into the void; the user assumed the TUI
|
|
56
|
+
was ignoring them and re-typed (or gave up).
|
|
57
|
+
|
|
58
|
+
Now we forward stray printable characters AND Enter to the main
|
|
59
|
+
app, which appends them to `_pending_messages` so they replay
|
|
60
|
+
into the chat input after the modal closes.
|
|
61
|
+
"""
|
|
62
|
+
def __init__(self, text: str, is_enter: bool = False) -> None:
|
|
63
|
+
super().__init__()
|
|
64
|
+
self.text = text
|
|
65
|
+
self.is_enter = is_enter
|
|
66
|
+
|
|
48
67
|
class ApprovalRejected(Message):
|
|
49
68
|
def __init__(self, tool_name: str, tool_args: BaseModel) -> None:
|
|
50
69
|
super().__init__()
|
|
@@ -138,6 +157,30 @@ class ApprovalApp(Container):
|
|
|
138
157
|
else:
|
|
139
158
|
widget.add_class("approval-option-no")
|
|
140
159
|
|
|
160
|
+
async def on_key(self, event: events.Key) -> None:
|
|
161
|
+
"""Catch printable characters that aren't in BINDINGS and forward
|
|
162
|
+
them to the main app's pending-messages queue instead of silently
|
|
163
|
+
dropping them. Without this, a user (or pexpect harness) who types
|
|
164
|
+
chat input while the modal is up loses every keystroke.
|
|
165
|
+
|
|
166
|
+
Bound keys (up/down/enter/1/y/2/3/n) are handled by Textual's
|
|
167
|
+
binding system BEFORE on_key fires for unmatched events — so we
|
|
168
|
+
only ever see the stray ones here.
|
|
169
|
+
|
|
170
|
+
We accept any single printable character. Enter is treated as a
|
|
171
|
+
message-send boundary: flush the buffered stray-key text as one
|
|
172
|
+
pending message. The flush boundary lives on the App side so we
|
|
173
|
+
can preserve typing rhythm across multiple modals."""
|
|
174
|
+
if event.character and event.character.isprintable():
|
|
175
|
+
self.post_message(self.StrayKey(text=event.character, is_enter=False))
|
|
176
|
+
event.stop()
|
|
177
|
+
elif event.key == "enter":
|
|
178
|
+
# Enter without any pending stray text means the user
|
|
179
|
+
# confirmed the focused option — let the BINDINGS handle it.
|
|
180
|
+
# (This on_key won't fire for "enter" if the binding consumed
|
|
181
|
+
# it first.) Forward as flush marker just in case.
|
|
182
|
+
self.post_message(self.StrayKey(text="", is_enter=True))
|
|
183
|
+
|
|
141
184
|
def action_move_up(self) -> None:
|
|
142
185
|
self.selected_option = (self.selected_option - 1) % 3
|
|
143
186
|
self._update_options()
|
|
@@ -1369,7 +1369,8 @@ class AgentLoop:
|
|
|
1369
1369
|
prev_tool_name = assistant_msg.tool_calls[-1].function.name if assistant_msg.tool_calls[-1].function else None
|
|
1370
1370
|
_readonly_tools = {"read_file", "grep", "glob", "ls", "pwd",
|
|
1371
1371
|
"ralph_repo_index", "ralph_file_summary",
|
|
1372
|
-
"retrieve", "search_files", "lsp"
|
|
1372
|
+
"retrieve", "search_files", "lsp",
|
|
1373
|
+
"web_search", "web_fetch"}
|
|
1373
1374
|
_write_tools = {"write_file", "search_replace"}
|
|
1374
1375
|
_prev_was_read = prev_tool_name in _readonly_tools
|
|
1375
1376
|
_prev_was_write = prev_tool_name in _write_tools
|
|
@@ -1471,10 +1472,12 @@ class AgentLoop:
|
|
|
1471
1472
|
)
|
|
1472
1473
|
elif _prev_was_read:
|
|
1473
1474
|
_tool_name_str = prev_tool_name or "read_file"
|
|
1475
|
+
_generic_suffix = os.environ.get("DRYDOCK_STOP_NOW_SUFFIX", "")
|
|
1474
1476
|
note = (
|
|
1475
1477
|
f"You called {_tool_name_str} but produced no output. "
|
|
1476
|
-
f"Now
|
|
1477
|
-
f"
|
|
1478
|
+
f"Now respond in text — write your answer or make changes. "
|
|
1479
|
+
f"Do NOT call {_tool_name_str} again."
|
|
1480
|
+
+ (f" {_generic_suffix}" if _generic_suffix else "")
|
|
1478
1481
|
)
|
|
1479
1482
|
elif _prev_write_success:
|
|
1480
1483
|
note = (
|
|
@@ -1534,11 +1537,12 @@ class AgentLoop:
|
|
|
1534
1537
|
)
|
|
1535
1538
|
elif _prev_was_read:
|
|
1536
1539
|
_tool_name_str = prev_tool_name or "read_file"
|
|
1540
|
+
_generic_suffix = os.environ.get("DRYDOCK_STOP_NOW_SUFFIX", "")
|
|
1537
1541
|
note = (
|
|
1538
1542
|
f"You sent an empty response after calling {_tool_name_str}. "
|
|
1539
|
-
f"
|
|
1540
|
-
f"
|
|
1541
|
-
f"
|
|
1543
|
+
f"Respond in text now — write your answer or apply what you read. "
|
|
1544
|
+
f"Do NOT call {_tool_name_str} again."
|
|
1545
|
+
+ (f" {_generic_suffix}" if _generic_suffix else "")
|
|
1542
1546
|
)
|
|
1543
1547
|
elif _prev_was_write:
|
|
1544
1548
|
_tool_name_str = prev_tool_name or "write_file"
|
|
@@ -1589,11 +1593,12 @@ class AgentLoop:
|
|
|
1589
1593
|
)
|
|
1590
1594
|
elif prev_tool_name in _readonly_tools:
|
|
1591
1595
|
_tool_name_str = prev_tool_name or "read_file"
|
|
1596
|
+
_generic_suffix = os.environ.get("DRYDOCK_STOP_NOW_SUFFIX", "")
|
|
1592
1597
|
note = (
|
|
1593
1598
|
f"THIRD empty response after {_tool_name_str}. "
|
|
1594
|
-
"Stop
|
|
1595
|
-
"the change, or respond in text explaining why you cannot proceed. "
|
|
1599
|
+
"Stop — respond in text with your analysis or best answer. "
|
|
1596
1600
|
f"Do NOT call {_tool_name_str} again."
|
|
1601
|
+
+ (f" {_generic_suffix}" if _generic_suffix else "")
|
|
1597
1602
|
)
|
|
1598
1603
|
elif _prev_was_write:
|
|
1599
1604
|
_tool_name_str = prev_tool_name or "write_file"
|
|
@@ -3642,9 +3647,23 @@ class AgentLoop:
|
|
|
3642
3647
|
# corpus at /data3/arxiv_corpus/graphrag.sqlite (1.18M chunks)
|
|
3643
3648
|
# has much better recall. The fallback path is operator-tunable
|
|
3644
3649
|
# via DRYDOCK_GRAPHRAG_FALLBACK_DB; set to empty to disable.
|
|
3645
|
-
|
|
3646
|
-
|
|
3647
|
-
|
|
3650
|
+
# Primary DB selection mirrors retrieve._resolve_db_path so the
|
|
3651
|
+
# auto-prefetch and the model-issued retrieve calls always agree
|
|
3652
|
+
# on which corpus to search:
|
|
3653
|
+
# 1. DRYDOCK_GRAPHRAG_DB env override
|
|
3654
|
+
# 2. <cwd>/.drydock/graphrag.sqlite (per-project index)
|
|
3655
|
+
# 3. ~/.drydock/graphrag.sqlite (home fallback)
|
|
3656
|
+
# Without #2, a user with a populated home DB never saw their
|
|
3657
|
+
# own project's chunks because home always won.
|
|
3658
|
+
env_db = os.environ.get("DRYDOCK_GRAPHRAG_DB")
|
|
3659
|
+
if env_db:
|
|
3660
|
+
primary_db = env_db
|
|
3661
|
+
else:
|
|
3662
|
+
project_db = Path.cwd() / ".drydock" / "graphrag.sqlite"
|
|
3663
|
+
if project_db.is_file():
|
|
3664
|
+
primary_db = str(project_db)
|
|
3665
|
+
else:
|
|
3666
|
+
primary_db = str(Path.home() / ".drydock" / "graphrag.sqlite")
|
|
3648
3667
|
fallback_default = "/data3/arxiv_corpus/graphrag.sqlite"
|
|
3649
3668
|
fallback_db_raw = os.environ.get(
|
|
3650
3669
|
"DRYDOCK_GRAPHRAG_FALLBACK_DB", fallback_default
|
|
@@ -78,6 +78,15 @@ def _resolve_db_path(arg: str) -> Path:
|
|
|
78
78
|
project_db = Path.cwd() / ".drydock" / "graphrag.sqlite"
|
|
79
79
|
if project_db.is_file():
|
|
80
80
|
return project_db
|
|
81
|
+
# If we're inside a real project that doesn't yet have its own index,
|
|
82
|
+
# PREFER to create a per-project index over falling back to the home
|
|
83
|
+
# index (which is contaminated with other projects' content and
|
|
84
|
+
# answers wrong queries about THIS project). The home index is only
|
|
85
|
+
# the right answer for ad-hoc use outside any project — e.g. when
|
|
86
|
+
# the user runs drydock from their home dir.
|
|
87
|
+
cwd = Path.cwd()
|
|
88
|
+
if _looks_like_project(cwd):
|
|
89
|
+
return project_db # will be auto-ingested by Retrieve.run
|
|
81
90
|
return Path.home() / ".drydock" / "graphrag.sqlite"
|
|
82
91
|
|
|
83
92
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Archived 2026-05-17 — DO NOT RESURRECT
|
|
2
|
+
|
|
3
|
+
These scripts implemented a custom HLE eval harness that drove drydock
|
|
4
|
+
via pexpect. The infrastructure was technically TUI-based (it spawned
|
|
5
|
+
the real `drydock` binary), but the user objected to the entire
|
|
6
|
+
*concept* of building bespoke evaluation infrastructure on the side:
|
|
7
|
+
|
|
8
|
+
> "STOP trying to create custom harnesses for evals. Improving drydock
|
|
9
|
+
> is what matters. And using drydock can't be headless, you have to
|
|
10
|
+
> actually use it like the user would."
|
|
11
|
+
|
|
12
|
+
The principle: **drydock improvements should come from USING drydock
|
|
13
|
+
as a real user would** — interactively, with the user noticing pain
|
|
14
|
+
points and the agent fixing them. A custom eval harness:
|
|
15
|
+
|
|
16
|
+
1. Tempts the agent to fix harness-specific issues (timeout tuning,
|
|
17
|
+
env-var-gated behavior, judge-prompt edge cases) that don't help
|
|
18
|
+
real users.
|
|
19
|
+
2. Introduces operational overhead (cron jobs, keepalive daemons,
|
|
20
|
+
telemetry pipelines) that's parallel to the actual product.
|
|
21
|
+
3. Distracts from the headline goal: make drydock better at what
|
|
22
|
+
real users do, not at what an eval suite measures.
|
|
23
|
+
|
|
24
|
+
If you (future Claude) are tempted to build a new HLE-style eval
|
|
25
|
+
harness, STOP. Read `~/.claude/projects/-data3-drydock/memory/
|
|
26
|
+
feedback_no_custom_eval_harness.md` first. The user has been very
|
|
27
|
+
clear on this and will push back hard.
|
|
28
|
+
|
|
29
|
+
What to do instead:
|
|
30
|
+
- Use the drydock TUI yourself (or watch the user use it) to find
|
|
31
|
+
real bugs.
|
|
32
|
+
- Read open GH issues at fbobe321/drydock for user-reported pain.
|
|
33
|
+
- Fix things that affect interactive UX: error recovery, slash
|
|
34
|
+
commands, tool reliability.
|
|
35
|
+
- If you really need a regression-style check, write a unit test
|
|
36
|
+
against the drydock library — not a long-running eval daemon.
|
|
37
|
+
|
|
38
|
+
Files preserved here for git history continuity; do not run them.
|
|
@@ -65,7 +65,7 @@ HF_TOKEN_FILE = Path.home() / ".config" / "drydock" / "hf_token"
|
|
|
65
65
|
# Coding-style PRDs in shakedown allow 600s for harder steps; QA should be
|
|
66
66
|
# faster since there's no file-writing iteration, but Gemma 4 thinking can
|
|
67
67
|
# still chew through several minutes on a hard question.
|
|
68
|
-
QUESTION_TIMEOUT =
|
|
68
|
+
QUESTION_TIMEOUT = 600 # 10 min per question — 480s left 3/196 recent cases killed mid-generation
|
|
69
69
|
IDLE_GRACE = 8.0 # seconds of no new messages before declaring done
|
|
70
70
|
|
|
71
71
|
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"""Regression tests for the approval-modal-eats-keystrokes fix.
|
|
2
|
+
|
|
3
|
+
Bug: when ApprovalApp had focus, any printable character that wasn't
|
|
4
|
+
in its BINDINGS (up/down/enter/1/y/2/3/n) was silently swallowed.
|
|
5
|
+
Real users typing chat input mid-modal lost every keystroke. The
|
|
6
|
+
stress harness surfaced it as a 30% SKIP rate ("TUI did not accept
|
|
7
|
+
after 3 retries") because pexpect can't see the modal and just
|
|
8
|
+
types — the modal ate the prompt, harness re-tried 3x, gave up.
|
|
9
|
+
|
|
10
|
+
Fix: ApprovalApp.on_key catches stray printable chars and forwards
|
|
11
|
+
them to the main app via a StrayKey message. The main app buffers
|
|
12
|
+
them and either:
|
|
13
|
+
- Flushes the buffer on Enter (treats it as a queued chat input)
|
|
14
|
+
- Flushes on modal close (approval granted / always-tool / rejected)
|
|
15
|
+
into `_pending_messages` so they replay after the modal closes.
|
|
16
|
+
"""
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
import inspect
|
|
20
|
+
|
|
21
|
+
from drydock.cli.textual_ui.widgets.approval_app import ApprovalApp
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# ── ApprovalApp must expose StrayKey + on_key ───────────────────────────
|
|
25
|
+
|
|
26
|
+
def test_stray_key_message_class_exists():
|
|
27
|
+
"""ApprovalApp.StrayKey is the message contract the main app
|
|
28
|
+
listens for. Must accept text + is_enter."""
|
|
29
|
+
cls = getattr(ApprovalApp, "StrayKey", None)
|
|
30
|
+
assert cls is not None
|
|
31
|
+
msg = cls(text="abc", is_enter=False)
|
|
32
|
+
assert msg.text == "abc"
|
|
33
|
+
assert msg.is_enter is False
|
|
34
|
+
msg2 = cls(text="", is_enter=True)
|
|
35
|
+
assert msg2.is_enter is True
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def test_on_key_handler_exists_and_is_async():
|
|
39
|
+
"""Without on_key, the modal's BINDINGS still swallow everything
|
|
40
|
+
not in {up,down,enter,1,y,2,3,n}. on_key must catch the rest."""
|
|
41
|
+
method = getattr(ApprovalApp, "on_key", None)
|
|
42
|
+
assert method is not None
|
|
43
|
+
assert inspect.iscoroutinefunction(method)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def test_on_key_source_forwards_printable_chars():
|
|
47
|
+
"""String-grep regression — catches future refactors that remove
|
|
48
|
+
the StrayKey forwarding."""
|
|
49
|
+
src = inspect.getsource(ApprovalApp.on_key)
|
|
50
|
+
assert "StrayKey" in src
|
|
51
|
+
assert "post_message" in src
|
|
52
|
+
assert "isprintable" in src
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
# ── Main app handler ────────────────────────────────────────────────────
|
|
56
|
+
|
|
57
|
+
def test_main_app_has_stray_key_handler():
|
|
58
|
+
"""app.py must implement on_approval_app_stray_key — Textual's
|
|
59
|
+
automatic event routing relies on the snake_case naming
|
|
60
|
+
convention `on_<sender_class>_<message_class>`."""
|
|
61
|
+
from drydock.cli.textual_ui.app import DrydockApp
|
|
62
|
+
method = getattr(DrydockApp, "on_approval_app_stray_key", None)
|
|
63
|
+
assert method is not None
|
|
64
|
+
assert inspect.iscoroutinefunction(method)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def test_main_app_flushes_buffer_on_approval_close():
|
|
68
|
+
"""All three approval-close paths (granted / always-tool / rejected)
|
|
69
|
+
must call _flush_stray_key_buffer so chars typed during the modal
|
|
70
|
+
aren't lost even if the user didn't press Enter."""
|
|
71
|
+
from drydock.cli.textual_ui.app import DrydockApp
|
|
72
|
+
for handler_name in (
|
|
73
|
+
"on_approval_app_approval_granted",
|
|
74
|
+
"on_approval_app_approval_granted_always_tool",
|
|
75
|
+
"on_approval_app_approval_rejected",
|
|
76
|
+
):
|
|
77
|
+
handler = getattr(DrydockApp, handler_name, None)
|
|
78
|
+
assert handler is not None
|
|
79
|
+
src = inspect.getsource(handler)
|
|
80
|
+
assert "_flush_stray_key_buffer" in src, (
|
|
81
|
+
f"{handler_name} must call _flush_stray_key_buffer "
|
|
82
|
+
f"so the stray-key buffer doesn't leak across modals"
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def test_flush_method_exists():
|
|
87
|
+
from drydock.cli.textual_ui.app import DrydockApp
|
|
88
|
+
method = getattr(DrydockApp, "_flush_stray_key_buffer", None)
|
|
89
|
+
assert method is not None
|
|
90
|
+
src = inspect.getsource(method)
|
|
91
|
+
assert "_stray_key_buffer" in src
|
|
92
|
+
assert "_pending_messages" in src
|
|
@@ -1,5 +1,95 @@
|
|
|
1
1
|
# Drydock Trip Log
|
|
2
2
|
|
|
3
|
+
## 2026-05-17 16:00 UTC tick
|
|
4
|
+
- Stress: step 26/1658, just restarted at 16:00 UTC by hourly babysitter (stress PID 2482864, .pause_stress sentinel present but stress running — babysitter may not check it)
|
|
5
|
+
- Write rate: N/A (just restarted this tick)
|
|
6
|
+
- Admiral last 30 min: N/A
|
|
7
|
+
- vLLM 400s: 0 errors in llamacpp-gemma4 last 30m
|
|
8
|
+
- GH issues: 0 open
|
|
9
|
+
- Dispatch queue: harness=7 (all stale thinking_stall, resolved by v2.8.47+v2.8.48), retrieval=0 actionable, curiosity=2546 pending (409 hle_failure, 2137 unknown_term — all HLE-related, HLE paused via sentinels)
|
|
10
|
+
- Action this tick: no action — system healthy; queued harness items all historical; top curiosity items are hard-math HLE timeouts which cannot be evaluated with HLE paused per operator directive (CLAUDE.md 2026-05-17); retrieval queue already up to date
|
|
11
|
+
|
|
12
|
+
## 2026-05-17 15:30 UTC tick
|
|
13
|
+
- Stress: PAUSED (.pause_stress sentinel active)
|
|
14
|
+
- HLE burndown: running (PID 2465533 engineering batch, slot 59, ~51 min elapsed), lifetime 115/848 = 13.6% (Math 17.8%, CS/AI 6.8%, Bio/Med 13.2%, Physics 8.3%, Chem 8.7%); babysitter skipping correctly while burndown active
|
|
15
|
+
- Write rate: N/A (stress paused)
|
|
16
|
+
- Admiral last 30 min: not checked (stress paused)
|
|
17
|
+
- vLLM 400s: 0 observed
|
|
18
|
+
- GH issues: 0 open
|
|
19
|
+
- Dispatch queue: harness=7 (all thinking_stall from 2026-05-15, already addressed by recent commits), retrieval=3 (0 actionable — all already ingested), steering=0, curiosity=2546 pending (top 3 are hle_failure/no-FINAL-ANSWER pattern, covered by commits a9f16ae/4909542/d500234)
|
|
20
|
+
- retrieval-drain: 0 projects ingested (nothing new)
|
|
21
|
+
- Model: Q3_K_M via llama.cpp :8000 healthy; balancer :8001 healthy
|
|
22
|
+
- Action this tick: no action — healthy; recent 24h commits are actively addressing HLE stall/FINAL-ANSWER pattern; curiosity top items already covered
|
|
23
|
+
|
|
24
|
+
## 2026-05-17 14:30 UTC tick
|
|
25
|
+
- Stress: PAUSED (.pause_stress sentinel active)
|
|
26
|
+
- HLE burndown: running (PID 2452616 chemistry batch in progress), lifetime 115/841 = 13.7% (Math 17.8%, CS/AI 6.8%, Bio/Med 13.2%, Physics 8.3%, Chem 8.7%, Other 18.2%, Engineering 4.7%, Hum/SS 14.3%); latest batch chemistry 1/10
|
|
27
|
+
- Write rate: N/A (stress paused)
|
|
28
|
+
- vLLM 400s: 0; llamacpp-gemma4 healthy; balancer on :8001 healthy
|
|
29
|
+
- GH issues: 0 open
|
|
30
|
+
- Dispatch queue: harness=7 (all thinking_stall, stale pre-fix), retrieval=3 (nothing actionable), curiosity=2934 total/2525 pending/406 consumed
|
|
31
|
+
- Action this tick: committed fix a9f16ae (addresses curiosity:01c0f4dc34d97142, :fbe7b3456bdbb0ca, :4ffd02384a890963) — stall-retry _prev_was_read notes at attempts 0 and 1 now append DRYDOCK_STOP_NOW_SUFFIX ("FINAL ANSWER: <answer>") which 4909542 only did for attempt 2; also neutralized coding-task wording ("write_file, search_replace") to context-neutral ("respond in text — write your answer or make changes"). No-op for coding sessions (suffix unset by default).
|
|
32
|
+
|
|
33
|
+
## 2026-05-17 14:00 UTC tick
|
|
34
|
+
- Stress: PAUSED (.pause_stress sentinel active)
|
|
35
|
+
- HLE burndown: running (PID 2452616, slot 58 chemistry), lifetime 114/837 = 13.6% (Math 17.8%, CS/AI 6.8%, Bio/Med 13.2%, Physics 8.3%, Chem 7.8%); recent batch Physics 20%
|
|
36
|
+
- Write rate: N/A (stress paused)
|
|
37
|
+
- Admiral last 30 min: N/A
|
|
38
|
+
- vLLM 400s: 0; llamacpp-gemma4 healthy (25h uptime)
|
|
39
|
+
- GH issues: 0 open
|
|
40
|
+
- Dispatch queue: harness=1305 total (8 in last 24h, thinking_stall, already addressed by v2.8.47+), retrieval=3 (nothing actionable), curiosity=2931 total (2524 pending, 403 consumed)
|
|
41
|
+
- Action this tick: consumed curiosity acf1a1892044a747 (thinking-budget timeout case — addressed by 2973dd1 QUESTION_TIMEOUT 480→600s). Investigated ongoing empty-pred failures in physics batch (3 questions produced pred='' in run_1779013132 after FINAL ANSWER fixes) — these are hard-QA questions where model likely times out during inference before producing output; pattern requires deeper session log analysis, leaving for next autonomous_review tick.
|
|
42
|
+
|
|
43
|
+
## 2026-05-17 13:30 UTC tick
|
|
44
|
+
- Stress: PAUSED (.pause_stress sentinel active)
|
|
45
|
+
- HLE burndown: running (PID 1742185, 3+ days elapsed), lifetime 114/832 = 13.7% (Math 17.8%, CS/AI 6.8%, Bio/Med 13.2%, Physics 8.3%, Chem 8.5%); recent batches: Humanities 30%, Physics 20%, Physics 10%
|
|
46
|
+
- Write rate: N/A (stress paused)
|
|
47
|
+
- vLLM 400s: 0 in last 30min (llamacpp-gemma4 Q3_K_M healthy on :8000, balancer :8001 up)
|
|
48
|
+
- GH issues: 0 open
|
|
49
|
+
- Dispatch queue: harness=8 (all historical thinking_stall, resolved v2.8.47), retrieval=3 (all recently ingested, 0 actionable), curiosity=2513 pending (409 hle_failure, 2107 unknown_term)
|
|
50
|
+
- Action this tick: consumed 3 stale hle_failure curiosity items (da424f73, 5c2ad87e, 4f4de190 — empty:no_final_answer cases addressed by d500234/4909542 stall-retry FINAL ANSWER suffix fixes); observed 1 new empty:no_response at 601s in Humanities batch (poetry question) — non-streaming HTTP timeout still hitting first-turn for some questions; no code change this tick as system otherwise healthy and autonomous_review just completed 13:00Z tick
|
|
51
|
+
|
|
52
|
+
## 2026-05-17 13:00 UTC tick
|
|
53
|
+
- Stress: PAUSED (.pause_stress sentinel active)
|
|
54
|
+
- HLE burndown: running (PID 2440503, 27min elapsed), lifetime 112/825 = 13.6% (Math 17.8%, CS/AI 6.8%, Bio/Med 13.2%, Physics 8.3%, Chem 8.5%); recent batches variable (0-50%)
|
|
55
|
+
- Write rate: N/A (stress paused)
|
|
56
|
+
- Admiral last 30 min: N/A (stress paused)
|
|
57
|
+
- vLLM 400s: N/A (llamacpp container, not vLLM)
|
|
58
|
+
- GH issues: 0 open
|
|
59
|
+
- Dispatch queue: harness=8 (all historical, thinking_stall resolved v2.8.47), retrieval=3 (all already ingested), curiosity=2504 pending
|
|
60
|
+
- Action this tick: consumed 3 stale pre-fix curiosity items (FINAL ANSWER + timeout artifacts addressed by d500234/4909542/2973dd1); no new bugs found; autonomous_review running concurrently at 13:00Z
|
|
61
|
+
|
|
62
|
+
## 2026-05-17 12:30 UTC tick
|
|
63
|
+
- Stress: PAUSED (.pause_stress sentinel active)
|
|
64
|
+
- HLE burndown: running slot 56 (PID 2425424, 69min elapsed, physics batch — Q10 in progress), lifetime 111/821 = 13.5% (Math 17.8%, CS/AI 6.8%, Bio/Med 13.2%, Physics 8.5%, Chem 8.5%, Other unchanged)
|
|
65
|
+
- Write rate: N/A (stress paused)
|
|
66
|
+
- vLLM 400s: 0 in last 30min, llamacpp-gemma4 healthy (Q3_K_M)
|
|
67
|
+
- GH issues: 0 open
|
|
68
|
+
- Dispatch queue: harness=8 (all stale thinking_stall, resolved v2.8.47); retrieval=0 actionable (3 entries, all recently ingested); curiosity=2488 pending — consumed 3 stale hle_failure artifacts (532e9d22, 77d0d52, 44f4d505 — hard theoretical questions: Tate-graph/μ-fixpoint, DomSet complexity, SU(N) structure constants; model capability gap, not addressable by prompt rules)
|
|
69
|
+
- 12:00Z autonomous_review tick hit $1 USD budget cap and exited early (exit=1)
|
|
70
|
+
- Action this tick: no code change — system nominal; consumed 3 curiosity items; retrieval drain 0 new ingestions
|
|
71
|
+
|
|
72
|
+
## 2026-05-17 12:00 UTC tick
|
|
73
|
+
- Stress: PAUSED (.pause_stress sentinel active)
|
|
74
|
+
- HLE burndown: running (PID 2425424, physics batch in progress), lifetime 110/817 = 13.5% (Math 17.8%, CS/AI 6.8%, Bio/Med 13.2%, Physics 7.5%, Chem 8.5%, Other 18.2%)
|
|
75
|
+
- Write rate: N/A (stress paused)
|
|
76
|
+
- Admiral: autonomous_review tick started at 12:00Z
|
|
77
|
+
- vLLM 400s: 0 in last 30min, model healthy
|
|
78
|
+
- GH issues: 0 open
|
|
79
|
+
- Dispatch queue: harness=9 (all thinking_stall, stale from 2026-05-16); retrieval=0 actionable; curiosity=2488 pending (hle_failure=407, unknown_term=2081)
|
|
80
|
+
- Action this tick: committed fix — QUESTION_TIMEOUT 480→600s in hle_eval.py; all 3 recent empty:no_final_answer cases elapsed exactly at deadline (model killed mid-generation); retrieval drain: 0 actionable; curiosity top item (threshold-sig scheme) marked consumed (42e0bdf8)
|
|
81
|
+
|
|
82
|
+
## 2026-05-17 11:30 UTC tick
|
|
83
|
+
- Stress: PAUSED (.pause_stress sentinel active)
|
|
84
|
+
- HLE burndown: running (PID 2425424, 08:50 elapsed, physics slot 56 active), lifetime 109/813 = 13.4% (Math 17.8%, CS/AI 6.8%, Bio/Med 13.2%, Physics 6.3%, Chem 8.5%, Other 18.2%)
|
|
85
|
+
- Write rate: N/A (stress paused)
|
|
86
|
+
- Admiral last 30 min: autonomous_review tick started at 11:30Z
|
|
87
|
+
- vLLM 400s: 3 matches in docker grep (benign — reasoning-budget activation noise, Q3_K_M healthy, 23376 tok prompt for physics slot)
|
|
88
|
+
- GH issues: 0 open
|
|
89
|
+
- Dispatch queue: harness=9 (all stale, thinking_stall resolved by v2.8.47); retrieval=0 actionable; curiosity=2478 pending (top 3 are today's physics no_response failures — spinor/scalar field + Z-boson EW + virial series; model timed out at 480s with msg_count=1; not addressable by prompt changes)
|
|
90
|
+
- Retrieval drain: 0 projects (3 queue entries, all already ingested)
|
|
91
|
+
- Action this tick: no code change — system nominal; harness:thinking_stall pattern confirmed stale (last dispatch evidence says "fully resolved by v2.8.47"); top curiosity items are empty:no_response physics timeouts where model never starts within 480s, distinct from the empty:no_final_answer cases targeted by recent FINAL ANSWER suffix commits
|
|
92
|
+
|
|
3
93
|
## 2026-05-17 10:30 UTC tick
|
|
4
94
|
- Stress: PAUSED (.pause_stress sentinel active)
|
|
5
95
|
- HLE burndown: running (PID 2412661, physics batch active, 12min elapsed), lifetime 108/803 = 13.4% (Math 17.8%, CS/AI 6.8%, Bio/Med 13.2%, Chem 8.5%, Other 18.2%)
|
|
@@ -7365,3 +7455,13 @@ restarted, cron self-match bug fixed in this same session).
|
|
|
7365
7455
|
- Previous batch (23:52 UTC, 10 Math questions): 0/10 — all 480s timeouts on hard questions (fuzzy logic, semilattice functors, Boolean prime implicants); model outputs show reasoning fragments not clean FINAL ANSWER — capability gap, not a drydock bug
|
|
7366
7456
|
- Current batch (01:13 UTC): 2/4 correct so far (chess Q1 YES exact, Cauchy Q3 YES fuzzy) after recent stall-retry fixes; still running
|
|
7367
7457
|
- Action this tick: consumed curiosity:982cd07192229b9e (LSH-threshold model-used-tools-but-no-FINAL-ANSWER — addressed by 23f65dc + e20fb7b stall-retry guards); no code fix committed — system healthy, recent fixes still being evaluated by burndown daemon
|
|
7458
|
+
|
|
7459
|
+
## 2026-05-17 11:00 UTC tick
|
|
7460
|
+
- Stress: paused via .pause_stress sentinel (expected)
|
|
7461
|
+
- Write rate: N/A (stress paused)
|
|
7462
|
+
- Admiral last 30 min: N/A
|
|
7463
|
+
- vLLM 400s: 10 (within llamacpp normal range, no errors logged)
|
|
7464
|
+
- GH issues: 0 open
|
|
7465
|
+
- Dispatch queue: harness=9 (all stale thinking_stall, addressed by v2.8.47+v2.8.48), retrieval=0 actionable, curiosity=2468 pending (402 hle_failure, 2066 unknown_term)
|
|
7466
|
+
- HLE: lifetime 13.5% across 809 questions (Math 17.8%, CS/AI 6.8%, Bio/Med 13.2%); burndown daemon running (PID 2412661, physics batch)
|
|
7467
|
+
- Action this tick: committed fix (4909542) — readonly-tool stall-retry note was saying "call write_file or search_replace NOW" (wrong for HLE) and omitting DRYDOCK_STOP_NOW_SUFFIX; fixed to say "respond in text with analysis/best answer" and append the FINAL ANSWER suffix; consumed curiosity:87cf3274e4ba6912
|