drydock-cli 2.8.40__tar.gz → 2.8.42__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 (819) hide show
  1. drydock_cli-2.8.42/.auto_release.lock +1 -0
  2. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/PKG-INFO +1 -1
  3. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/auto_solve.py +116 -1
  4. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/pyproject.toml +1 -1
  5. drydock_cli-2.8.42/scripts/auto_solve_audit.py +174 -0
  6. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/hle_burndown_status.py +50 -0
  7. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/hle_eval.py +10 -4
  8. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_auto_solve.py +37 -0
  9. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/trip_log.md +53 -0
  10. drydock_cli-2.8.40/.auto_release.lock +0 -1
  11. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/.github/CODEOWNERS +0 -0
  12. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
  13. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  14. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  15. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/.github/workflows/build-and-upload.yml +0 -0
  16. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/.github/workflows/ci.yml +0 -0
  17. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/.github/workflows/issue-labeler.yml +0 -0
  18. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/.github/workflows/release.yml +0 -0
  19. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/.gitignore +0 -0
  20. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/.pause_stress +0 -0
  21. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/.pre-commit-config.yaml +0 -0
  22. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/.python-version +0 -0
  23. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/.typos.toml +0 -0
  24. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/.vscode/extensions.json +0 -0
  25. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/.vscode/launch.json +0 -0
  26. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/.vscode/settings.json +0 -0
  27. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/AGENTS.md +0 -0
  28. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/Admiral.md +0 -0
  29. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/CHANGELOG.md +0 -0
  30. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/CLAUDE.md +0 -0
  31. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/CONTRIBUTING.md +0 -0
  32. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/DEEP_NOIR_PRD.md +0 -0
  33. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/DEPLOYMENT.md +0 -0
  34. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/DRYDOCK.md +0 -0
  35. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/HLE_PRD.md +0 -0
  36. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/JETSON_BENCH.md +0 -0
  37. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/LICENSE +0 -0
  38. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/MODEL_SHORTCOMINGS.md +0 -0
  39. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/NOTICE +0 -0
  40. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/README.md +0 -0
  41. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/SOVEREIGN_PRD.md +0 -0
  42. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/TRIAGE_v1.md +0 -0
  43. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/action.yml +0 -0
  44. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/README.md +0 -0
  45. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results1.tsv +0 -0
  46. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results13.tsv +0 -0
  47. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results14.tsv +0 -0
  48. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results15.tsv +0 -0
  49. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results16.tsv +0 -0
  50. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results17.tsv +0 -0
  51. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results18.tsv +0 -0
  52. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results19.tsv +0 -0
  53. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results2.tsv +0 -0
  54. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results20.tsv +0 -0
  55. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results3.tsv +0 -0
  56. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results4.tsv +0 -0
  57. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results5.tsv +0 -0
  58. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results6.tsv +0 -0
  59. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results7.tsv +0 -0
  60. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results8.tsv +0 -0
  61. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results9.tsv +0 -0
  62. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/baseline_history/results_evolved_v1.tsv +0 -0
  63. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/distribution/zed/LICENSE +0 -0
  64. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/distribution/zed/extension.toml +0 -0
  65. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/distribution/zed/icons/mistral_vibe.svg +0 -0
  66. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/docs/README.md +0 -0
  67. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/docs/acp-setup.md +0 -0
  68. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/docs/archive/BASELINE_412.md +0 -0
  69. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/docs/archive/Drydock_rebrand.md +0 -0
  70. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/docs/archive/OVERNIGHT_PROGRESS.md +0 -0
  71. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/docs/archive/OVERNIGHT_REPORT_2026_04_13.md +0 -0
  72. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/docs/archive/PERF_SWEEP_PLAN.md +0 -0
  73. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/docs/archive/PRD.md +0 -0
  74. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/docs/archive/drydock_terms.md +0 -0
  75. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/docs/archive/resume.md +0 -0
  76. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/docs/proxy-setup.md +0 -0
  77. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/__init__.py +0 -0
  78. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/__main__.py +0 -0
  79. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/acp/__init__.py +0 -0
  80. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/acp/acp_agent_loop.py +0 -0
  81. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/acp/acp_logger.py +0 -0
  82. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/acp/entrypoint.py +0 -0
  83. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/acp/tools/__init__.py +0 -0
  84. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/acp/tools/base.py +0 -0
  85. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/acp/tools/builtins/bash.py +0 -0
  86. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/acp/tools/builtins/read_file.py +0 -0
  87. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/acp/tools/builtins/search_replace.py +0 -0
  88. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/acp/tools/builtins/todo.py +0 -0
  89. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/acp/tools/builtins/write_file.py +0 -0
  90. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/acp/tools/session_update.py +0 -0
  91. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/acp/utils.py +0 -0
  92. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/admiral/__init__.py +0 -0
  93. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/admiral/detectors.py +0 -0
  94. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/admiral/detectors_proposed.py +0 -0
  95. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/admiral/history.py +0 -0
  96. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/admiral/interventions.py +0 -0
  97. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/admiral/llm_analyzer.py +0 -0
  98. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/admiral/metrics.py +0 -0
  99. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/admiral/opus_escalator.py +0 -0
  100. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/admiral/persistence.py +0 -0
  101. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/admiral/policy.py +0 -0
  102. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/admiral/proposer.py +0 -0
  103. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/admiral/stager.py +0 -0
  104. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/admiral/task_classifier.py +0 -0
  105. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/admiral/tuning.py +0 -0
  106. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/admiral/validator.py +0 -0
  107. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/admiral/worker.py +0 -0
  108. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/__init__.py +0 -0
  109. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/autocompletion/__init__.py +0 -0
  110. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/autocompletion/base.py +0 -0
  111. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/autocompletion/path_completion.py +0 -0
  112. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/autocompletion/slash_command.py +0 -0
  113. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/cli.py +0 -0
  114. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/clipboard.py +0 -0
  115. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/commands.py +0 -0
  116. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/entrypoint.py +0 -0
  117. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/fix_windows_path.py +0 -0
  118. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/history_manager.py +0 -0
  119. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
  120. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
  121. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
  122. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/terminal_setup.py +0 -0
  123. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/__init__.py +0 -0
  124. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
  125. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/app.py +0 -0
  126. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/app.tcss +0 -0
  127. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/external_editor.py +0 -0
  128. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
  129. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/handlers/event_handler.py +0 -0
  130. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
  131. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/notifications/adapters/__init__.py +0 -0
  132. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
  133. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/notifications/ports/__init__.py +0 -0
  134. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
  135. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/__init__.py +0 -0
  136. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/approval_app.py +0 -0
  137. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
  138. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
  139. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
  140. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
  141. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
  142. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
  143. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
  144. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
  145. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
  146. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/checkpoint_picker.py +0 -0
  147. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/compact.py +0 -0
  148. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
  149. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
  150. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
  151. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/loading.py +0 -0
  152. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/messages.py +0 -0
  153. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
  154. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
  155. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
  156. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
  157. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
  158. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
  159. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
  160. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
  161. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
  162. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/tools.py +0 -0
  163. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
  164. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
  165. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/windowing/history.py +0 -0
  166. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
  167. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/textual_ui/windowing/state.py +0 -0
  168. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/update_notifier/__init__.py +0 -0
  169. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
  170. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
  171. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
  172. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
  173. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
  174. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/update_notifier/update.py +0 -0
  175. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/cli/update_notifier/whats_new.py +0 -0
  176. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/__init__.py +0 -0
  177. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/agent_loop.py +0 -0
  178. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/agents/__init__.py +0 -0
  179. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/agents/manager.py +0 -0
  180. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/agents/models.py +0 -0
  181. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/auth/__init__.py +0 -0
  182. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/auth/crypto.py +0 -0
  183. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/auth/github.py +0 -0
  184. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/autocompletion/__init__.py +0 -0
  185. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/autocompletion/completers.py +0 -0
  186. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
  187. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
  188. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
  189. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/autocompletion/file_indexer/store.py +0 -0
  190. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
  191. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/autocompletion/fuzzy.py +0 -0
  192. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/autocompletion/path_prompt.py +0 -0
  193. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
  194. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/build_orchestrator.py +0 -0
  195. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/checkpoint.py +0 -0
  196. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/classifier/__init__.py +0 -0
  197. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/classifier/__main__.py +0 -0
  198. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/classifier/classifier.py +0 -0
  199. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/classifier/dispatcher.py +0 -0
  200. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/classifier/rules.py +0 -0
  201. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/classifier/signal.py +0 -0
  202. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/config/__init__.py +0 -0
  203. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/config/_dotenv.py +0 -0
  204. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/config/_settings.py +0 -0
  205. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/config/doctor.py +0 -0
  206. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/config/harness_files/__init__.py +0 -0
  207. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/config/harness_files/_harness_manager.py +0 -0
  208. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/config/harness_files/_paths.py +0 -0
  209. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/config/local_detect.py +0 -0
  210. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/config/migrate.py +0 -0
  211. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/constraint_extract.py +0 -0
  212. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/constraint_hint.py +0 -0
  213. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/consultant.py +0 -0
  214. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/context_recovery.py +0 -0
  215. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/drydock_states.py +0 -0
  216. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/hooks.py +0 -0
  217. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/llm/__init__.py +0 -0
  218. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/llm/backend/anthropic.py +0 -0
  219. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/llm/backend/base.py +0 -0
  220. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/llm/backend/factory.py +0 -0
  221. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/llm/backend/generic.py +0 -0
  222. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/llm/backend/mistral.py +0 -0
  223. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
  224. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/llm/backend/vertex.py +0 -0
  225. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/llm/exceptions.py +0 -0
  226. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/llm/format.py +0 -0
  227. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/llm/message_utils.py +0 -0
  228. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/llm/types.py +0 -0
  229. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/logger.py +0 -0
  230. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/middleware.py +0 -0
  231. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/output_formatters.py +0 -0
  232. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/paths/__init__.py +0 -0
  233. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/paths/_drydock_home.py +0 -0
  234. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/paths/_local_config_walk.py +0 -0
  235. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/paths/conventions.py +0 -0
  236. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/plan_session.py +0 -0
  237. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/plugins.py +0 -0
  238. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/programmatic.py +0 -0
  239. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/prompts/__init__.py +0 -0
  240. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/prompts/builder.md +0 -0
  241. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/prompts/cli.md +0 -0
  242. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/prompts/compact.md +0 -0
  243. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/prompts/dangerous_directory.md +0 -0
  244. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/prompts/diagnostic.md +0 -0
  245. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/prompts/explore.md +0 -0
  246. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/prompts/gemma4.md +0 -0
  247. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/prompts/planner.md +0 -0
  248. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/prompts/project_context.md +0 -0
  249. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/prompts/tests.md +0 -0
  250. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/proxy_setup.py +0 -0
  251. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/session/agent_memory.py +0 -0
  252. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/session/checkpoints.py +0 -0
  253. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/session/session_loader.py +0 -0
  254. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/session/session_logger.py +0 -0
  255. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/session/session_migration.py +0 -0
  256. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/session/state_file.py +0 -0
  257. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/session_checker.py +0 -0
  258. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/skills/__init__.py +0 -0
  259. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/skills/manager.py +0 -0
  260. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/skills/models.py +0 -0
  261. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/skills/parser.py +0 -0
  262. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/slug.py +0 -0
  263. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/steering_hook.py +0 -0
  264. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/system_prompt.py +0 -0
  265. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/telemetry/__init__.py +0 -0
  266. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/telemetry/send.py +0 -0
  267. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/teleport/errors.py +0 -0
  268. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/teleport/git.py +0 -0
  269. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/teleport/nuage.py +0 -0
  270. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/teleport/teleport.py +0 -0
  271. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/teleport/types.py +0 -0
  272. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/base.py +0 -0
  273. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/_task_manager.py +0 -0
  274. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/algebra_tool.py +0 -0
  275. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/ask_user_question.py +0 -0
  276. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/bash.py +0 -0
  277. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/chemistry_tool.py +0 -0
  278. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/count_tool.py +0 -0
  279. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/cron.py +0 -0
  280. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
  281. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/glob_tool.py +0 -0
  282. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/grep.py +0 -0
  283. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/invoke_skill.py +0 -0
  284. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/linear_algebra_tool.py +0 -0
  285. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/logic_tool.py +0 -0
  286. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/lsp.py +0 -0
  287. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/math_tool.py +0 -0
  288. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/mcp_resources.py +0 -0
  289. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/memory_tool.py +0 -0
  290. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/notebook_edit.py +0 -0
  291. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/number_theory_tool.py +0 -0
  292. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/powershell.py +0 -0
  293. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/__init__.py +0 -0
  294. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
  295. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/bash.md +0 -0
  296. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/cron.md +0 -0
  297. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/glob.md +0 -0
  298. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/grep.md +0 -0
  299. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
  300. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
  301. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
  302. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
  303. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
  304. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
  305. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/retrieve.md +0 -0
  306. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
  307. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
  308. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/task.md +0 -0
  309. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
  310. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/todo.md +0 -0
  311. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
  312. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
  313. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
  314. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
  315. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
  316. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/read_file.py +0 -0
  317. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/retrieve.py +0 -0
  318. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/search_replace.py +0 -0
  319. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/set_tool.py +0 -0
  320. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/solve_tool.py +0 -0
  321. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/stats_tool.py +0 -0
  322. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/task.py +0 -0
  323. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/todo.py +0 -0
  324. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/tool_search.py +0 -0
  325. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/units_tool.py +0 -0
  326. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/verify_tool.py +0 -0
  327. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/webfetch.py +0 -0
  328. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/websearch.py +0 -0
  329. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/worktree.py +0 -0
  330. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/builtins/write_file.py +0 -0
  331. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/injection_guard.py +0 -0
  332. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/manager.py +0 -0
  333. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/mcp/__init__.py +0 -0
  334. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/mcp/registry.py +0 -0
  335. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/mcp/tools.py +0 -0
  336. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/mcp_sampling.py +0 -0
  337. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/ui.py +0 -0
  338. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/tools/utils.py +0 -0
  339. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/trusted_folders.py +0 -0
  340. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/types.py +0 -0
  341. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/core/utils.py +0 -0
  342. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/curiosity/__init__.py +0 -0
  343. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/curiosity/__main__.py +0 -0
  344. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/curiosity/gap_detector.py +0 -0
  345. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/curiosity/item.py +0 -0
  346. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/curiosity/queue.py +0 -0
  347. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/curiosity/surprise.py +0 -0
  348. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/graphrag/__init__.py +0 -0
  349. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/graphrag/__main__.py +0 -0
  350. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/graphrag/code_indexer.py +0 -0
  351. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/graphrag/retriever.py +0 -0
  352. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/graphrag/storage.py +0 -0
  353. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/graphrag/text_indexer.py +0 -0
  354. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/setup/onboarding/__init__.py +0 -0
  355. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/setup/onboarding/base.py +0 -0
  356. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/setup/onboarding/onboarding.tcss +0 -0
  357. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/setup/onboarding/screens/__init__.py +0 -0
  358. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/setup/onboarding/screens/api_key.py +0 -0
  359. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/setup/onboarding/screens/choice.py +0 -0
  360. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/setup/onboarding/screens/local_model.py +0 -0
  361. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/setup/onboarding/screens/welcome.py +0 -0
  362. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
  363. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
  364. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/__init__.py +0 -0
  365. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/api-design/SKILL.md +0 -0
  366. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/audit-tests/SKILL.md +0 -0
  367. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/batch/SKILL.md +0 -0
  368. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/commit-code/SKILL.md +0 -0
  369. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/constraint-reasoning/SKILL.md +0 -0
  370. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/context-summary/SKILL.md +0 -0
  371. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/create-presentation/SKILL.md +0 -0
  372. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/deep-research/SKILL.md +0 -0
  373. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/deploy/SKILL.md +0 -0
  374. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/diff-review/SKILL.md +0 -0
  375. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/doc-gen/SKILL.md +0 -0
  376. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/explain-code/SKILL.md +0 -0
  377. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/explore-code/SKILL.md +0 -0
  378. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/fix-issue/SKILL.md +0 -0
  379. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/git-ops/SKILL.md +0 -0
  380. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/init-project/SKILL.md +0 -0
  381. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/investigate/SKILL.md +0 -0
  382. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/logic/SKILL.md +0 -0
  383. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/logic/assets/cheat_sheet_full.txt +0 -0
  384. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/loop/SKILL.md +0 -0
  385. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/migrate/SKILL.md +0 -0
  386. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/perf-analyze/SKILL.md +0 -0
  387. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/plan-impl/SKILL.md +0 -0
  388. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/pr-review/SKILL.md +0 -0
  389. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/prove/SKILL.md +0 -0
  390. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/refactor/SKILL.md +0 -0
  391. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/regex-help/SKILL.md +0 -0
  392. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/review/SKILL.md +0 -0
  393. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/security-review/SKILL.md +0 -0
  394. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/ship/SKILL.md +0 -0
  395. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/simplify/SKILL.md +0 -0
  396. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/strong-tests/SKILL.md +0 -0
  397. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/skills/test-verify/SKILL.md +0 -0
  398. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/steering/__init__.py +0 -0
  399. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/steering/__main__.py +0 -0
  400. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/steering/applier.py +0 -0
  401. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/steering/config.py +0 -0
  402. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/steering/registry.py +0 -0
  403. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/steering/sandbox.py +0 -0
  404. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/steering/sidecar/__init__.py +0 -0
  405. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/steering/sidecar/header_parser.py +0 -0
  406. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/steering/sidecar/hooks.py +0 -0
  407. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/steering/sidecar/loader.py +0 -0
  408. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/steering/sidecar/server.py +0 -0
  409. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/steering/train/__init__.py +0 -0
  410. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/steering/train/capture.py +0 -0
  411. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/steering/train/compute_vector.py +0 -0
  412. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/steering/train/extract_pairs.py +0 -0
  413. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/steering/train/scan_sessions.py +0 -0
  414. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/steering/vectors.py +0 -0
  415. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock/whats_new.md +0 -0
  416. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/drydock-acp.spec +0 -0
  417. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/flake.lock +0 -0
  418. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/flake.nix +0 -0
  419. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/outlook_draft_assistant.tar.gz +0 -0
  420. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/research/README.md +0 -0
  421. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/research/config_base.toml +0 -0
  422. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/research/config_best.toml +0 -0
  423. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/research/deep_noir/pairs/empty_after_bash.jsonl +0 -0
  424. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/research/deep_noir/pairs/scan_empty_after_bash.jsonl +0 -0
  425. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/research/domain_spec.md +0 -0
  426. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/research/experimenter.py +0 -0
  427. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/research/kernel.py +0 -0
  428. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/research/mini_prd.md +0 -0
  429. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/research/mini_prompts.txt +0 -0
  430. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/research/proposer.py +0 -0
  431. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/research/results.tsv +0 -0
  432. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/resume.md +0 -0
  433. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/README.md +0 -0
  434. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/admiral_probe.py +0 -0
  435. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/archive/auto_test_loop.sh +0 -0
  436. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/archive/monitor_test_battery.sh +0 -0
  437. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/archive/overnight_agents_test.sh +0 -0
  438. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/archive/test_bank.sh +0 -0
  439. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/archive/test_full.sh +0 -0
  440. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/archive/test_smoke.sh +0 -0
  441. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/archive/tui_test.py +0 -0
  442. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/audit_sampler.py +0 -0
  443. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/auto_generate_tests.py +0 -0
  444. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/auto_release.sh +0 -0
  445. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/autonomous_review.sh +0 -0
  446. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/autonomous_review_prompt.md +0 -0
  447. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/backfill_hle_curiosity.py +0 -0
  448. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/backup.sh +0 -0
  449. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/bench_inference.py +0 -0
  450. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/bump_version.py +0 -0
  451. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/classify_pulse.sh +0 -0
  452. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/consume_retrieval_queue.py +0 -0
  453. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/curiosity_idle_cycle.sh +0 -0
  454. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/dedupe_dispatch_queues.py +0 -0
  455. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/deploy_to_github.sh +0 -0
  456. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/dispatch_report.py +0 -0
  457. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/drydock_status.sh +0 -0
  458. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/fetch_arxiv_abstracts.py +0 -0
  459. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/gen_2000_prompts.py +0 -0
  460. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/hle_aggregate.py +0 -0
  461. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/hle_babysitter.sh +0 -0
  462. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/hle_burndown.sh +0 -0
  463. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/hle_burndown_keepalive.sh +0 -0
  464. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/hle_eval_seed.jsonl +0 -0
  465. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/llm_balancer.py +0 -0
  466. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/notify_release.py +0 -0
  467. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/perf_baseline_when_idle.sh +0 -0
  468. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/perf_sweep.py +0 -0
  469. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/poll_issues.sh +0 -0
  470. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/publish_to_pypi.sh +0 -0
  471. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/queue_top.py +0 -0
  472. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/ralph_loop.py +0 -0
  473. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/rejudge_hle.py +0 -0
  474. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/research_babysitter.sh +0 -0
  475. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/shakedown.py +0 -0
  476. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/shakedown_interactive.py +0 -0
  477. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/shakedown_suite.sh +0 -0
  478. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/shakedown_variance.sh +0 -0
  479. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/start_steering_sidecar.sh +0 -0
  480. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/stress_babysitter.sh +0 -0
  481. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/stress_prompts_50.txt +0 -0
  482. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/stress_prompts_realuser.txt +0 -0
  483. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/stress_prompts_tool_agent.txt +0 -0
  484. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/stress_prompts_tool_agent_2000.txt +0 -0
  485. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/stress_shakedown.py +0 -0
  486. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/stress_telegram_status.py +0 -0
  487. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/stress_watcher.py +0 -0
  488. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/telegram_bot.py +0 -0
  489. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/tool_usage_report.py +0 -0
  490. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/scripts/vllm_failover.sh +0 -0
  491. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/__init__.py +0 -0
  492. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/conftest.py +0 -0
  493. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_acp.py +0 -0
  494. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_agent_thought.py +0 -0
  495. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_bash.py +0 -0
  496. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_compact_session_updates.py +0 -0
  497. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_content.py +0 -0
  498. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_initialize.py +0 -0
  499. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_list_sessions.py +0 -0
  500. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_load_session.py +0 -0
  501. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_multi_session.py +0 -0
  502. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_new_session.py +0 -0
  503. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_proxy_setup_acp.py +0 -0
  504. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_read_file.py +0 -0
  505. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_search_replace.py +0 -0
  506. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_set_config_option.py +0 -0
  507. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_set_mode.py +0 -0
  508. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_set_model.py +0 -0
  509. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_tool_call_session_update.py +0 -0
  510. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_utils.py +0 -0
  511. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/acp/test_write_file.py +0 -0
  512. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/autocompletion/test_file_indexer.py +0 -0
  513. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/autocompletion/test_fuzzy.py +0 -0
  514. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
  515. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/autocompletion/test_path_completer_recursive.py +0 -0
  516. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/autocompletion/test_path_completion_controller.py +0 -0
  517. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
  518. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/autocompletion/test_slash_command_controller.py +0 -0
  519. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
  520. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/backend/__init__.py +0 -0
  521. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/backend/data/__init__.py +0 -0
  522. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/backend/data/fireworks.py +0 -0
  523. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/backend/data/mistral.py +0 -0
  524. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/backend/test_anthropic_adapter.py +0 -0
  525. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/backend/test_backend.py +0 -0
  526. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/backend/test_generic_adapter_sanitize.py +0 -0
  527. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/backend/test_reasoning_adapter.py +0 -0
  528. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
  529. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
  530. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
  531. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
  532. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/test_bell_notifications.py +0 -0
  533. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/test_braille_renderer.py +0 -0
  534. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/test_clipboard.py +0 -0
  535. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/test_commands.py +0 -0
  536. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/test_copy_shortcuts.py +0 -0
  537. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/test_external_editor.py +0 -0
  538. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/test_no_markup_static.py +0 -0
  539. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/test_question_app.py +0 -0
  540. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/test_spinner.py +0 -0
  541. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/test_switching_mode.py +0 -0
  542. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/test_ui_clipboard_notifications.py +0 -0
  543. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
  544. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/test_ui_session_resume.py +0 -0
  545. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/test_ui_skill_dispatch.py +0 -0
  546. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/textual_ui/__init__.py +0 -0
  547. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/cli/textual_ui/test_session_picker.py +0 -0
  548. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/conftest.py +0 -0
  549. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_agents.py +0 -0
  550. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_auth_crypto.py +0 -0
  551. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_auth_github.py +0 -0
  552. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_circuit_breaker_count_escalation.py +0 -0
  553. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_circuit_breaker_readonly_threshold.py +0 -0
  554. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_config_load_dotenv.py +0 -0
  555. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_config_paths.py +0 -0
  556. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_config_resolution.py +0 -0
  557. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_file_logging.py +0 -0
  558. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_plan_session.py +0 -0
  559. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_proxy_setup.py +0 -0
  560. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_slug.py +0 -0
  561. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_telemetry_send.py +0 -0
  562. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_teleport_git.py +0 -0
  563. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_teleport_nuage.py +0 -0
  564. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_teleport_service.py +0 -0
  565. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_trusted_folders.py +0 -0
  566. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/core/test_utils.py +0 -0
  567. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/e2e/common.py +0 -0
  568. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/e2e/conftest.py +0 -0
  569. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/e2e/mock_server.py +0 -0
  570. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/e2e/test_cli_tui_onboarding.py +0 -0
  571. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/e2e/test_cli_tui_streaming.py +0 -0
  572. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
  573. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/fixtures/doc_qa_system_prd.md +0 -0
  574. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/mock/__init__.py +0 -0
  575. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/mock/mock_backend_factory.py +0 -0
  576. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/mock/mock_entrypoint.py +0 -0
  577. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/mock/utils.py +0 -0
  578. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/onboarding/test_run_onboarding.py +0 -0
  579. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/onboarding/test_ui_onboarding.py +0 -0
  580. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/session/test_session_loader.py +0 -0
  581. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/session/test_session_logger.py +0 -0
  582. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/session/test_session_migration.py +0 -0
  583. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/skills/conftest.py +0 -0
  584. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/skills/test_manager.py +0 -0
  585. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/skills/test_models.py +0 -0
  586. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/skills/test_parser.py +0 -0
  587. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
  588. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
  589. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
  590. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_code_block_horizontal_scrolling/test_snapshot_allows_horizontal_scrolling_for_long_code_blocks.svg +0 -0
  591. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +0 -0
  592. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
  593. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
  594. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
  595. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
  596. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
  597. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
  598. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
  599. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
  600. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
  601. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
  602. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
  603. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
  604. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
  605. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
  606. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
  607. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
  608. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
  609. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
  610. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
  611. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
  612. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
  613. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
  614. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
  615. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
  616. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
  617. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
  618. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
  619. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
  620. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
  621. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
  622. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
  623. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
  624. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
  625. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
  626. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
  627. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
  628. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
  629. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
  630. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
  631. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
  632. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
  633. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
  634. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
  635. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
  636. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
  637. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
  638. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
  639. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
  640. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
  641. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
  642. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
  643. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
  644. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
  645. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
  646. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
  647. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/base_snapshot_test_app.py +0 -0
  648. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/conftest.py +0 -0
  649. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/snap_compare.py +0 -0
  650. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
  651. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
  652. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
  653. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
  654. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
  655. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
  656. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
  657. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
  658. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
  659. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
  660. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
  661. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
  662. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
  663. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
  664. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/stubs/fake_backend.py +0 -0
  665. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/stubs/fake_client.py +0 -0
  666. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/stubs/fake_tool.py +0 -0
  667. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_admiral.py +0 -0
  668. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_admiral_hallucinated_tool_filter.py +0 -0
  669. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_admiral_intervention_outcome.py +0 -0
  670. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_admiral_phase3.py +0 -0
  671. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_admiral_proposed.py +0 -0
  672. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_admiral_session_id.py +0 -0
  673. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_admiral_struggle_dedup.py +0 -0
  674. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_agent_auto_compact.py +0 -0
  675. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_agent_backend.py +0 -0
  676. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_agent_observer_streaming.py +0 -0
  677. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_agent_stats.py +0 -0
  678. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_agent_tasks.py +0 -0
  679. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_agent_tool_call.py +0 -0
  680. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_agents.py +0 -0
  681. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_algebra_tool.py +0 -0
  682. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_auto_retrieve_soft_nudge.py +0 -0
  683. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_bank_build.py +0 -0
  684. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_bank_debug.py +0 -0
  685. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_bank_multiagent.py +0 -0
  686. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_bank_prd.py +0 -0
  687. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_bank_prd_extended.py +0 -0
  688. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_bank_tools.py +0 -0
  689. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_bank_update.py +0 -0
  690. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_build_projects.py +0 -0
  691. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_checkpoint.py +0 -0
  692. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_chemistry_tool.py +0 -0
  693. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_classifier.py +0 -0
  694. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_cli_programmatic_preload.py +0 -0
  695. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_config_migration.py +0 -0
  696. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_constraint_extract.py +0 -0
  697. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_constraint_hint.py +0 -0
  698. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_context_recovery.py +0 -0
  699. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_count_tool.py +0 -0
  700. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_curiosity.py +0 -0
  701. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_current_bugs.py +0 -0
  702. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_dispatch_report.py +0 -0
  703. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_dispatcher.py +0 -0
  704. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_drydock_regression.py +0 -0
  705. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_drydock_tasks.py +0 -0
  706. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_fake_tool_call_paren_syntax.py +0 -0
  707. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_full_regression.py +0 -0
  708. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_graphrag.py +0 -0
  709. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_graphrag_worked_examples.py +0 -0
  710. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_hallucinated_tool_suppression.py +0 -0
  711. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_history_manager.py +0 -0
  712. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_hle_aggregate.py +0 -0
  713. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_hle_score_method_split.py +0 -0
  714. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_hle_typing.py +0 -0
  715. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_integration.py +0 -0
  716. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_issue_fixes.py +0 -0
  717. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_linear_algebra_tool.py +0 -0
  718. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_local_detect.py +0 -0
  719. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_logic_tool.py +0 -0
  720. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_loop_detection.py +0 -0
  721. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_math_tool.py +0 -0
  722. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_mcp_settings.py +0 -0
  723. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_memory_tool.py +0 -0
  724. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_message_id.py +0 -0
  725. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_message_merging.py +0 -0
  726. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_middleware.py +0 -0
  727. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_multi_agent.py +0 -0
  728. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_number_theory_tool.py +0 -0
  729. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_read_file_not_found_listing.py +0 -0
  730. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_real_failures.py +0 -0
  731. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_real_issues.py +0 -0
  732. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_real_workflow.py +0 -0
  733. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_reasoning_content.py +0 -0
  734. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_rejudge_hle.py +0 -0
  735. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_retrieval_consumer.py +0 -0
  736. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_retrieve_tool.py +0 -0
  737. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_search_replace_args_not_truncated.py +0 -0
  738. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_set_tool.py +0 -0
  739. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_smoke.py +0 -0
  740. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_solve_tool.py +0 -0
  741. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_stats_tool.py +0 -0
  742. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_steering.py +0 -0
  743. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_steering_capture.py +0 -0
  744. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_steering_compute_vector.py +0 -0
  745. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_steering_extract_pairs.py +0 -0
  746. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_steering_hook.py +0 -0
  747. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_steering_sidecar_chat_inputs.py +0 -0
  748. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_steering_sidecar_hooks.py +0 -0
  749. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_system_prompt.py +0 -0
  750. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_tagged_text.py +0 -0
  751. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_task_complete_nudge.py +0 -0
  752. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_tool_args.py +0 -0
  753. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_truncate_args_valid_json.py +0 -0
  754. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_truncated_arg_path_hint.py +0 -0
  755. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_truncated_search_replace_escalation.py +0 -0
  756. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_truncated_write_escalation.py +0 -0
  757. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_ui_external_editor.py +0 -0
  758. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_ui_input_history.py +0 -0
  759. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_units_tool.py +0 -0
  760. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_user_issues.py +0 -0
  761. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_verify_tool.py +0 -0
  762. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_wall_of_text_rescue.py +0 -0
  763. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_workloads.py +0 -0
  764. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/test_write_file_missing_path.py +0 -0
  765. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/testbank_helpers.py +0 -0
  766. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_ask_user_question.py +0 -0
  767. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_bash.py +0 -0
  768. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_bash_binary_grep_hint.py +0 -0
  769. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_bash_consec_empty_search.py +0 -0
  770. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_bash_echo_escape_loop_breaker.py +0 -0
  771. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_bash_empty_search_loop_breaker.py +0 -0
  772. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_bash_error_loop_breaker.py +0 -0
  773. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_bash_exact_cmd_loop_breaker.py +0 -0
  774. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_bash_heredoc_confirmation.py +0 -0
  775. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_bash_kill_exit1_annotation.py +0 -0
  776. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_bash_python_c_syntaxerr_loop_breaker.py +0 -0
  777. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_exit_plan_mode.py +0 -0
  778. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_grep.py +0 -0
  779. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_hallucinated_retrieval_redirect.py +0 -0
  780. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_invoke_context.py +0 -0
  781. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_manager_gemma_derived_models.py +0 -0
  782. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_manager_get_tool_config.py +0 -0
  783. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_mcp.py +0 -0
  784. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_mcp_sampling.py +0 -0
  785. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_read_file_dedup_alternating_offset.py +0 -0
  786. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_read_file_dedup_reembed.py +0 -0
  787. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_read_file_directory.py +0 -0
  788. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_read_file_limit_truncation.py +0 -0
  789. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_search_replace_append_fallback.py +0 -0
  790. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_search_replace_dir_path.py +0 -0
  791. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_search_replace_empty_content.py +0 -0
  792. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_search_replace_file_not_found.py +0 -0
  793. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_search_replace_first_failure_hint.py +0 -0
  794. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_search_replace_hard_stop.py +0 -0
  795. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_search_replace_malformed_block.py +0 -0
  796. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_search_replace_no_op_loop_breaker.py +0 -0
  797. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_search_replace_placeholder.py +0 -0
  798. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_search_replace_refused_loop_breaker.py +0 -0
  799. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_task.py +0 -0
  800. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_ui_bash_execution.py +0 -0
  801. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_webfetch.py +0 -0
  802. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_websearch.py +0 -0
  803. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_write_file_dedup_missing_imports.py +0 -0
  804. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/tools/test_write_file_missing_path_hint.py +0 -0
  805. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
  806. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
  807. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/update_notifier/test_do_update.py +0 -0
  808. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
  809. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/update_notifier/test_github_update_gateway.py +0 -0
  810. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
  811. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/update_notifier/test_ui_update_notification.py +0 -0
  812. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/update_notifier/test_update_use_case.py +0 -0
  813. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/tests/update_notifier/test_whats_new.py +0 -0
  814. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/uv.lock +0 -0
  815. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/worked_examples/README.md +0 -0
  816. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/worked_examples/cli_subcommand_dispatch.py +0 -0
  817. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/worked_examples/lookup.json +0 -0
  818. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/worked_examples/sql_parser.py +0 -0
  819. {drydock_cli-2.8.40 → drydock_cli-2.8.42}/worked_examples/tree_walking_interpreter.py +0 -0
@@ -0,0 +1 @@
1
+ 2082151
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: drydock-cli
3
- Version: 2.8.40
3
+ Version: 2.8.42
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
@@ -50,11 +50,33 @@ import asyncio
50
50
  import json
51
51
  import logging
52
52
  import os
53
+ import time
53
54
  import uuid
55
+ from pathlib import Path
54
56
  from typing import TYPE_CHECKING
55
57
 
56
58
  logger = logging.getLogger("drydock.auto_solve")
57
59
 
60
+ # Telemetry — appended JSONL so morning reports can answer:
61
+ # "did auto-solve actually fire? how often? how many produced
62
+ # a confident answer the model could use?"
63
+ # Each line is one auto-solve fire (or rejection), one JSON object.
64
+ _TELEMETRY_PATH = Path(os.environ.get(
65
+ "DRYDOCK_AUTO_SOLVE_TELEMETRY", "/tmp/auto_solve.jsonl",
66
+ ))
67
+
68
+
69
+ def _emit_telemetry(record: dict) -> None:
70
+ """Append one telemetry record. Fail-silent — telemetry must never
71
+ break the agent loop."""
72
+ try:
73
+ record["ts"] = time.time()
74
+ _TELEMETRY_PATH.parent.mkdir(parents=True, exist_ok=True)
75
+ with _TELEMETRY_PATH.open("a") as f:
76
+ f.write(json.dumps(record) + "\n")
77
+ except OSError:
78
+ pass
79
+
58
80
  if TYPE_CHECKING:
59
81
  from drydock.core.constraint_extract import ExtractResult
60
82
 
@@ -152,6 +174,48 @@ def _build_args(extr: "ExtractResult") -> dict | None:
152
174
  return None
153
175
 
154
176
 
177
+ import re as _re_mod
178
+
179
+ # Substring tokens (whitespace-insensitive when checked).
180
+ _BAD_FORMULA_TOKENS = (
181
+ "!", # factorial — n! is not a Z3 operator
182
+ "log(", "ln(", "sin(", "cos(", "tan(", "exp(", "sqrt(",
183
+ "∞", "inf",
184
+ )
185
+
186
+ # Variable-exponent pattern: ** followed by a single-letter identifier
187
+ # (n, k, m, x, etc.). Catches "2 ** n - 1" even if normaliser added
188
+ # spaces around the operator.
189
+ _VAR_EXPONENT_RE = _re_mod.compile(r"\*\*\s*[a-zA-Z_]")
190
+
191
+
192
+ def _formula_is_z3_friendly(*formulas: str) -> bool:
193
+ """Reject formulas that contain operators Z3 can't decide
194
+ symbolically. Returns False if any forbidden token is present;
195
+ saves us a 5-30s solver round-trip on doomed inputs.
196
+
197
+ Conservative: only flags tokens Z3 definitively can't handle in
198
+ its integer/real-arithmetic fragment. Anything that survives this
199
+ check may STILL fail at solve time (e.g. nonlinear arithmetic on
200
+ Real variables), in which case the existing exception-catch in
201
+ `_run_solve_sync` returns None.
202
+ """
203
+ for f in formulas:
204
+ if not f:
205
+ continue
206
+ low = f.lower()
207
+ # Whitespace-insensitive substring check for the simple tokens
208
+ compact = "".join(low.split())
209
+ for bad in _BAD_FORMULA_TOKENS:
210
+ bad_compact = "".join(bad.split())
211
+ if bad_compact in compact:
212
+ return False
213
+ # Variable exponent regex — independent of spacing
214
+ if _VAR_EXPONENT_RE.search(f):
215
+ return False
216
+ return True
217
+
218
+
155
219
  def _run_solve_sync(args_dict: dict) -> dict | None:
156
220
  """Invoke the Solve tool with the given args and return the
157
221
  SolveResult as a dict. Returns None on failure / timeout / unsat.
@@ -272,19 +336,50 @@ def maybe_inject_auto_solve(messages_obj, user_msg: str) -> bool:
272
336
  extr = extract(user_msg)
273
337
  except Exception as e: # noqa: BLE001
274
338
  logger.warning("[AUTO-SOLVE] extract failed: %s", e)
339
+ _emit_telemetry({"event": "extract_failed", "error": str(e)[:200]})
340
+ return False
341
+ if extr is None:
342
+ _emit_telemetry({"event": "no_extract"})
275
343
  return False
276
- if extr is None or extr.confidence < 0.5:
344
+ if extr.confidence < 0.5:
345
+ _emit_telemetry({
346
+ "event": "low_confidence", "predicate": extr.predicate,
347
+ "confidence": extr.confidence,
348
+ })
277
349
  return False
278
350
 
279
351
  args_dict = _build_args(extr)
280
352
  if args_dict is None:
281
353
  logger.warning("[AUTO-SOLVE] predicate %s not Z3-decidable", extr.predicate)
354
+ _emit_telemetry({
355
+ "event": "predicate_not_decidable",
356
+ "predicate": extr.predicate,
357
+ })
358
+ return False
359
+
360
+ # Pre-flight: skip Z3 entirely if the extracted formula contains
361
+ # tokens Z3 can't decide (factorial, transcendentals, variable
362
+ # exponents). Saves a 5-30s wasted solver call per HLE batch.
363
+ if not _formula_is_z3_friendly(extr.formula, extr.second_formula or ""):
364
+ _emit_telemetry({
365
+ "event": "formula_not_z3_friendly",
366
+ "predicate": extr.predicate,
367
+ "formula": extr.formula[:200],
368
+ })
282
369
  return False
283
370
 
284
371
  logger.warning("[AUTO-SOLVE] running Z3 for predicate=%s formula=%r",
285
372
  extr.predicate, extr.formula[:80])
373
+ t0 = time.perf_counter()
286
374
  result_dict = _run_solve_sync(args_dict)
375
+ elapsed_ms = int((time.perf_counter() - t0) * 1000)
287
376
  if result_dict is None:
377
+ _emit_telemetry({
378
+ "event": "z3_failed",
379
+ "predicate": extr.predicate,
380
+ "formula": extr.formula[:200],
381
+ "elapsed_ms": elapsed_ms,
382
+ })
288
383
  return False
289
384
  status = result_dict.get("status", "?")
290
385
  if status not in ("sat", "optimal", "valid"):
@@ -292,6 +387,12 @@ def maybe_inject_auto_solve(messages_obj, user_msg: str) -> bool:
292
387
  # advisory template still works as a fallback and the model
293
388
  # might do better by reasoning differently.
294
389
  logger.warning("[AUTO-SOLVE] Z3 status=%s; not injecting", status)
390
+ _emit_telemetry({
391
+ "event": "z3_non_actionable",
392
+ "predicate": extr.predicate,
393
+ "status": status,
394
+ "elapsed_ms": elapsed_ms,
395
+ })
295
396
  return False
296
397
 
297
398
  # Build synthetic assistant + tool messages
@@ -326,4 +427,18 @@ def maybe_inject_auto_solve(messages_obj, user_msg: str) -> bool:
326
427
  messages_obj.append(synth_tool)
327
428
  logger.warning("[AUTO-SOLVE] injected synthetic solve call+result "
328
429
  "(predicate=%s, status=%s)", extr.predicate, status)
430
+ # Telemetry: this is the success-path event. result_count helps the
431
+ # morning report distinguish "fired and got an answer" from "fired
432
+ # but got 0 solutions in the bounded range" (which is still useful
433
+ # for the model since it knows there's nothing in that range).
434
+ n_models = len(result_dict.get("models") or [])
435
+ _emit_telemetry({
436
+ "event": "injected",
437
+ "predicate": extr.predicate,
438
+ "formula": extr.formula[:200],
439
+ "status": status,
440
+ "n_models": n_models,
441
+ "objective_value": result_dict.get("objective_value", "")[:60],
442
+ "elapsed_ms": elapsed_ms,
443
+ })
329
444
  return True
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "drydock-cli"
3
- version = "2.8.40"
3
+ version = "2.8.42"
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,174 @@
1
+ #!/usr/bin/env python3
2
+ """Audit recent HLE Math failures and check whether auto-solve
3
+ fired on any of them. Designed to run hourly via cron to surface
4
+ adoption patterns and missing detector cases.
5
+
6
+ Output: one-line summary to stdout + a structured snapshot to
7
+ /tmp/auto_solve_audit.jsonl (one record per run).
8
+
9
+ Usage:
10
+ python3 scripts/auto_solve_audit.py # last 12 hours
11
+ python3 scripts/auto_solve_audit.py --hours 1
12
+ python3 scripts/auto_solve_audit.py --json
13
+ """
14
+ from __future__ import annotations
15
+
16
+ import argparse
17
+ import json
18
+ import re
19
+ import sys
20
+ import time
21
+ from collections import Counter
22
+ from pathlib import Path
23
+
24
+ sys.path.insert(0, "/data3/drydock")
25
+
26
+ LOG_DIR = Path("/data3/drydock/logs")
27
+ TELE_PATH = Path("/tmp/auto_solve.jsonl")
28
+ SNAPSHOT_PATH = Path("/tmp/auto_solve_audit.jsonl")
29
+
30
+
31
+ def _recent_burndown_logs(hours: float) -> list[Path]:
32
+ cutoff = time.time() - hours * 3600
33
+ paths = []
34
+ for p in LOG_DIR.glob("hle_burndown_*.log"):
35
+ if p.stat().st_mtime >= cutoff:
36
+ paths.append(p)
37
+ return sorted(paths)
38
+
39
+
40
+ def _parse_results(log_path: Path) -> list[dict]:
41
+ text = log_path.read_text(errors="replace")
42
+ out = []
43
+ for m in re.finditer(
44
+ r"\[\d+/\d+\]\s+([a-f0-9]+)\s+\(([^)]+)\)\s*\n"
45
+ r"\s*Q:\s+(.+?)\n"
46
+ r"\s*pred:\s*(.*?)\n"
47
+ r"\s*gold:\s+(.+?)\n"
48
+ r"\s*→\s+(\w+)",
49
+ text, re.DOTALL,
50
+ ):
51
+ qid, cat, q, pred, gold, verdict = m.groups()
52
+ out.append({
53
+ "qid": qid, "category": cat.strip(),
54
+ "q": q.strip()[:400], "verdict": verdict,
55
+ })
56
+ return out
57
+
58
+
59
+ def _telemetry_records(hours: float) -> list[dict]:
60
+ if not TELE_PATH.is_file():
61
+ return []
62
+ cutoff = time.time() - hours * 3600
63
+ out = []
64
+ try:
65
+ with TELE_PATH.open() as f:
66
+ for line in f:
67
+ try:
68
+ r = json.loads(line)
69
+ except json.JSONDecodeError:
70
+ continue
71
+ if r.get("ts", 0) >= cutoff:
72
+ out.append(r)
73
+ except OSError:
74
+ pass
75
+ return out
76
+
77
+
78
+ def main() -> int:
79
+ ap = argparse.ArgumentParser()
80
+ ap.add_argument("--hours", type=float, default=12.0)
81
+ ap.add_argument("--json", action="store_true")
82
+ args = ap.parse_args()
83
+
84
+ logs = _recent_burndown_logs(args.hours)
85
+ results = []
86
+ for lp in logs:
87
+ results.extend(_parse_results(lp))
88
+ tele = _telemetry_records(args.hours)
89
+
90
+ # Detector firing rate on Math failures
91
+ try:
92
+ from drydock.core.constraint_hint import detect_constraint_shape
93
+ from drydock.core.constraint_extract import extract
94
+ except Exception as e:
95
+ print(f"warn: could not import constraint modules: {e}", file=sys.stderr)
96
+ detect_constraint_shape = None
97
+ extract = None
98
+
99
+ math_wrong = [r for r in results
100
+ if r["category"] == "Math" and r["verdict"] == "NO"]
101
+ detector_hits = 0
102
+ extractor_hits = 0
103
+ if detect_constraint_shape and extract:
104
+ for r in math_wrong:
105
+ hit = detect_constraint_shape(r["q"])
106
+ if hit:
107
+ detector_hits += 1
108
+ ext = extract(r["q"])
109
+ if ext is not None:
110
+ extractor_hits += 1
111
+
112
+ # Telemetry rollup
113
+ tele_counter: Counter = Counter()
114
+ injected_by_pred: Counter = Counter()
115
+ z3_failures: list[dict] = []
116
+ for r in tele:
117
+ ev = r.get("event", "?")
118
+ tele_counter[ev] += 1
119
+ if ev == "injected":
120
+ injected_by_pred[r.get("predicate", "?")] += 1
121
+ if ev in ("z3_failed", "z3_non_actionable", "formula_not_z3_friendly"):
122
+ z3_failures.append(r)
123
+
124
+ snapshot = {
125
+ "ts": time.time(),
126
+ "window_hours": args.hours,
127
+ "questions_completed": len(results),
128
+ "by_verdict": dict(Counter(r["verdict"] for r in results)),
129
+ "math_wrong": len(math_wrong),
130
+ "math_wrong_detector_hits": detector_hits,
131
+ "math_wrong_extractor_hits": extractor_hits,
132
+ "auto_solve_events": dict(tele_counter),
133
+ "auto_solve_injected_by_predicate": dict(injected_by_pred),
134
+ "auto_solve_failures_sample": z3_failures[:5],
135
+ }
136
+
137
+ try:
138
+ SNAPSHOT_PATH.parent.mkdir(parents=True, exist_ok=True)
139
+ with SNAPSHOT_PATH.open("a") as f:
140
+ f.write(json.dumps(snapshot) + "\n")
141
+ except OSError as e:
142
+ print(f"warn: could not write snapshot: {e}", file=sys.stderr)
143
+
144
+ if args.json:
145
+ print(json.dumps(snapshot, indent=2, sort_keys=True))
146
+ return 0
147
+
148
+ # Plain summary
149
+ print(f"=== auto-solve audit ({args.hours}h window) ===")
150
+ print(f"Questions answered: {len(results)}")
151
+ print(f" verdicts: {dict(Counter(r['verdict'] for r in results))}")
152
+ print(f"Math wrong answers: {len(math_wrong)}")
153
+ if math_wrong:
154
+ print(f" detector matched: {detector_hits}/{len(math_wrong)}"
155
+ f" ({100*detector_hits//max(1,len(math_wrong))}%)")
156
+ print(f" extractor fired: {extractor_hits}/{len(math_wrong)}"
157
+ f" ({100*extractor_hits//max(1,len(math_wrong))}%)")
158
+ print()
159
+ print("Auto-solve telemetry:")
160
+ if not tele:
161
+ print(" (no events in window)")
162
+ else:
163
+ for ev, n in tele_counter.most_common():
164
+ print(f" {ev:28s} {n}")
165
+ if injected_by_pred:
166
+ print()
167
+ print(" Injected by predicate:")
168
+ for pred, n in injected_by_pred.most_common():
169
+ print(f" {pred:22s} {n}")
170
+ return 0
171
+
172
+
173
+ if __name__ == "__main__":
174
+ raise SystemExit(main())
@@ -272,6 +272,56 @@ def main() -> int:
272
272
  "(empty prediction). Check thinking-budget / tool-stop-after / "
273
273
  "time-budget settings.")
274
274
 
275
+ # ── Auto-solve telemetry ────────────────────────────────────────
276
+ # Did v2.8.40's synthetic Z3 tool call actually fire? How often?
277
+ # Append-only JSONL at /tmp/auto_solve.jsonl per the auto_solve
278
+ # module — read it and aggregate by event type.
279
+ tele_path = Path("/tmp/auto_solve.jsonl")
280
+ if tele_path.is_file():
281
+ print()
282
+ print("=== Auto-solve telemetry (since v2.8.40) ===")
283
+ events: Counter = Counter()
284
+ injected_by_pred: Counter = Counter()
285
+ injected_n_models: list[int] = []
286
+ injected_elapsed: list[int] = []
287
+ # Optionally filter by --since
288
+ since_ts = since_dt.timestamp() if since_dt else 0
289
+ try:
290
+ with tele_path.open() as f:
291
+ for line in f:
292
+ try:
293
+ r = json.loads(line)
294
+ except json.JSONDecodeError:
295
+ continue
296
+ if r.get("ts", 0) < since_ts:
297
+ continue
298
+ ev = r.get("event", "?")
299
+ events[ev] += 1
300
+ if ev == "injected":
301
+ pred = r.get("predicate", "?")
302
+ injected_by_pred[pred] += 1
303
+ n = r.get("n_models")
304
+ if isinstance(n, int):
305
+ injected_n_models.append(n)
306
+ el = r.get("elapsed_ms")
307
+ if isinstance(el, int):
308
+ injected_elapsed.append(el)
309
+ except OSError:
310
+ pass
311
+ for ev, n in events.most_common():
312
+ print(f" {ev:28s} {n}")
313
+ if injected_by_pred:
314
+ print()
315
+ print(" Injected by predicate:")
316
+ for pred, n in injected_by_pred.most_common():
317
+ print(f" {pred:22s} {n}")
318
+ if injected_n_models:
319
+ avg_n = sum(injected_n_models) / len(injected_n_models)
320
+ print(f" Avg solutions per inject: {avg_n:.1f}")
321
+ if injected_elapsed:
322
+ avg_e = sum(injected_elapsed) / len(injected_elapsed)
323
+ print(f" Avg Z3 elapsed: {avg_e:.0f} ms")
324
+
275
325
  return 0
276
326
 
277
327
 
@@ -174,6 +174,9 @@ def judge_with_gemma(question: str, gold: str, pred: str) -> tuple[str, str]:
174
174
  "messages": [{"role": "user", "content": p}],
175
175
  "temperature": 0.0,
176
176
  "max_tokens": mt,
177
+ # Disable thinking for the judge: it doesn't need deep reasoning,
178
+ # and thinking tokens eat into max_tokens causing empty content.
179
+ "chat_template_kwargs": {"enable_thinking": False},
177
180
  }).encode(),
178
181
  headers={"Content-Type": "application/json"},
179
182
  )
@@ -211,17 +214,20 @@ def judge_with_gemma(question: str, gold: str, pred: str) -> tuple[str, str]:
211
214
  return v
212
215
  return ""
213
216
 
217
+ # Do NOT include the QUESTION field — complex math questions cause the
218
+ # model to start solving instead of grading, producing no YES/NO/PARTIAL.
219
+ # Comparing GROUND TRUTH vs PREDICTED is sufficient for verdict.
214
220
  prompt = (
215
221
  "You are grading a free-form answer against a ground truth. "
222
+ "Do NOT solve the problem. Just compare the two answers below.\n"
216
223
  "Respond with exactly one of: YES, NO, or PARTIAL on the first "
217
224
  "line, then a one-sentence reason on the second.\n\n"
218
- f"QUESTION: {question[:1200]}\n"
219
225
  f"GROUND TRUTH: {gold[:600]}\n"
220
226
  f"PREDICTED ANSWER: {pred[:1200]}\n\n"
221
- "Verdict:"
227
+ "Verdict (YES / NO / PARTIAL):"
222
228
  )
223
229
  try:
224
- text = _call(prompt, 200)
230
+ text = _call(prompt, 1024)
225
231
  verdict = _verdict_from(text)
226
232
  if not verdict:
227
233
  # reasoning_content (thinking tokens) may carry the verdict at
@@ -237,7 +243,7 @@ def judge_with_gemma(question: str, gold: str, pred: str) -> tuple[str, str]:
237
243
  "ONE WORD ONLY: YES, NO, or PARTIAL.\n\n"
238
244
  f"GROUND TRUTH: {gold[:600]}\nPREDICTED: {pred[:600]}\n\nAnswer:"
239
245
  )
240
- text2 = _call(terse, 256)
246
+ text2 = _call(terse, 512)
241
247
  verdict = _verdict_from(text2)
242
248
  if not verdict:
243
249
  verdict = _verdict_from(text2, tail_only=True)
@@ -227,3 +227,40 @@ def test_maybe_inject_skips_for_short_message():
227
227
  with patch.dict(os.environ, {"DRYDOCK_AUTO_SOLVE": "1"}, clear=False):
228
228
  ok = maybe_inject_auto_solve(msgs, "hi")
229
229
  assert ok is False
230
+
231
+
232
+ # ── _formula_is_z3_friendly pre-flight ─────────────────────────────────
233
+
234
+ @pytest.mark.parametrize("formula,expected", [
235
+ ("x * x * x - 1", True),
236
+ ("16 * x + 5", True),
237
+ ("(x + 1) * (x - 1)", True),
238
+ # Factorial — Z3 can't handle
239
+ ("n! - 1", False),
240
+ ("n * (n - 1)!", False),
241
+ # Variable exponents
242
+ ("2 ** n - 1", False),
243
+ ("3 ** k + 2", False),
244
+ # Transcendentals
245
+ ("sin(x) + cos(x)", False),
246
+ ("exp(x) - 1", False),
247
+ ("log(x)", False),
248
+ ("ln(x) + x", False),
249
+ ("sqrt(x) + 1", False),
250
+ ])
251
+ def test_formula_pre_flight(formula: str, expected: bool):
252
+ from drydock.core.auto_solve import _formula_is_z3_friendly
253
+ assert _formula_is_z3_friendly(formula) is expected
254
+
255
+
256
+ def test_maybe_inject_skips_factorial():
257
+ """Pre-flight should reject n! before launching Z3."""
258
+ msgs = _StubMessages()
259
+ # Need a question that triggers the extractor with a bad formula.
260
+ # "What is the smallest n with n! >= 100?" extracts to smallest_with
261
+ # with formula "n! >= 100" — Z3 can't handle factorial.
262
+ q = "What is the smallest n with n! >= 100?"
263
+ with patch.dict(os.environ, {"DRYDOCK_AUTO_SOLVE": "1"}, clear=False):
264
+ ok = maybe_inject_auto_solve(msgs, q)
265
+ assert ok is False
266
+ assert msgs.items == []
@@ -1,5 +1,46 @@
1
1
  # Drydock Trip Log
2
2
 
3
+ ## 2026-05-16 04:00 UTC tick
4
+ - Stress: paused (.pause_stress sentinel active)
5
+ - Write rate: N/A (stress paused)
6
+ - HLE burndown daemon: alive (PID 2069350, slot 25 running); lifetime 62/512 = 12.1% (Math 43/253 = 17.0%, Bio/Med 6/36 = 16.7%, CS/AI 2/63 = 3.2%, Chem 3/49 = 6.1%, Eng 2/33 = 6.1%); recent math batches scoring 30-70% (slots 22-24)
7
+ - vLLM 400s: 0 (llamacpp Q3_K_M on :8000, balancer on :8001 healthy)
8
+ - GH issues: 1 open (#23 image-processing enhancement, not a bug)
9
+ - Dispatch queue (24h): harness=13 (all thinking_stall, fully addressed by d5cfd79+b0350cb+47d6523), retrieval=0 actionable, curiosity=1714 pending (283 hle_failure, 1431 unknown_term)
10
+ - Auto-solve telemetry (lifetime): 27 events — 21 no_extract (78%), 2 injected (7%), 2 predicate_not_decidable, 2 formula_not_z3_friendly; adoption gap persists but auto-solve fired correctly 2/4 eligible questions
11
+ - Action this tick: no action — system healthy; recent HLE math batches trending up; no actionable bugs in dispatch queue or GH issues
12
+
13
+ ## 2026-05-16 03:30 UTC tick
14
+ - Stress: paused (.pause_stress sentinel active)
15
+ - Write rate: N/A (stress paused)
16
+ - HLE burndown daemon: alive (PID 2057071, elapsed ~50m); lifetime 57/507 = 11.2% (Math 38/248 = 15.3%, Bio/Med 6/36 = 16.7%, CS/AI 2/63 = 3.2%, Chem 3/49 = 6.1%, Eng 2/33 = 6.1%)
17
+ - vLLM 400s: 0 (llamacpp Q3_K_M on :8000 + reasoning-budget=12000, balancer on :8001 healthy)
18
+ - GH issues: 1 open (#23 image-processing enhancement, not a bug)
19
+ - Dispatch queue: harness=13 (all thinking_stall, last at 00:40 UTC — pattern addressed by b0350cb + d5cfd79 + 47d6523), retrieval=3 entries 0 actionable, curiosity=1709 pending (283 hle_failure, 1426 unknown_term)
20
+ - Auto-solve audit (12h window): 85 questions answered, 21 YES / 47 NO / 17 ERROR; 13 wrong math — detector matched 1/13 (7%), extractor fired 0/13 (0%); total injected=2 (perfect_square predicate only); no_extract dominates at 16/23 events (questions lack extractable formulas)
21
+ - Action this tick: no action — system healthy. Thinking stall fully addressed by recent commits. Auto-solve adoption gap (7% detector coverage on wrong math) noted but requires seeing live question text to add patterns; leaving for user review on return.
22
+
23
+ ## 2026-05-16 02:30 UTC tick
24
+ - Stress: paused (.pause_stress sentinel active)
25
+ - Write rate: N/A (stress paused)
26
+ - HLE burndown daemon: alive (PID 2043404, elapsed ~1h); lifetime 54/500 = 10.8% (Math 35/241 = 14.5%, Bio/Med 6/36 = 16.7%)
27
+ - vLLM 400s: 0 (llamacpp Q3_K_M on :8000 clean, balancer on :8001 healthy)
28
+ - GH issues: 1 open (#23 image-processing enhancement, not a bug)
29
+ - Dispatch queue: harness=13 (all thinking_stall, last at 00:40 UTC, addressed by b0350cb), retrieval=3 entries 0 actionable, curiosity=1705 pending
30
+ - Auto-solve telemetry (last ~5h): 15 events total — 2 injected (perfect_square), 8 no_extract, 2 formula_not_z3_friendly (factorial/var-exp), 2 predicate_not_decidable (prime); adoption low but expected given extractor only handles specific shapes
31
+ - Action this tick: consumed curiosity item 282490593dc7df3a (pre-fix hle_failure/Physics stall artifact); no code changes — system healthy
32
+
33
+ ## 2026-05-16 02:00 UTC tick
34
+ - Stress: paused (.pause_stress sentinel active)
35
+ - Write rate: N/A (stress paused)
36
+ - HLE burndown daemon: alive (PID 2043404, elapsed ~30 min); lifetime 53/495 = 10.7%
37
+ - Admiral last 30 min: N/A (no stress)
38
+ - vLLM 400s: 0 (llamacpp Q3_K_M clean)
39
+ - GH issues: 1 open (#23 image-processing enhancement, not a bug)
40
+ - Dispatch queue: harness=14 (all thinking_stall, last at 00:40 UTC, addressed by prior commits), retrieval=0 actionable, curiosity=1697 pending (top items are pre-fix stall artifacts, not actionable this tick)
41
+ - Auto-solve telemetry: 10 events total (4 no_extract, 2 injected, 2 formula_not_z3_friendly, 2 predicate_not_decidable); adoption low but working
42
+ - Action this tick: no fix committed — system healthy; 01:30 tick confirmed 70% single-batch HLE score after reasoning-budget=12000 restart, stall fix holding
43
+
3
44
  ## 2026-05-16 01:00 UTC tick
4
45
  - Stress: paused (.pause_stress sentinel active)
5
46
  - Write rate: N/A (stress paused)
@@ -6660,3 +6701,15 @@ restarted, cron self-match bug fixed in this same session).
6660
6701
  - retrieval-drain: 0 ingestions (all recently consumed)
6661
6702
  - curiosity-drain: top 3 are hle_failure items with empty predictions — pre-fix stall artifacts, not actionable as code changes
6662
6703
  - Action this tick: no fix committed — system fully healthy; the 70% batch confirms reasoning-budget=12000 restart is working; no new dispatch signals or actionable issues
6704
+
6705
+ ## 2026-05-16 03:00 UTC tick
6706
+ - Stress: paused (.pause_stress sentinel present)
6707
+ - Write rate: N/A (stress paused)
6708
+ - HLE daemon: running (PID 2057071, 20min, batch slot=24, Math category)
6709
+ - HLE lifetime: 56/503 = 11.1% (Math 37/244 = 15.2%)
6710
+ - vLLM 400s: 0
6711
+ - GH issues: 1 open (#23 "Expand for image processing" — enhancement, no action needed)
6712
+ - Dispatch queue: harness=13 (all thinking_stall, addressed by prior commits), curiosity=1706 pending
6713
+ - Retrieval drain: 0 ingested (all 3 entries already consumed)
6714
+ - Auto-solve telemetry: 2 injected (perfect_square) in 12h; detector matched 1/11 wrong Math answers (9%)
6715
+ - Action this tick: committed fix d5cfd79 — judge_with_gemma was calling model with max_tokens=200 and no chat_template_kwargs, producing ~40% ERROR verdicts (4/10 in batch 23). Fixed: added enable_thinking=False to suppress thinking tokens in judge calls + bumped max_tokens 200→1024 (first call), 256→512 (retry). Should recover ~2-4 wrong verdicts per 10-question batch.
@@ -1 +0,0 @@
1
- 2045659
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes