drydock-cli 2.6.145__tar.gz → 2.6.147__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.
Files changed (642) hide show
  1. drydock_cli-2.6.147/.auto_release.lock +1 -0
  2. drydock_cli-2.6.147/DEPLOYMENT.md +223 -0
  3. drydock_cli-2.6.147/OVERNIGHT_PROGRESS.md +159 -0
  4. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/PKG-INFO +8 -1
  5. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/README.md +7 -0
  6. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/pyproject.toml +1 -1
  7. drydock_cli-2.6.147/research/config_base.toml +209 -0
  8. drydock_cli-2.6.147/research/domain_spec.md +265 -0
  9. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/research/experimenter.py +75 -8
  10. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/research/kernel.py +107 -0
  11. drydock_cli-2.6.147/research/proposer.py +373 -0
  12. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/stress_babysitter.sh +1 -1
  13. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/stress_watcher.py +39 -0
  14. drydock_cli-2.6.145/.auto_release.lock +0 -1
  15. drydock_cli-2.6.145/research/config_base.toml +0 -93
  16. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/.claude/scheduled_tasks.lock +0 -0
  17. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/.github/CODEOWNERS +0 -0
  18. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
  19. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  20. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  21. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/.github/workflows/build-and-upload.yml +0 -0
  22. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/.github/workflows/ci.yml +0 -0
  23. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/.github/workflows/issue-labeler.yml +0 -0
  24. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/.github/workflows/release.yml +0 -0
  25. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/.gitignore +0 -0
  26. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/.pre-commit-config.yaml +0 -0
  27. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/.python-version +0 -0
  28. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/.typos.toml +0 -0
  29. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/.vscode/extensions.json +0 -0
  30. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/.vscode/launch.json +0 -0
  31. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/.vscode/settings.json +0 -0
  32. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/AGENTS.md +0 -0
  33. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/Admiral.md +0 -0
  34. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/BASELINE_412.md +0 -0
  35. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/CHANGELOG.md +0 -0
  36. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/CLAUDE.md +0 -0
  37. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/CONTRIBUTING.md +0 -0
  38. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/Drydock_rebrand.md +0 -0
  39. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/LICENSE +0 -0
  40. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/MODEL_SHORTCOMINGS.md +0 -0
  41. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/NOTICE +0 -0
  42. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/OVERNIGHT_REPORT_2026_04_13.md +0 -0
  43. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/PRD.md +0 -0
  44. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/action.yml +0 -0
  45. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/README.md +0 -0
  46. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results1.tsv +0 -0
  47. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results13.tsv +0 -0
  48. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results14.tsv +0 -0
  49. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results15.tsv +0 -0
  50. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results16.tsv +0 -0
  51. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results17.tsv +0 -0
  52. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results18.tsv +0 -0
  53. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results19.tsv +0 -0
  54. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results2.tsv +0 -0
  55. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results20.tsv +0 -0
  56. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results3.tsv +0 -0
  57. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results4.tsv +0 -0
  58. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results5.tsv +0 -0
  59. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results6.tsv +0 -0
  60. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results7.tsv +0 -0
  61. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results8.tsv +0 -0
  62. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results9.tsv +0 -0
  63. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/baseline_history/results_evolved_v1.tsv +0 -0
  64. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/distribution/zed/LICENSE +0 -0
  65. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/distribution/zed/extension.toml +0 -0
  66. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/distribution/zed/icons/mistral_vibe.svg +0 -0
  67. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/docs/README.md +0 -0
  68. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/docs/acp-setup.md +0 -0
  69. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/docs/proxy-setup.md +0 -0
  70. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/__init__.py +0 -0
  71. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/acp/__init__.py +0 -0
  72. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/acp/acp_agent_loop.py +0 -0
  73. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/acp/acp_logger.py +0 -0
  74. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/acp/entrypoint.py +0 -0
  75. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/acp/tools/__init__.py +0 -0
  76. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/acp/tools/base.py +0 -0
  77. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/acp/tools/builtins/bash.py +0 -0
  78. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/acp/tools/builtins/read_file.py +0 -0
  79. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/acp/tools/builtins/search_replace.py +0 -0
  80. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/acp/tools/builtins/todo.py +0 -0
  81. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/acp/tools/builtins/write_file.py +0 -0
  82. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/acp/tools/session_update.py +0 -0
  83. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/acp/utils.py +0 -0
  84. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/admiral/__init__.py +0 -0
  85. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/admiral/detectors.py +0 -0
  86. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/admiral/history.py +0 -0
  87. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/admiral/interventions.py +0 -0
  88. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/admiral/llm_analyzer.py +0 -0
  89. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/admiral/metrics.py +0 -0
  90. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/admiral/opus_escalator.py +0 -0
  91. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/admiral/persistence.py +0 -0
  92. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/admiral/policy.py +0 -0
  93. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/admiral/proposer.py +0 -0
  94. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/admiral/stager.py +0 -0
  95. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/admiral/task_classifier.py +0 -0
  96. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/admiral/tuning.py +0 -0
  97. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/admiral/validator.py +0 -0
  98. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/admiral/worker.py +0 -0
  99. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/__init__.py +0 -0
  100. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/autocompletion/__init__.py +0 -0
  101. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/autocompletion/base.py +0 -0
  102. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/autocompletion/path_completion.py +0 -0
  103. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/autocompletion/slash_command.py +0 -0
  104. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/cli.py +0 -0
  105. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/clipboard.py +0 -0
  106. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/commands.py +0 -0
  107. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/entrypoint.py +0 -0
  108. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/history_manager.py +0 -0
  109. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
  110. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
  111. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
  112. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/terminal_setup.py +0 -0
  113. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/__init__.py +0 -0
  114. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
  115. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/app.py +0 -0
  116. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/app.tcss +0 -0
  117. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/external_editor.py +0 -0
  118. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
  119. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/handlers/event_handler.py +0 -0
  120. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
  121. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/notifications/adapters/__init__.py +0 -0
  122. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
  123. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/notifications/ports/__init__.py +0 -0
  124. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
  125. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/__init__.py +0 -0
  126. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/approval_app.py +0 -0
  127. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
  128. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
  129. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
  130. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
  131. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
  132. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
  133. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
  134. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
  135. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
  136. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/checkpoint_picker.py +0 -0
  137. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/compact.py +0 -0
  138. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
  139. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
  140. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
  141. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/loading.py +0 -0
  142. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/messages.py +0 -0
  143. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
  144. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
  145. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
  146. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
  147. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
  148. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
  149. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
  150. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
  151. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
  152. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/tools.py +0 -0
  153. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
  154. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
  155. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/windowing/history.py +0 -0
  156. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
  157. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/textual_ui/windowing/state.py +0 -0
  158. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/update_notifier/__init__.py +0 -0
  159. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
  160. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
  161. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
  162. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
  163. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
  164. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/update_notifier/update.py +0 -0
  165. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/cli/update_notifier/whats_new.py +0 -0
  166. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/__init__.py +0 -0
  167. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/agent_loop.py +0 -0
  168. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/agents/__init__.py +0 -0
  169. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/agents/manager.py +0 -0
  170. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/agents/models.py +0 -0
  171. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/auth/__init__.py +0 -0
  172. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/auth/crypto.py +0 -0
  173. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/auth/github.py +0 -0
  174. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/autocompletion/__init__.py +0 -0
  175. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/autocompletion/completers.py +0 -0
  176. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
  177. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
  178. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
  179. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/autocompletion/file_indexer/store.py +0 -0
  180. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
  181. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/autocompletion/fuzzy.py +0 -0
  182. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/autocompletion/path_prompt.py +0 -0
  183. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
  184. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/build_orchestrator.py +0 -0
  185. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/checkpoint.py +0 -0
  186. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/config/__init__.py +0 -0
  187. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/config/_settings.py +0 -0
  188. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/config/doctor.py +0 -0
  189. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/config/harness_files/__init__.py +0 -0
  190. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/config/harness_files/_harness_manager.py +0 -0
  191. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/config/harness_files/_paths.py +0 -0
  192. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/consultant.py +0 -0
  193. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/drydock_states.py +0 -0
  194. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/hooks.py +0 -0
  195. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/llm/__init__.py +0 -0
  196. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/llm/backend/anthropic.py +0 -0
  197. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/llm/backend/base.py +0 -0
  198. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/llm/backend/factory.py +0 -0
  199. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/llm/backend/generic.py +0 -0
  200. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/llm/backend/mistral.py +0 -0
  201. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
  202. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/llm/backend/vertex.py +0 -0
  203. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/llm/exceptions.py +0 -0
  204. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/llm/format.py +0 -0
  205. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/llm/message_utils.py +0 -0
  206. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/llm/types.py +0 -0
  207. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/logger.py +0 -0
  208. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/middleware.py +0 -0
  209. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/output_formatters.py +0 -0
  210. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/paths/__init__.py +0 -0
  211. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/paths/_drydock_home.py +0 -0
  212. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/paths/_local_config_walk.py +0 -0
  213. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/paths/conventions.py +0 -0
  214. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/plan_session.py +0 -0
  215. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/plugins.py +0 -0
  216. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/programmatic.py +0 -0
  217. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/prompts/__init__.py +0 -0
  218. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/prompts/builder.md +0 -0
  219. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/prompts/cli.md +0 -0
  220. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/prompts/compact.md +0 -0
  221. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/prompts/dangerous_directory.md +0 -0
  222. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/prompts/diagnostic.md +0 -0
  223. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/prompts/explore.md +0 -0
  224. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/prompts/gemma4.md +0 -0
  225. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/prompts/planner.md +0 -0
  226. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/prompts/project_context.md +0 -0
  227. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/prompts/tests.md +0 -0
  228. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/proxy_setup.py +0 -0
  229. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/session/agent_memory.py +0 -0
  230. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/session/checkpoints.py +0 -0
  231. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/session/session_loader.py +0 -0
  232. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/session/session_logger.py +0 -0
  233. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/session/session_migration.py +0 -0
  234. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/session/state_file.py +0 -0
  235. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/session_checker.py +0 -0
  236. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/skills/__init__.py +0 -0
  237. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/skills/manager.py +0 -0
  238. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/skills/models.py +0 -0
  239. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/skills/parser.py +0 -0
  240. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/slug.py +0 -0
  241. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/system_prompt.py +0 -0
  242. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/telemetry/__init__.py +0 -0
  243. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/telemetry/send.py +0 -0
  244. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/teleport/errors.py +0 -0
  245. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/teleport/git.py +0 -0
  246. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/teleport/nuage.py +0 -0
  247. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/teleport/teleport.py +0 -0
  248. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/teleport/types.py +0 -0
  249. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/base.py +0 -0
  250. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/_task_manager.py +0 -0
  251. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/ask_user_question.py +0 -0
  252. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/bash.py +0 -0
  253. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/cron.py +0 -0
  254. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
  255. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/glob_tool.py +0 -0
  256. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/grep.py +0 -0
  257. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/invoke_skill.py +0 -0
  258. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/lsp.py +0 -0
  259. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/mcp_resources.py +0 -0
  260. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/notebook_edit.py +0 -0
  261. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/powershell.py +0 -0
  262. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/__init__.py +0 -0
  263. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
  264. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/bash.md +0 -0
  265. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/cron.md +0 -0
  266. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/glob.md +0 -0
  267. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/grep.md +0 -0
  268. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
  269. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
  270. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
  271. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
  272. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
  273. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
  274. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
  275. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
  276. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/task.md +0 -0
  277. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
  278. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/todo.md +0 -0
  279. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
  280. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
  281. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
  282. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
  283. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
  284. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/read_file.py +0 -0
  285. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/search_replace.py +0 -0
  286. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/task.py +0 -0
  287. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/todo.py +0 -0
  288. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/tool_search.py +0 -0
  289. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/webfetch.py +0 -0
  290. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/websearch.py +0 -0
  291. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/worktree.py +0 -0
  292. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/builtins/write_file.py +0 -0
  293. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/injection_guard.py +0 -0
  294. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/manager.py +0 -0
  295. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/mcp/__init__.py +0 -0
  296. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/mcp/registry.py +0 -0
  297. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/mcp/tools.py +0 -0
  298. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/mcp_sampling.py +0 -0
  299. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/ui.py +0 -0
  300. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/tools/utils.py +0 -0
  301. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/trusted_folders.py +0 -0
  302. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/types.py +0 -0
  303. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/core/utils.py +0 -0
  304. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/setup/onboarding/__init__.py +0 -0
  305. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/setup/onboarding/base.py +0 -0
  306. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/setup/onboarding/onboarding.tcss +0 -0
  307. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/setup/onboarding/screens/__init__.py +0 -0
  308. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/setup/onboarding/screens/api_key.py +0 -0
  309. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/setup/onboarding/screens/choice.py +0 -0
  310. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/setup/onboarding/screens/local_model.py +0 -0
  311. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/setup/onboarding/screens/welcome.py +0 -0
  312. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
  313. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
  314. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/__init__.py +0 -0
  315. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/api-design/SKILL.md +0 -0
  316. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/audit-tests/SKILL.md +0 -0
  317. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/batch/SKILL.md +0 -0
  318. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/commit-code/SKILL.md +0 -0
  319. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/context-summary/SKILL.md +0 -0
  320. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/create-presentation/SKILL.md +0 -0
  321. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/deep-research/SKILL.md +0 -0
  322. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/deploy/SKILL.md +0 -0
  323. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/diff-review/SKILL.md +0 -0
  324. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/doc-gen/SKILL.md +0 -0
  325. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/explain-code/SKILL.md +0 -0
  326. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/explore-code/SKILL.md +0 -0
  327. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/fix-issue/SKILL.md +0 -0
  328. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/git-ops/SKILL.md +0 -0
  329. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/init-project/SKILL.md +0 -0
  330. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/investigate/SKILL.md +0 -0
  331. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/loop/SKILL.md +0 -0
  332. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/migrate/SKILL.md +0 -0
  333. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/perf-analyze/SKILL.md +0 -0
  334. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/plan-impl/SKILL.md +0 -0
  335. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/pr-review/SKILL.md +0 -0
  336. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/refactor/SKILL.md +0 -0
  337. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/regex-help/SKILL.md +0 -0
  338. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/review/SKILL.md +0 -0
  339. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/security-review/SKILL.md +0 -0
  340. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/ship/SKILL.md +0 -0
  341. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/simplify/SKILL.md +0 -0
  342. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/strong-tests/SKILL.md +0 -0
  343. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/skills/test-verify/SKILL.md +0 -0
  344. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock/whats_new.md +0 -0
  345. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock-acp.spec +0 -0
  346. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/drydock_terms.md +0 -0
  347. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/flake.lock +0 -0
  348. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/flake.nix +0 -0
  349. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/research/README.md +0 -0
  350. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/research/mini_prd.md +0 -0
  351. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/research/mini_prompts.txt +0 -0
  352. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/research/results.tsv +0 -0
  353. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/README.md +0 -0
  354. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/admiral_probe.py +0 -0
  355. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/audit_sampler.py +0 -0
  356. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/auto_generate_tests.py +0 -0
  357. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/auto_release.sh +0 -0
  358. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/auto_test_loop.sh +0 -0
  359. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/backup.sh +0 -0
  360. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/bump_version.py +0 -0
  361. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/comprehensive_loop.py +0 -0
  362. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/deploy_to_github.sh +0 -0
  363. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/discover_cli_tools.sh +0 -0
  364. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/evolve_tests.py +0 -0
  365. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/gen_2000_prompts.py +0 -0
  366. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/install.sh +0 -0
  367. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/llm_balancer.py +0 -0
  368. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/mega_loop.py +0 -0
  369. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/meta_ralph_loop.py +0 -0
  370. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/monitor_swebench.sh +0 -0
  371. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/monitor_test_battery.sh +0 -0
  372. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/notify_release.py +0 -0
  373. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/oss_task_harness.py +0 -0
  374. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/overnight_agents_test.sh +0 -0
  375. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/poll_issues.sh +0 -0
  376. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/port_task.py +0 -0
  377. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/prepare_release.py +0 -0
  378. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/publish_to_pypi.sh +0 -0
  379. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/ralph_loop.py +0 -0
  380. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/session_loop_audit.py +0 -0
  381. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/shakedown.py +0 -0
  382. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/shakedown_interactive.py +0 -0
  383. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/shakedown_regression.sh +0 -0
  384. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/shakedown_suite.sh +0 -0
  385. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/shakedown_variance.sh +0 -0
  386. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/stress_prompts_50.txt +0 -0
  387. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/stress_prompts_realuser.txt +0 -0
  388. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/stress_prompts_tool_agent.txt +0 -0
  389. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/stress_prompts_tool_agent_2000.txt +0 -0
  390. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/stress_shakedown.py +0 -0
  391. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/stress_telegram_status.py +0 -0
  392. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/telegram_bot.py +0 -0
  393. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/test_bank.sh +0 -0
  394. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/test_full.sh +0 -0
  395. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/test_smoke.sh +0 -0
  396. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/test_tui_path.py +0 -0
  397. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/tui_test.py +0 -0
  398. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/scripts/vllm_failover.sh +0 -0
  399. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/__init__.py +0 -0
  400. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/conftest.py +0 -0
  401. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_acp.py +0 -0
  402. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_agent_thought.py +0 -0
  403. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_bash.py +0 -0
  404. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_compact_session_updates.py +0 -0
  405. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_content.py +0 -0
  406. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_initialize.py +0 -0
  407. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_list_sessions.py +0 -0
  408. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_load_session.py +0 -0
  409. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_multi_session.py +0 -0
  410. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_new_session.py +0 -0
  411. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_proxy_setup_acp.py +0 -0
  412. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_read_file.py +0 -0
  413. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_search_replace.py +0 -0
  414. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_set_config_option.py +0 -0
  415. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_set_mode.py +0 -0
  416. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_set_model.py +0 -0
  417. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_tool_call_session_update.py +0 -0
  418. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_utils.py +0 -0
  419. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/acp/test_write_file.py +0 -0
  420. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/autocompletion/test_file_indexer.py +0 -0
  421. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/autocompletion/test_fuzzy.py +0 -0
  422. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
  423. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/autocompletion/test_path_completer_recursive.py +0 -0
  424. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/autocompletion/test_path_completion_controller.py +0 -0
  425. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
  426. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/autocompletion/test_slash_command_controller.py +0 -0
  427. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
  428. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/backend/__init__.py +0 -0
  429. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/backend/data/__init__.py +0 -0
  430. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/backend/data/fireworks.py +0 -0
  431. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/backend/data/mistral.py +0 -0
  432. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/backend/test_anthropic_adapter.py +0 -0
  433. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/backend/test_backend.py +0 -0
  434. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/backend/test_reasoning_adapter.py +0 -0
  435. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
  436. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
  437. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
  438. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
  439. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/test_bell_notifications.py +0 -0
  440. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/test_braille_renderer.py +0 -0
  441. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/test_clipboard.py +0 -0
  442. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/test_commands.py +0 -0
  443. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/test_copy_shortcuts.py +0 -0
  444. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/test_external_editor.py +0 -0
  445. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/test_no_markup_static.py +0 -0
  446. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/test_question_app.py +0 -0
  447. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/test_spinner.py +0 -0
  448. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/test_switching_mode.py +0 -0
  449. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/test_ui_clipboard_notifications.py +0 -0
  450. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
  451. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/test_ui_session_resume.py +0 -0
  452. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/test_ui_skill_dispatch.py +0 -0
  453. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/textual_ui/__init__.py +0 -0
  454. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/cli/textual_ui/test_session_picker.py +0 -0
  455. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/conftest.py +0 -0
  456. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/core/test_agents.py +0 -0
  457. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/core/test_auth_crypto.py +0 -0
  458. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/core/test_auth_github.py +0 -0
  459. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/core/test_config_load_dotenv.py +0 -0
  460. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/core/test_config_paths.py +0 -0
  461. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/core/test_config_resolution.py +0 -0
  462. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/core/test_file_logging.py +0 -0
  463. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/core/test_plan_session.py +0 -0
  464. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/core/test_proxy_setup.py +0 -0
  465. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/core/test_slug.py +0 -0
  466. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/core/test_telemetry_send.py +0 -0
  467. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/core/test_teleport_git.py +0 -0
  468. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/core/test_teleport_nuage.py +0 -0
  469. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/core/test_teleport_service.py +0 -0
  470. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/core/test_trusted_folders.py +0 -0
  471. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/core/test_utils.py +0 -0
  472. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/e2e/common.py +0 -0
  473. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/e2e/conftest.py +0 -0
  474. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/e2e/mock_server.py +0 -0
  475. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/e2e/test_cli_tui_onboarding.py +0 -0
  476. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/e2e/test_cli_tui_streaming.py +0 -0
  477. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
  478. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/fixtures/doc_qa_system_prd.md +0 -0
  479. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/mock/__init__.py +0 -0
  480. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/mock/mock_backend_factory.py +0 -0
  481. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/mock/mock_entrypoint.py +0 -0
  482. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/mock/utils.py +0 -0
  483. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/onboarding/test_run_onboarding.py +0 -0
  484. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/onboarding/test_ui_onboarding.py +0 -0
  485. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/session/test_session_loader.py +0 -0
  486. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/session/test_session_logger.py +0 -0
  487. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/session/test_session_migration.py +0 -0
  488. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/skills/conftest.py +0 -0
  489. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/skills/test_manager.py +0 -0
  490. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/skills/test_models.py +0 -0
  491. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/skills/test_parser.py +0 -0
  492. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
  493. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
  494. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
  495. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_code_block_horizontal_scrolling/test_snapshot_allows_horizontal_scrolling_for_long_code_blocks.svg +0 -0
  496. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +0 -0
  497. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
  498. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
  499. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
  500. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
  501. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
  502. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
  503. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
  504. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
  505. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
  506. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
  507. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
  508. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
  509. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
  510. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
  511. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
  512. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
  513. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
  514. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
  515. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
  516. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
  517. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
  518. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
  519. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
  520. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
  521. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
  522. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
  523. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
  524. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
  525. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
  526. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
  527. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
  528. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
  529. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
  530. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
  531. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
  532. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
  533. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
  534. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
  535. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
  536. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
  537. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
  538. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
  539. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
  540. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
  541. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
  542. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
  543. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
  544. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
  545. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
  546. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
  547. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
  548. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
  549. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
  550. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
  551. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
  552. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/base_snapshot_test_app.py +0 -0
  553. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/conftest.py +0 -0
  554. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/snap_compare.py +0 -0
  555. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
  556. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
  557. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
  558. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
  559. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
  560. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
  561. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
  562. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
  563. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
  564. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
  565. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
  566. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
  567. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
  568. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
  569. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/stubs/fake_backend.py +0 -0
  570. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/stubs/fake_client.py +0 -0
  571. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/stubs/fake_tool.py +0 -0
  572. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_admiral.py +0 -0
  573. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_admiral_phase3.py +0 -0
  574. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_agent_auto_compact.py +0 -0
  575. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_agent_backend.py +0 -0
  576. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_agent_observer_streaming.py +0 -0
  577. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_agent_stats.py +0 -0
  578. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_agent_tasks.py +0 -0
  579. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_agent_tool_call.py +0 -0
  580. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_agents.py +0 -0
  581. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_bank_build.py +0 -0
  582. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_bank_debug.py +0 -0
  583. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_bank_multiagent.py +0 -0
  584. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_bank_prd.py +0 -0
  585. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_bank_prd_extended.py +0 -0
  586. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_bank_tools.py +0 -0
  587. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_bank_update.py +0 -0
  588. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_build_projects.py +0 -0
  589. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_checkpoint.py +0 -0
  590. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_cli_programmatic_preload.py +0 -0
  591. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_current_bugs.py +0 -0
  592. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_drydock_regression.py +0 -0
  593. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_drydock_tasks.py +0 -0
  594. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_full_regression.py +0 -0
  595. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_history_manager.py +0 -0
  596. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_integration.py +0 -0
  597. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_issue_fixes.py +0 -0
  598. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_loop_detection.py +0 -0
  599. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_message_id.py +0 -0
  600. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_message_merging.py +0 -0
  601. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_middleware.py +0 -0
  602. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_multi_agent.py +0 -0
  603. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_real_failures.py +0 -0
  604. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_real_issues.py +0 -0
  605. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_real_workflow.py +0 -0
  606. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_reasoning_content.py +0 -0
  607. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_smoke.py +0 -0
  608. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_system_prompt.py +0 -0
  609. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_tagged_text.py +0 -0
  610. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_tool_args.py +0 -0
  611. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_ui_external_editor.py +0 -0
  612. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_ui_input_history.py +0 -0
  613. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_user_issues.py +0 -0
  614. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/test_workloads.py +0 -0
  615. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/testbank_helpers.py +0 -0
  616. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/tools/test_ask_user_question.py +0 -0
  617. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/tools/test_bash.py +0 -0
  618. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/tools/test_exit_plan_mode.py +0 -0
  619. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/tools/test_grep.py +0 -0
  620. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/tools/test_invoke_context.py +0 -0
  621. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/tools/test_manager_get_tool_config.py +0 -0
  622. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/tools/test_mcp.py +0 -0
  623. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/tools/test_mcp_sampling.py +0 -0
  624. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/tools/test_task.py +0 -0
  625. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/tools/test_ui_bash_execution.py +0 -0
  626. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/tools/test_webfetch.py +0 -0
  627. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/tools/test_websearch.py +0 -0
  628. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
  629. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
  630. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/update_notifier/test_do_update.py +0 -0
  631. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
  632. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/update_notifier/test_github_update_gateway.py +0 -0
  633. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
  634. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/update_notifier/test_ui_update_notification.py +0 -0
  635. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/update_notifier/test_update_use_case.py +0 -0
  636. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/tests/update_notifier/test_whats_new.py +0 -0
  637. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/uv.lock +0 -0
  638. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/worked_examples/README.md +0 -0
  639. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/worked_examples/cli_subcommand_dispatch.py +0 -0
  640. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/worked_examples/lookup.json +0 -0
  641. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/worked_examples/sql_parser.py +0 -0
  642. {drydock_cli-2.6.145 → drydock_cli-2.6.147}/worked_examples/tree_walking_interpreter.py +0 -0
@@ -0,0 +1 @@
1
+ 2652274
@@ -0,0 +1,223 @@
1
+ # DryDock Deployment Guide
2
+
3
+ The known-working configuration DryDock is developed and tested against.
4
+ If you hit TUI loops, tool errors, or model hangs that look different
5
+ from what the README describes, your setup is probably drifting from
6
+ this baseline. This document is kept deliberately concrete — it mirrors
7
+ a real working machine, not aspirational recommendations.
8
+
9
+ ## Hardware baseline
10
+
11
+ | Component | What works |
12
+ |---|---|
13
+ | GPU | 2× NVIDIA RTX 4060 Ti 16 GB (32 GB total VRAM) |
14
+ | Model | [Gemma-4-26B-A4B-it-AWQ-4bit](https://huggingface.co/casperhansen/gemma-4-26b-a4b-it-AWQ-4bit) |
15
+ | RAM | 64 GB recommended (32 GB minimum) |
16
+ | Disk | SSD, ≥100 GB free for model + session logs |
17
+ | OS | Ubuntu 22.04, kernel 6.8 |
18
+
19
+ A single 24 GB GPU can run the model with slightly reduced context.
20
+ The AWQ quant is what makes 16 GB cards viable — non-quantized
21
+ Gemma 4 26B needs ≥40 GB.
22
+
23
+ ## vLLM (model server)
24
+
25
+ Run via Docker:
26
+
27
+ ```bash
28
+ docker run -d \
29
+ --gpus all \
30
+ --name gemma4 \
31
+ -p 8000:8000 \
32
+ -v /path/to/models:/models \
33
+ --ipc=host \
34
+ vllm/vllm-openai:gemma4 \
35
+ --model /models/Gemma-4-26B-A4B-it-AWQ-4bit \
36
+ --quantization compressed-tensors \
37
+ --tensor-parallel-size 2 \
38
+ --max-model-len 131072 \
39
+ --max-num-seqs 2 \
40
+ --gpu-memory-utilization 0.95 \
41
+ --kv-cache-dtype fp8 \
42
+ --served-model-name gemma4 \
43
+ --trust-remote-code \
44
+ --tool-call-parser gemma4 \
45
+ --enable-auto-tool-choice \
46
+ --attention-backend TRITON_ATTN
47
+ ```
48
+
49
+ **Don't omit** any of these flags — they're all load-bearing:
50
+
51
+ | Flag | Why |
52
+ |---|---|
53
+ | `--tool-call-parser gemma4` | Without this, Gemma 4 emits tool calls in text that the OpenAI-compat layer can't route. Tool calling silently breaks. |
54
+ | `--enable-auto-tool-choice` | Required so `tool_choice="auto"` actually works. Without it the model can't decide between text and tool call. |
55
+ | `--attention-backend TRITON_ATTN` | The default backend has periodic OOM spikes on 16 GB cards. TRITON is stable. |
56
+ | `--kv-cache-dtype fp8` | Halves KV cache memory; required to reach 131K context on 32 GB total VRAM. |
57
+ | `--max-num-seqs 2` | Prevents OOM under concurrent load. Raise on larger cards. |
58
+ | `--gpu-memory-utilization 0.95` | Squeezes the last bit of VRAM. Drop to 0.85 if you see allocator warnings. |
59
+
60
+ Single-GPU variant: drop `--tensor-parallel-size 2` and lower
61
+ `--max-model-len` to something like 65536.
62
+
63
+ ### Sanity-check
64
+
65
+ ```bash
66
+ curl http://localhost:8000/v1/models
67
+ # Should return: {"data": [{"id": "gemma4", ...}]}
68
+
69
+ curl http://localhost:8000/v1/chat/completions \
70
+ -H "Content-Type: application/json" \
71
+ -d '{"model":"gemma4","messages":[{"role":"user","content":"hi"}]}'
72
+ ```
73
+
74
+ ## Optional: load balancer / failover
75
+
76
+ For long sessions, a thin HTTP proxy in front of vLLM survives brief
77
+ vLLM restarts. Point DryDock at the proxy, not vLLM directly. See
78
+ `scripts/llm_balancer.py` for reference; typical setup is:
79
+
80
+ - Proxy on port 8001 → vLLM on port 8000
81
+ - Keepalive cron respawns the balancer if it dies
82
+ - `scripts/vllm_failover.sh` on a 5-min cron restarts vLLM if it's unreachable
83
+
84
+ The development machine uses this setup. Skip it for first-time setup;
85
+ return to it when you start hitting multi-hour sessions.
86
+
87
+ ## `~/.drydock/config.toml`
88
+
89
+ The known-working DryDock config. Copy into `~/.drydock/config.toml`
90
+ after first run (DryDock creates a stub on first launch; overwrite it):
91
+
92
+ ```toml
93
+ active_model = "local"
94
+ auto_compact_threshold = 120000
95
+ api_timeout = 600.0
96
+ system_prompt_id = "ralph" # Gemma 4's simplified prompt
97
+ slim_system_prompt = true
98
+ enable_telemetry = true
99
+ enable_notifications = true
100
+
101
+ [[providers]]
102
+ name = "vllm"
103
+ api_base = "http://localhost:8000/v1" # or :8001 if using llm_balancer
104
+ api_style = "openai"
105
+ backend = "generic"
106
+ reasoning_field_name = "reasoning_content"
107
+
108
+ [[models]]
109
+ name = "gemma4"
110
+ provider = "vllm"
111
+ alias = "local" # matches active_model above
112
+ temperature = 0.2
113
+ thinking = "high"
114
+
115
+ [session_logging]
116
+ save_dir = "~/.vibe/logs/session" # drydock writes sessions here
117
+ session_prefix = "session"
118
+ enabled = true
119
+
120
+ [project_context]
121
+ max_chars = 40000
122
+ max_doc_bytes = 32768
123
+ max_files = 1000
124
+ max_depth = 3
125
+ timeout_seconds = 2.0
126
+
127
+ [tools.bash]
128
+ permission = "always"
129
+ max_output_bytes = 16000
130
+ default_timeout = 300
131
+ # See repo config for the full allowlist/denylist.
132
+
133
+ [tools.read_file]
134
+ permission = "always"
135
+ max_read_bytes = 64000
136
+
137
+ [tools.write_file]
138
+ permission = "always"
139
+ max_write_bytes = 64000
140
+ create_parent_dirs = true
141
+
142
+ [tools.search_replace]
143
+ permission = "always"
144
+ max_content_size = 100000
145
+ fuzzy_threshold = 0.9
146
+
147
+ [tools.grep]
148
+ permission = "always"
149
+ max_output_bytes = 64000
150
+ default_max_matches = 100
151
+ default_timeout = 60
152
+
153
+ [tools.todo]
154
+ permission = "always"
155
+ max_todos = 100
156
+
157
+ [tools.task]
158
+ permission = "always"
159
+ allowlist = ["explore", "diagnostic", "planner", "builder"]
160
+
161
+ [tools.web_fetch]
162
+ permission = "ask" # don't auto-approve network egress
163
+ default_timeout = 30
164
+ max_content_bytes = 512000
165
+
166
+ [tools.web_search]
167
+ permission = "ask"
168
+ ```
169
+
170
+ Critical fields:
171
+
172
+ - `temperature = 0.2` — Gemma 4 gets unstable above ~0.4. Don't raise.
173
+ - `thinking = "high"` — required for planning. DryDock adaptively
174
+ lowers it per-turn; setting it here is the default ceiling.
175
+ - `system_prompt_id = "ralph"` — the Gemma-4-tuned prompt. The default
176
+ cli prompt confuses Gemma 4 into planning instead of acting.
177
+ - `auto_compact_threshold = 120000` — below Gemma 4's 131K max context,
178
+ with headroom for the response.
179
+ - `api_timeout = 600.0` — Gemma 4's first-turn thinking can legitimately
180
+ take 60–120 s. The default timeout is too short.
181
+
182
+ ## Environment variables
183
+
184
+ | Var | Default | Why you'd change it |
185
+ |---|---|---|
186
+ | `DRYDOCK_AUTO_CONTINUE_DISABLE` | unset | Set to `1` to stop the auto-"Continue." injection that keeps Gemma 4 chaining tool calls. Useful for **stress test runs** and any workflow where text-only turns should cleanly end the user turn. Leave unset for production use unless you see Continue-loops. |
187
+ | `DRYDOCK_INSECURE` | unset | Set to `1` to accept self-signed TLS (local LAN deployments). |
188
+ | `DRYDOCK_LOCAL_URL` | `http://localhost:8000/v1` | Override the default local endpoint. |
189
+ | `DRYDOCK_LOCAL_MODEL` | `local` | Model alias to target. |
190
+
191
+ ## Known-good network topology
192
+
193
+ ```
194
+ user drydock TUI llm_balancer vLLM
195
+ cli ───► :stdin ───► :8001 ────► :8000
196
+ │ │
197
+ └── keepalive cron └── keeps one
198
+ (5-min) container up
199
+ ```
200
+
201
+ ## Diagnosing bad installs
202
+
203
+ If DryDock acts up, compare your runtime to this baseline before
204
+ filing an issue:
205
+
206
+ 1. **`curl localhost:8000/v1/models`** returns Gemma 4? If not, vLLM
207
+ isn't running or isn't on the expected port.
208
+ 2. **`python3 -c "from drydock.core.agent_loop import AgentLoop; import inspect; print('aafa090' in inspect.getsource(AgentLoop._sanitize_message_ordering))"`** — checks the should_break_loop fix is in your install. If `False`, reinstall with `pip install --upgrade drydock-cli`.
209
+ 3. **Check the session log.** `tail ~/.vibe/logs/session/session_*/messages.jsonl` — look for `"user": "Continue."` repeating. If you see that, set `DRYDOCK_AUTO_CONTINUE_DISABLE=1`.
210
+ 4. **`docker logs gemma4 | tail -50`** — vLLM errors show up here. Common: `out of memory` (drop `--max-num-seqs` or `--max-model-len`), `unknown tool-call parser` (you're on an older vLLM image without the `gemma4` parser).
211
+
212
+ ## Tested versions
213
+
214
+ Everything in this document was exercised on:
215
+
216
+ - drydock-cli ≥ 2.6.145
217
+ - vllm/vllm-openai:gemma4 Docker image (built from vLLM 0.7.x + Gemma 4 parser patch)
218
+ - Python 3.12 (dev) / 3.14 (runtime)
219
+ - Ubuntu 22.04, kernel 6.8, Docker 24.x with nvidia-container-toolkit
220
+ - NVIDIA driver 550.x
221
+
222
+ Older vLLM images may lack `--tool-call-parser gemma4`. Build from the
223
+ gemma4 branch or wait for upstream.
@@ -0,0 +1,159 @@
1
+ # Overnight Progress — 2026-04-20 → 2026-04-21
2
+
3
+ Drop-in status doc so a fresh Claude session (after disconnect) can
4
+ resume without relearning the last 24 hours. **Read this first, then
5
+ `git log --oneline -20` + `TaskList` for full picture.**
6
+
7
+ ## What landed today (in order)
8
+
9
+ | Commit | What | Where it lives |
10
+ |---|---|---|
11
+ | 3cb957e | pexpect-buffer trim, banner detect, ESC+/clear, force-reset, checkpoint filter | scripts/ |
12
+ | f363ae1 | `DRYDOCK_AUTO_CONTINUE_DISABLE` env gate for agent_loop auto-Continue | drydock/core/agent_loop.py |
13
+ | 2e0431e | Admiral actuator via SIGUSR1 — watcher asks harness to recycle TUI | scripts/stress_watcher.py + stress_shakedown.py |
14
+ | 5c76801 | Wipe cwd down to fixtures on fresh stress start | scripts/stress_shakedown.py |
15
+ | aafa090 | **should_break_loop dead-code fix** — user turns actually end on text responses | drydock/core/agent_loop.py:876 |
16
+ | 1508c1b | SessionWatcher reads drydock's configured save_dir (was hardcoded ~/.drydock) | scripts/shakedown_interactive.py |
17
+ | c77c2e0 | Hourly stress_babysitter cron | scripts/stress_babysitter.sh + crontab |
18
+ | 0ae9d07 | Karpathy-autoresearch scaffold | research/ (kernel.py, experimenter.py, config_base.toml, mini_*) |
19
+ | 11cfe89 | Todo loop fix (#10) + Check 0 empty-result detector + realuser prompts + raw-md detector | drydock/core/tools/builtins/todo.py, agent_loop.py, scripts/ |
20
+ | fd7a160 | v2.6.145 release | PyPI + GitHub |
21
+ | aad7ac6 | Admiral sees raw-markdown leakage; DEPLOYMENT.md baseline | scripts/stress_watcher.py, DEPLOYMENT.md, README.md |
22
+ | 553926a | v2.6.146 release | PyPI + GitHub |
23
+
24
+ ## Long-running processes (DO NOT KILL without checking)
25
+
26
+ | PID | Process | Notes |
27
+ |---|---|---|
28
+ | 2625579 | stress_shakedown (v10 restart #1) | auto-restarted by babysitter at 02:00 UTC after original died. Resuming from step 866. |
29
+ | child of 2625579 | drydock TUI | Recycled periodically by admiral actuator |
30
+ | 2366908 or newer | stress_watcher (v10) | Paired with current stress PID |
31
+ | 2251231 | admiral_probe on :8878 | Read-only dashboard endpoint |
32
+ | 1230765 | llm_balancer on :8001 | DO NOT KILL — proxies to vLLM, shared |
33
+ | cron | stress_babysitter.sh hourly | Auto-restarts stress if PID dies |
34
+
35
+ **v10 progress summary** (as of ~03:00 UTC 2026-04-21):
36
+ - Original run: reached idx 972/1658 (59%) with done=866, skip=105, recycle=72 — died at ~21:00 UTC
37
+ - Restart #1: resumed from step 866, currently at idx ~921, done=50, skip=5, recycle=3
38
+ - Net cumulative: ~920/1658, acceptance rate still ~95%
39
+ - Babysitter fired once (telegram sent), admiral actuator firing per run
40
+
41
+ ## Meta-Harness integration — in progress
42
+
43
+ User approved the scope at ~03:00 local and asked for overnight build.
44
+ See `research/domain_spec.md` for the full design (just written).
45
+
46
+ **Approved mutation surface:**
47
+ - `drydock/core/prompts/gemma4.md` (system prompt)
48
+ - `drydock/core/prompts/cli.md` (alternate prompt)
49
+ - admiral knob TOML (existing 7 numerics in `config_base.toml`)
50
+ - `scripts/stress_shakedown.py` threshold constants
51
+ (MAX_CONSECUTIVE_SKIPS_BEFORE_RESET, SESSION_RESET_EVERY, retry windows)
52
+ - `drydock/admiral/detectors.py` thresholds + patterns
53
+
54
+ **Approved frozen:**
55
+ - `drydock/core/agent_loop.py` (just stabilized, too risky)
56
+ - Tool implementations
57
+ - Provider config
58
+ - Core stress harness flow (pexpect loop, session tracking)
59
+
60
+ **Approved budget:**
61
+ - Per candidate: 20-min mini-stress (50 prompts) as search-set, 5-min kernel as held-out smoke
62
+ - Per 24 hr: up to ~30 candidates
63
+ - Full 1658-prompt stress is quarterly regression only
64
+
65
+ **Remaining overnight tasks:**
66
+ 1. [in progress] Expand `config_base.toml` mutation surface (tasks #16)
67
+ 2. [pending] Trace capture in `kernel.py` — save per-run artifacts to `research/traces/<exp_id>/` (task #17)
68
+ 3. [pending] `research/proposer.py` — Opus-backed proposer (task #18)
69
+ 4. [pending] `--proposer opus` flag in `experimenter.py` (task #19)
70
+ 5. [pending] Commit + let auto_release ship (task #20)
71
+
72
+ **NOT running the experimenter overnight** — it would share vLLM with
73
+ v10 stress and starve both. Scaffolded ready-to-launch.
74
+
75
+ ## Known issues to investigate (user-reported, not yet fixed)
76
+
77
+ ### 2026-04-21 03:xx user reports drydock crash with 15+ API errors
78
+
79
+ User's quote:
80
+ ```
81
+ ✓ Read 0 line from prepare.py (truncated)
82
+ ✓ Read 66 lines from prepare.py
83
+ ✓ Read 66 lines from prepare.py
84
+ ✓ Read 630 lines from train.py
85
+ ✓ Read 19 lines from AGENTS.md
86
+
87
+ [6 consecutive API errors (round 1/3). Compacting and retrying. Last error: API error
88
+ from vllm (model: gemma4): LLM backend error [vllm]
89
+ status: 400 Bad Request
90
+ ...]
91
+
92
+ [Stopping: 15+ API errors. The model cannot process this request.]
93
+ ```
94
+
95
+ Plus drydock self-diagnoses: "You've written prepare.py 4 times this session.
96
+ If the file is oscillating Fix this before moving to the next file."
97
+
98
+ **This is the production version of the exact wedge pattern the stress
99
+ harness fixes.** Production drydock hits 400s, auto-compacts 2-3 times,
100
+ then gives up at 15+ errors. It DOES have recovery — the compaction
101
+ fires — but 15 errors in a row means compaction isn't finding enough
102
+ context to shrink.
103
+
104
+ **Root cause hypothesis:**
105
+ - User's session accumulated large read_file results (train.py 630 lines
106
+ is substantial), plus prepare.py written 4 times = 4 copies of the file
107
+ content in history.
108
+ - Auto-compact at 120000 tokens doesn't fire because the issue isn't
109
+ raw token count, it's a single turn's payload exceeding vLLM's 131K
110
+ context limit.
111
+ - Compaction per-attempt only truncates old tool results; doesn't
112
+ dedupe repeat writes to the same file.
113
+
114
+ **Fix hypothesis (for tomorrow's session):**
115
+ - `_prune_duplicate_writes` already exists in `drydock/core/agent_loop.py`
116
+ but only fires when the hard-block trips on a write_file call. Extend
117
+ it to fire on ANY `write_file` call where the target already has ≥3
118
+ prior write_file entries in history.
119
+ - Lower emergency-compact aggressiveness: when a 400 arrives, drop
120
+ middle-of-history message runs even if recent, not just oldest
121
+ truncation. The "keep first user + last 5" fallback is already there
122
+ (lines 834-846 of agent_loop.py).
123
+ - Consider: hard-cap read_file results at 32KB per call regardless of
124
+ `max_read_bytes` config when the session has had >50k tokens of
125
+ tool results already.
126
+
127
+ **NOT fixing overnight** — this is in `agent_loop.py` which is marked
128
+ frozen for the meta-harness integration AND just got stabilized
129
+ yesterday. Investigate + propose fix in morning session.
130
+
131
+ ## Auto-release state
132
+
133
+ **Paused flag:** NOT set. Auto-release cron fires at 0/6/12/18 UTC.
134
+ Next fire: 06:00 UTC (~03:00 local). Any commits before then ship in
135
+ v2.6.147.
136
+
137
+ **Version:** local == v2.6.146 (tagged fd7a160, aad7ac6 shipped).
138
+
139
+ ## Monitoring for connection loss
140
+
141
+ If this Claude session disconnects:
142
+
143
+ 1. **v10 stress continues** — babysitter cron handles restarts. Check
144
+ `/tmp/stress_babysitter.log` and `~/.drydock/logs/admiral_history.log`.
145
+ 2. **Meta-harness files** are committed incrementally. `git log --oneline`
146
+ shows progress. Any staged-but-uncommitted changes are lost, but the
147
+ `domain_spec.md` alone is enough to resume.
148
+ 3. **No orphan processes** — all long-running jobs are daemonized via
149
+ `nohup + disown`, they survive my death.
150
+
151
+ ## For the next session (morning handoff)
152
+
153
+ - Read `research/domain_spec.md` for the full design.
154
+ - `git log --oneline fd7a160..HEAD` for commits since v2.6.145.
155
+ - Check v10 state: `tail /tmp/stress_babysitter.log`.
156
+ - Check meta-harness progress: `ls research/`, look for `proposer.py`
157
+ and `traces/` — if both exist, the overnight build finished.
158
+ - **Priority for morning:** investigate the prepare.py-loop / 400-error
159
+ wedge the user reported. Hypothesized fixes above.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: drydock-cli
3
- Version: 2.6.145
3
+ Version: 2.6.147
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
@@ -156,6 +156,13 @@ Or with uv:
156
156
  uv tool install drydock-cli
157
157
  ```
158
158
 
159
+ > [!TIP]
160
+ > **New install hitting weird behavior?** See [DEPLOYMENT.md](DEPLOYMENT.md)
161
+ > for the exact known-working vLLM launch flags, `~/.drydock/config.toml`,
162
+ > env vars, and a diagnostic checklist. Most "DryDock doesn't work" issues
163
+ > trace back to missing vLLM flags (`--tool-call-parser gemma4`,
164
+ > `--enable-auto-tool-choice`) or temperature/thinking config drift.
165
+
159
166
  ## Quick Start
160
167
 
161
168
  ```bash
@@ -100,6 +100,13 @@ Or with uv:
100
100
  uv tool install drydock-cli
101
101
  ```
102
102
 
103
+ > [!TIP]
104
+ > **New install hitting weird behavior?** See [DEPLOYMENT.md](DEPLOYMENT.md)
105
+ > for the exact known-working vLLM launch flags, `~/.drydock/config.toml`,
106
+ > env vars, and a diagnostic checklist. Most "DryDock doesn't work" issues
107
+ > trace back to missing vLLM flags (`--tool-call-parser gemma4`,
108
+ > `--enable-auto-tool-choice`) or temperature/thinking config drift.
109
+
103
110
  ## Quick Start
104
111
 
105
112
  ```bash
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "drydock-cli"
3
- version = "2.6.145"
3
+ version = "2.6.147"
4
4
  description = "Local-first CLI coding agent — tested with Gemma 4 26B via vLLM"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -0,0 +1,209 @@
1
+ # Baseline for the research experimenter.
2
+ #
3
+ # The knob array defines which admiral tunables the experimenter is
4
+ # allowed to mutate. Bounds mirror drydock/admiral/tuning.py::KNOB_BOUNDS
5
+ # exactly — if that file changes, mirror the change here. The kernel
6
+ # validates bounds before writing admiral_tuning.json, so malformed
7
+ # mutations fail fast rather than silently hitting admiral's clip.
8
+ #
9
+ # The experimenter NEVER edits this file. It writes to
10
+ # research/config_best.toml on improvement. Swap this file's values
11
+ # manually when you want to re-seed the search from a new baseline.
12
+ #
13
+ # FROZEN (NOT mutable — verified by experimenter before apply):
14
+ # - drydock/core/agent_loop.py (just stabilized 2026-04-19; untouchable)
15
+ # - Tool implementations (drydock/core/tools/)
16
+ # - Provider config
17
+ # - Core stress harness flow (scripts/stress_shakedown.py::run main loop)
18
+ #
19
+ # MUTABLE surface (what the Opus proposer may change):
20
+ # - Admiral knobs (the [[knob]] array below)
21
+ # - Env flags (the [env_flags] section below)
22
+ # - Stress harness thresholds (the [harness_thresholds] section below)
23
+ # - Admiral detector thresholds (the [admiral_detectors] section below)
24
+ # - System prompts (the [prompts] section below — paths to override files)
25
+ #
26
+ # The experimenter writes prompt overrides to:
27
+ # research/candidates/<exp_id>/prompts/<name>.md
28
+ # and the kernel mounts them under the isolated HOME's prompt dir.
29
+
30
+ [target]
31
+ # admiral_tuning.json keys off (model, task). The kernel writes an entry
32
+ # under this tuple when spawning drydock. Pick values that match what
33
+ # admiral will classify stress-harness runs as.
34
+ model = "mistral-vibe-cli-latest"
35
+ task = "unknown"
36
+
37
+ # -----------------------------------------------------------------
38
+ # Admiral knobs — bounded numeric tunables that affect agent_loop.
39
+ # -----------------------------------------------------------------
40
+
41
+ [[knob]]
42
+ name = "per_prompt_budget_sec"
43
+ default = 300
44
+ min = 300
45
+ max = 3600
46
+ mutable = true
47
+ why = "Hard ceiling on a single user turn. Too low wastes work; too high lets loops run wild."
48
+
49
+ [[knob]]
50
+ name = "hard_stop_tool_calls"
51
+ default = 100
52
+ min = 30
53
+ max = 250
54
+ mutable = true
55
+ why = "HARD_STOP_CALLS in agent_loop. Cap on tool-call depth per user turn."
56
+
57
+ [[knob]]
58
+ name = "wrap_up_warn_at"
59
+ default = 40
60
+ min = 10
61
+ max = 100
62
+ mutable = true
63
+ why = "First progressive nudge. Earlier = tighter turns, may lose quality."
64
+
65
+ [[knob]]
66
+ name = "stop_now_warn_at"
67
+ default = 60
68
+ min = 20
69
+ max = 150
70
+ mutable = true
71
+ why = "Second progressive nudge. Gemma often ignores the wrap-up; this is the harder prod."
72
+
73
+ [[knob]]
74
+ name = "temperature"
75
+ default = 0.3
76
+ min = 0.0
77
+ max = 0.9
78
+ mutable = true
79
+ why = "Sampling temperature. Lower = more deterministic; higher = more exploration."
80
+
81
+ [[knob]]
82
+ name = "loop_detector_window"
83
+ default = 3
84
+ min = 2
85
+ max = 6
86
+ mutable = true
87
+ why = "How many consecutive identical tool calls trigger the loop advisor."
88
+
89
+ [[knob]]
90
+ name = "struggle_threshold"
91
+ default = 20
92
+ min = 10
93
+ max = 40
94
+ mutable = true
95
+ why = "Reads-without-a-write before admiral fires the struggle directive."
96
+
97
+ # -----------------------------------------------------------------
98
+ # Environment flags — binary toggles the kernel sets in the TUI env.
99
+ # -----------------------------------------------------------------
100
+
101
+ [env_flags]
102
+ DRYDOCK_AUTO_CONTINUE_DISABLE = "1" # options: "0", "1"
103
+
104
+ # -----------------------------------------------------------------
105
+ # System prompt overrides. When `source_path` is set, the kernel
106
+ # copies that file into the isolated HOME's prompt dir. When the
107
+ # proposer mutates a prompt it writes to
108
+ # research/candidates/<exp_id>/prompts/<name>.md
109
+ # and points the corresponding source_path here.
110
+ # -----------------------------------------------------------------
111
+
112
+ [prompts.gemma4]
113
+ # Leave source_path empty to use the production gemma4.md shipped in
114
+ # the installed drydock package. Opus proposer may replace this with
115
+ # a candidate-local path.
116
+ source_path = ""
117
+ mutable = true
118
+ why = "Single highest-leverage mutable target. Governs how Gemma 4 interprets every turn."
119
+
120
+ [prompts.cli]
121
+ source_path = ""
122
+ mutable = true
123
+ why = "Alternate non-Gemma system prompt. Rarely the right target but available for cross-model experiments."
124
+
125
+ # -----------------------------------------------------------------
126
+ # Stress harness threshold constants. These are hardcoded in
127
+ # scripts/stress_shakedown.py today. The kernel reads them from here
128
+ # via env overrides (DRYDOCK_STRESS_*) and the harness respects the
129
+ # overrides if set, falling back to the source defaults otherwise.
130
+ # -----------------------------------------------------------------
131
+
132
+ [[harness_threshold]]
133
+ name = "MAX_CONSECUTIVE_SKIPS_BEFORE_RESET"
134
+ default = 2
135
+ min = 1
136
+ max = 5
137
+ mutable = true
138
+ why = "Force ESC+/clear after N consecutive SKIPs. Lower = aggressive recycling; higher = tolerant of transient wedges."
139
+
140
+ [[harness_threshold]]
141
+ name = "SESSION_RESET_EVERY"
142
+ default = 15
143
+ min = 5
144
+ max = 50
145
+ mutable = true
146
+ why = "Periodic /clear cadence in prompts. Tight cadence bounds context but costs reset overhead every N prompts."
147
+
148
+ [[harness_threshold]]
149
+ name = "SEND_PROMPT_RETRY_COUNT"
150
+ default = 3
151
+ min = 1
152
+ max = 6
153
+ mutable = true
154
+ why = "How many times send_prompt_and_confirm re-types before marking SKIP. Each retry is ~120s."
155
+
156
+ [[harness_threshold]]
157
+ name = "SEND_PROMPT_WAIT_PER_RETRY_SEC"
158
+ default = 120
159
+ min = 30
160
+ max = 300
161
+ mutable = true
162
+ why = "Seconds to wait for user-msg confirmation before retyping. Tighter = faster SKIP, may miss slow prompts."
163
+
164
+ # -----------------------------------------------------------------
165
+ # Admiral detector thresholds. Currently hardcoded in
166
+ # drydock/core/agent_loop.py and drydock/admiral/detectors.py.
167
+ # Surface as env vars (DRYDOCK_ADMIRAL_*) that the detectors check
168
+ # at init.
169
+ # -----------------------------------------------------------------
170
+
171
+ [[admiral_detector]]
172
+ name = "REPEAT_WARNING_THRESHOLD"
173
+ default = 4
174
+ min = 2
175
+ max = 8
176
+ mutable = true
177
+ why = "Consecutive identical tool calls before a WARNING. Lower = early nudge; higher = tolerant of legit repetition."
178
+
179
+ [[admiral_detector]]
180
+ name = "REPEAT_FORCE_STOP_THRESHOLD"
181
+ default = 8
182
+ min = 4
183
+ max = 20
184
+ mutable = true
185
+ why = "Consecutive identical tool calls before FORCE_STOP. Must be >= REPEAT_WARNING_THRESHOLD."
186
+
187
+ [[admiral_detector]]
188
+ name = "EMPTY_RESULT_THRESHOLD"
189
+ default = 3
190
+ min = 2
191
+ max = 6
192
+ mutable = true
193
+ why = "Check 0 (empty-result loop). Fire FORCE_STOP after N identical-call + empty-result in a row."
194
+
195
+ [[admiral_detector]]
196
+ name = "SAME_TOOL_NAME_REPEAT_LIMIT_BASH"
197
+ default = 5
198
+ min = 3
199
+ max = 10
200
+ mutable = true
201
+ why = "Same-tool repetition limit for bash. Different from read/grep which need more headroom."
202
+
203
+ [[admiral_detector]]
204
+ name = "SAME_TOOL_NAME_REPEAT_LIMIT_READ"
205
+ default = 7
206
+ min = 4
207
+ max = 12
208
+ mutable = true
209
+ why = "Same-tool repetition limit for read_file + grep. Investigation tools legitimately repeat more."