drydock-cli 2.7.0__tar.gz → 2.7.1__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 (866) hide show
  1. drydock_cli-2.7.1/.auto_release.lock +1 -0
  2. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/PKG-INFO +1 -1
  3. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/pyproject.toml +1 -1
  4. drydock_cli-2.7.1/research/config_best.toml +147 -0
  5. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/domain_spec.md +19 -0
  6. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/experimenter.py +42 -13
  7. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/proposer.py +58 -1
  8. drydock_cli-2.7.1/research/results.tsv +45 -0
  9. drydock_cli-2.7.0/research/config_best.toml → drydock_cli-2.7.1/research/staged/exp_1776807445_0002.toml +2 -1
  10. drydock_cli-2.7.1/research/staged/exp_1776807750_0003.toml +146 -0
  11. drydock_cli-2.7.1/research/staged/exp_1776808098_0004.toml +147 -0
  12. drydock_cli-2.7.1/research/staged/exp_1776808492_0005.toml +146 -0
  13. drydock_cli-2.7.1/research/staged/exp_1776820249_0001.toml +147 -0
  14. drydock_cli-2.7.1/research/staged/exp_1776820673_0002.toml +147 -0
  15. drydock_cli-2.7.1/research/staged/exp_1776821040_0003.toml +147 -0
  16. drydock_cli-2.7.1/research/staged/exp_1776821477_0004.toml +147 -0
  17. drydock_cli-2.7.1/research/staged/exp_1776821854_0005.toml +148 -0
  18. drydock_cli-2.7.1/research/staged/exp_1776822269_0006.toml +148 -0
  19. drydock_cli-2.7.1/research/staged/exp_1776822696_0007.toml +148 -0
  20. drydock_cli-2.7.1/research/staged/exp_1776823138_0008.toml +147 -0
  21. drydock_cli-2.7.1/research/staged/exp_1776823585_0009.toml +148 -0
  22. drydock_cli-2.7.1/research/staged/exp_1776823944_0010.toml +148 -0
  23. drydock_cli-2.7.1/research/staged/exp_1776824339_0011.toml +148 -0
  24. drydock_cli-2.7.1/research/staged/exp_1776824782_0012.toml +148 -0
  25. drydock_cli-2.7.1/research/staged/exp_1776825164_0001.toml +148 -0
  26. drydock_cli-2.7.1/research/staged/exp_1776825493_0002.toml +148 -0
  27. drydock_cli-2.7.1/research/staged/exp_1776825824_0003.toml +148 -0
  28. drydock_cli-2.7.1/research/staged/exp_1776826146_0004.toml +148 -0
  29. drydock_cli-2.7.1/research/staged/exp_1776826467_0005.toml +148 -0
  30. drydock_cli-2.7.1/research/staged/exp_1776826797_0006.toml +148 -0
  31. drydock_cli-2.7.1/research/staged/exp_1776827130_0007.toml +148 -0
  32. drydock_cli-2.7.1/research/staged/exp_1776827455_0008.toml +148 -0
  33. drydock_cli-2.7.1/research/staged/exp_1776827776_0009.toml +147 -0
  34. drydock_cli-2.7.1/research/staged/exp_1776828107_0010.toml +148 -0
  35. drydock_cli-2.7.1/research/staged/exp_1776828439_0011.toml +147 -0
  36. drydock_cli-2.7.1/research/staged/exp_1776828760_0012.toml +147 -0
  37. drydock_cli-2.7.1/research/staged/exp_1776829085_0013.toml +148 -0
  38. drydock_cli-2.7.1/research/staged/exp_1776829414_0014.toml +148 -0
  39. drydock_cli-2.7.1/research/staged/exp_1776829750_0015.toml +148 -0
  40. drydock_cli-2.7.1/research/staged/exp_1776830082_0016.toml +148 -0
  41. drydock_cli-2.7.1/research/staged/exp_1776830402_0017.toml +148 -0
  42. drydock_cli-2.7.1/research/staged/exp_1776830726_0018.toml +148 -0
  43. drydock_cli-2.7.1/research/staged/exp_1776831046_0019.toml +148 -0
  44. drydock_cli-2.7.1/research/staged/exp_1776831369_0020.toml +148 -0
  45. drydock_cli-2.7.1/research/staged/exp_1776831700_0021.toml +148 -0
  46. drydock_cli-2.7.1/research/staged/exp_1776832036_0022.toml +148 -0
  47. drydock_cli-2.7.1/research/staged/exp_1776832354_0023.toml +148 -0
  48. drydock_cli-2.7.1/research/staged/exp_1776832680_0024.toml +148 -0
  49. drydock_cli-2.7.1/research/staged/exp_1776833002_0025.toml +148 -0
  50. drydock_cli-2.7.1/research/staged/exp_1776833328_0026.toml +148 -0
  51. drydock_cli-2.7.1/research/staged/exp_1776833652_0027.toml +148 -0
  52. drydock_cli-2.7.1/research/staged/exp_1776833976_0028.toml +148 -0
  53. drydock_cli-2.7.1/research/traces/exp_1776807135_0001/messages.jsonl +56 -0
  54. drydock_cli-2.7.1/research/traces/exp_1776807135_0001/meta.json +859 -0
  55. drydock_cli-2.7.1/research/traces/exp_1776807135_0001/summary.json +14 -0
  56. drydock_cli-2.7.1/research/traces/exp_1776807445_0002/messages.jsonl +46 -0
  57. drydock_cli-2.7.1/research/traces/exp_1776807445_0002/meta.json +859 -0
  58. drydock_cli-2.7.1/research/traces/exp_1776807445_0002/summary.json +14 -0
  59. drydock_cli-2.7.1/research/traces/exp_1776807750_0003/messages.jsonl +58 -0
  60. drydock_cli-2.7.1/research/traces/exp_1776807750_0003/meta.json +859 -0
  61. drydock_cli-2.7.1/research/traces/exp_1776807750_0003/summary.json +14 -0
  62. drydock_cli-2.7.1/research/traces/exp_1776808098_0004/messages.jsonl +45 -0
  63. drydock_cli-2.7.1/research/traces/exp_1776808098_0004/meta.json +859 -0
  64. drydock_cli-2.7.1/research/traces/exp_1776808098_0004/rec_check.jsonl +0 -0
  65. drydock_cli-2.7.1/research/traces/exp_1776808098_0004/summary.json +14 -0
  66. drydock_cli-2.7.1/research/traces/exp_1776808492_0005/messages.jsonl +46 -0
  67. drydock_cli-2.7.1/research/traces/exp_1776808492_0005/meta.json +859 -0
  68. drydock_cli-2.7.1/research/traces/exp_1776808492_0005/rec_check.jsonl +0 -0
  69. drydock_cli-2.7.1/research/traces/exp_1776808492_0005/summary.json +14 -0
  70. drydock_cli-2.7.1/research/traces/exp_1776820249_0001/messages.jsonl +56 -0
  71. drydock_cli-2.7.1/research/traces/exp_1776820249_0001/meta.json +859 -0
  72. drydock_cli-2.7.1/research/traces/exp_1776820249_0001/rec_check.jsonl +0 -0
  73. drydock_cli-2.7.1/research/traces/exp_1776820249_0001/summary.json +14 -0
  74. drydock_cli-2.7.1/research/traces/exp_1776820673_0002/messages.jsonl +56 -0
  75. drydock_cli-2.7.1/research/traces/exp_1776820673_0002/meta.json +859 -0
  76. drydock_cli-2.7.1/research/traces/exp_1776820673_0002/rec_check.jsonl +0 -0
  77. drydock_cli-2.7.1/research/traces/exp_1776820673_0002/summary.json +14 -0
  78. drydock_cli-2.7.1/research/traces/exp_1776821040_0003/messages.jsonl +56 -0
  79. drydock_cli-2.7.1/research/traces/exp_1776821040_0003/meta.json +859 -0
  80. drydock_cli-2.7.1/research/traces/exp_1776821040_0003/rec_check.jsonl +0 -0
  81. drydock_cli-2.7.1/research/traces/exp_1776821040_0003/summary.json +14 -0
  82. drydock_cli-2.7.1/research/traces/exp_1776821477_0004/messages.jsonl +59 -0
  83. drydock_cli-2.7.1/research/traces/exp_1776821477_0004/meta.json +859 -0
  84. drydock_cli-2.7.1/research/traces/exp_1776821477_0004/rec_check.jsonl +0 -0
  85. drydock_cli-2.7.1/research/traces/exp_1776821477_0004/summary.json +14 -0
  86. drydock_cli-2.7.1/research/traces/exp_1776821854_0005/messages.jsonl +59 -0
  87. drydock_cli-2.7.1/research/traces/exp_1776821854_0005/meta.json +859 -0
  88. drydock_cli-2.7.1/research/traces/exp_1776821854_0005/rec_check.jsonl +0 -0
  89. drydock_cli-2.7.1/research/traces/exp_1776821854_0005/summary.json +14 -0
  90. drydock_cli-2.7.1/research/traces/exp_1776822269_0006/messages.jsonl +42 -0
  91. drydock_cli-2.7.1/research/traces/exp_1776822269_0006/meta.json +859 -0
  92. drydock_cli-2.7.1/research/traces/exp_1776822269_0006/rec_check.jsonl +0 -0
  93. drydock_cli-2.7.1/research/traces/exp_1776822269_0006/summary.json +14 -0
  94. drydock_cli-2.7.1/research/traces/exp_1776822696_0007/messages.jsonl +44 -0
  95. drydock_cli-2.7.1/research/traces/exp_1776822696_0007/meta.json +859 -0
  96. drydock_cli-2.7.1/research/traces/exp_1776822696_0007/rec_check.jsonl +0 -0
  97. drydock_cli-2.7.1/research/traces/exp_1776822696_0007/summary.json +14 -0
  98. drydock_cli-2.7.1/research/traces/exp_1776823138_0008/messages.jsonl +47 -0
  99. drydock_cli-2.7.1/research/traces/exp_1776823138_0008/meta.json +859 -0
  100. drydock_cli-2.7.1/research/traces/exp_1776823138_0008/rec_check.jsonl +0 -0
  101. drydock_cli-2.7.1/research/traces/exp_1776823138_0008/summary.json +14 -0
  102. drydock_cli-2.7.1/research/traces/exp_1776823585_0009/messages.jsonl +56 -0
  103. drydock_cli-2.7.1/research/traces/exp_1776823585_0009/meta.json +859 -0
  104. drydock_cli-2.7.1/research/traces/exp_1776823585_0009/rec_check.jsonl +0 -0
  105. drydock_cli-2.7.1/research/traces/exp_1776823585_0009/summary.json +14 -0
  106. drydock_cli-2.7.1/research/traces/exp_1776823944_0010/messages.jsonl +46 -0
  107. drydock_cli-2.7.1/research/traces/exp_1776823944_0010/meta.json +859 -0
  108. drydock_cli-2.7.1/research/traces/exp_1776823944_0010/rec_check.jsonl +0 -0
  109. drydock_cli-2.7.1/research/traces/exp_1776823944_0010/summary.json +14 -0
  110. drydock_cli-2.7.1/research/traces/exp_1776824339_0011/messages.jsonl +56 -0
  111. drydock_cli-2.7.1/research/traces/exp_1776824339_0011/meta.json +859 -0
  112. drydock_cli-2.7.1/research/traces/exp_1776824339_0011/rec_check.jsonl +0 -0
  113. drydock_cli-2.7.1/research/traces/exp_1776824339_0011/summary.json +14 -0
  114. drydock_cli-2.7.1/research/traces/exp_1776825164_0001/messages.jsonl +56 -0
  115. drydock_cli-2.7.1/research/traces/exp_1776825164_0001/meta.json +859 -0
  116. drydock_cli-2.7.1/research/traces/exp_1776825164_0001/rec_check.jsonl +0 -0
  117. drydock_cli-2.7.1/research/traces/exp_1776825164_0001/summary.json +14 -0
  118. drydock_cli-2.7.1/research/traces/exp_1776825493_0002/messages.jsonl +44 -0
  119. drydock_cli-2.7.1/research/traces/exp_1776825493_0002/meta.json +859 -0
  120. drydock_cli-2.7.1/research/traces/exp_1776825493_0002/rec_check.jsonl +0 -0
  121. drydock_cli-2.7.1/research/traces/exp_1776825493_0002/summary.json +14 -0
  122. drydock_cli-2.7.1/research/traces/exp_1776825824_0003/messages.jsonl +44 -0
  123. drydock_cli-2.7.1/research/traces/exp_1776825824_0003/meta.json +859 -0
  124. drydock_cli-2.7.1/research/traces/exp_1776825824_0003/rec_check.jsonl +0 -0
  125. drydock_cli-2.7.1/research/traces/exp_1776825824_0003/summary.json +14 -0
  126. drydock_cli-2.7.1/research/traces/exp_1776826146_0004/messages.jsonl +56 -0
  127. drydock_cli-2.7.1/research/traces/exp_1776826146_0004/meta.json +859 -0
  128. drydock_cli-2.7.1/research/traces/exp_1776826146_0004/rec_check.jsonl +0 -0
  129. drydock_cli-2.7.1/research/traces/exp_1776826146_0004/summary.json +14 -0
  130. drydock_cli-2.7.1/research/traces/exp_1776826467_0005/messages.jsonl +47 -0
  131. drydock_cli-2.7.1/research/traces/exp_1776826467_0005/meta.json +859 -0
  132. drydock_cli-2.7.1/research/traces/exp_1776826467_0005/rec_check.jsonl +0 -0
  133. drydock_cli-2.7.1/research/traces/exp_1776826467_0005/summary.json +14 -0
  134. drydock_cli-2.7.1/research/traces/exp_1776826797_0006/messages.jsonl +41 -0
  135. drydock_cli-2.7.1/research/traces/exp_1776826797_0006/meta.json +859 -0
  136. drydock_cli-2.7.1/research/traces/exp_1776826797_0006/rec_check.jsonl +0 -0
  137. drydock_cli-2.7.1/research/traces/exp_1776826797_0006/summary.json +14 -0
  138. drydock_cli-2.7.1/research/traces/exp_1776827130_0007/messages.jsonl +56 -0
  139. drydock_cli-2.7.1/research/traces/exp_1776827130_0007/meta.json +859 -0
  140. drydock_cli-2.7.1/research/traces/exp_1776827130_0007/rec_check.jsonl +0 -0
  141. drydock_cli-2.7.1/research/traces/exp_1776827130_0007/summary.json +14 -0
  142. drydock_cli-2.7.1/research/traces/exp_1776827455_0008/messages.jsonl +58 -0
  143. drydock_cli-2.7.1/research/traces/exp_1776827455_0008/meta.json +859 -0
  144. drydock_cli-2.7.1/research/traces/exp_1776827455_0008/rec_check.jsonl +0 -0
  145. drydock_cli-2.7.1/research/traces/exp_1776827455_0008/summary.json +14 -0
  146. drydock_cli-2.7.1/research/traces/exp_1776827776_0009/messages.jsonl +56 -0
  147. drydock_cli-2.7.1/research/traces/exp_1776827776_0009/meta.json +859 -0
  148. drydock_cli-2.7.1/research/traces/exp_1776827776_0009/rec_check.jsonl +0 -0
  149. drydock_cli-2.7.1/research/traces/exp_1776827776_0009/summary.json +14 -0
  150. drydock_cli-2.7.1/research/traces/exp_1776828107_0010/messages.jsonl +56 -0
  151. drydock_cli-2.7.1/research/traces/exp_1776828107_0010/meta.json +859 -0
  152. drydock_cli-2.7.1/research/traces/exp_1776828107_0010/rec_check.jsonl +0 -0
  153. drydock_cli-2.7.1/research/traces/exp_1776828107_0010/summary.json +14 -0
  154. drydock_cli-2.7.1/research/traces/exp_1776828439_0011/messages.jsonl +45 -0
  155. drydock_cli-2.7.1/research/traces/exp_1776828439_0011/meta.json +859 -0
  156. drydock_cli-2.7.1/research/traces/exp_1776828439_0011/rec_check.jsonl +0 -0
  157. drydock_cli-2.7.1/research/traces/exp_1776828439_0011/summary.json +14 -0
  158. drydock_cli-2.7.1/research/traces/exp_1776828760_0012/messages.jsonl +46 -0
  159. drydock_cli-2.7.1/research/traces/exp_1776828760_0012/meta.json +859 -0
  160. drydock_cli-2.7.1/research/traces/exp_1776828760_0012/rec_check.jsonl +0 -0
  161. drydock_cli-2.7.1/research/traces/exp_1776828760_0012/summary.json +14 -0
  162. drydock_cli-2.7.1/research/traces/exp_1776829085_0013/messages.jsonl +59 -0
  163. drydock_cli-2.7.1/research/traces/exp_1776829085_0013/meta.json +859 -0
  164. drydock_cli-2.7.1/research/traces/exp_1776829085_0013/rec_check.jsonl +0 -0
  165. drydock_cli-2.7.1/research/traces/exp_1776829085_0013/summary.json +14 -0
  166. drydock_cli-2.7.1/research/traces/exp_1776829414_0014/messages.jsonl +42 -0
  167. drydock_cli-2.7.1/research/traces/exp_1776829414_0014/meta.json +859 -0
  168. drydock_cli-2.7.1/research/traces/exp_1776829414_0014/rec_check.jsonl +0 -0
  169. drydock_cli-2.7.1/research/traces/exp_1776829414_0014/summary.json +14 -0
  170. drydock_cli-2.7.1/research/traces/exp_1776829750_0015/messages.jsonl +43 -0
  171. drydock_cli-2.7.1/research/traces/exp_1776829750_0015/meta.json +859 -0
  172. drydock_cli-2.7.1/research/traces/exp_1776829750_0015/rec_check.jsonl +0 -0
  173. drydock_cli-2.7.1/research/traces/exp_1776829750_0015/summary.json +14 -0
  174. drydock_cli-2.7.1/research/traces/exp_1776830082_0016/messages.jsonl +42 -0
  175. drydock_cli-2.7.1/research/traces/exp_1776830082_0016/meta.json +859 -0
  176. drydock_cli-2.7.1/research/traces/exp_1776830082_0016/rec_check.jsonl +0 -0
  177. drydock_cli-2.7.1/research/traces/exp_1776830082_0016/summary.json +14 -0
  178. drydock_cli-2.7.1/research/traces/exp_1776830402_0017/messages.jsonl +45 -0
  179. drydock_cli-2.7.1/research/traces/exp_1776830402_0017/meta.json +859 -0
  180. drydock_cli-2.7.1/research/traces/exp_1776830402_0017/rec_check.jsonl +0 -0
  181. drydock_cli-2.7.1/research/traces/exp_1776830402_0017/summary.json +14 -0
  182. drydock_cli-2.7.1/research/traces/exp_1776830726_0018/messages.jsonl +45 -0
  183. drydock_cli-2.7.1/research/traces/exp_1776830726_0018/meta.json +859 -0
  184. drydock_cli-2.7.1/research/traces/exp_1776830726_0018/rec_check.jsonl +0 -0
  185. drydock_cli-2.7.1/research/traces/exp_1776830726_0018/summary.json +14 -0
  186. drydock_cli-2.7.1/research/traces/exp_1776831046_0019/messages.jsonl +56 -0
  187. drydock_cli-2.7.1/research/traces/exp_1776831046_0019/meta.json +859 -0
  188. drydock_cli-2.7.1/research/traces/exp_1776831046_0019/rec_check.jsonl +0 -0
  189. drydock_cli-2.7.1/research/traces/exp_1776831046_0019/summary.json +14 -0
  190. drydock_cli-2.7.1/research/traces/exp_1776831369_0020/messages.jsonl +37 -0
  191. drydock_cli-2.7.1/research/traces/exp_1776831369_0020/meta.json +859 -0
  192. drydock_cli-2.7.1/research/traces/exp_1776831369_0020/rec_check.jsonl +0 -0
  193. drydock_cli-2.7.1/research/traces/exp_1776831369_0020/summary.json +14 -0
  194. drydock_cli-2.7.1/research/traces/exp_1776831700_0021/messages.jsonl +43 -0
  195. drydock_cli-2.7.1/research/traces/exp_1776831700_0021/meta.json +859 -0
  196. drydock_cli-2.7.1/research/traces/exp_1776831700_0021/rec_check.jsonl +0 -0
  197. drydock_cli-2.7.1/research/traces/exp_1776831700_0021/summary.json +14 -0
  198. drydock_cli-2.7.1/research/traces/exp_1776832036_0022/messages.jsonl +46 -0
  199. drydock_cli-2.7.1/research/traces/exp_1776832036_0022/meta.json +859 -0
  200. drydock_cli-2.7.1/research/traces/exp_1776832036_0022/rec_check.jsonl +0 -0
  201. drydock_cli-2.7.1/research/traces/exp_1776832036_0022/summary.json +14 -0
  202. drydock_cli-2.7.1/research/traces/exp_1776832354_0023/messages.jsonl +56 -0
  203. drydock_cli-2.7.1/research/traces/exp_1776832354_0023/meta.json +859 -0
  204. drydock_cli-2.7.1/research/traces/exp_1776832354_0023/rec_check.jsonl +0 -0
  205. drydock_cli-2.7.1/research/traces/exp_1776832354_0023/summary.json +14 -0
  206. drydock_cli-2.7.1/research/traces/exp_1776832680_0024/messages.jsonl +46 -0
  207. drydock_cli-2.7.1/research/traces/exp_1776832680_0024/meta.json +859 -0
  208. drydock_cli-2.7.1/research/traces/exp_1776832680_0024/rec_check.jsonl +0 -0
  209. drydock_cli-2.7.1/research/traces/exp_1776832680_0024/summary.json +14 -0
  210. drydock_cli-2.7.1/research/traces/exp_1776833002_0025/messages.jsonl +56 -0
  211. drydock_cli-2.7.1/research/traces/exp_1776833002_0025/meta.json +859 -0
  212. drydock_cli-2.7.1/research/traces/exp_1776833002_0025/rec_check.jsonl +0 -0
  213. drydock_cli-2.7.1/research/traces/exp_1776833002_0025/summary.json +14 -0
  214. drydock_cli-2.7.1/research/traces/exp_1776833328_0026/messages.jsonl +56 -0
  215. drydock_cli-2.7.1/research/traces/exp_1776833328_0026/meta.json +859 -0
  216. drydock_cli-2.7.1/research/traces/exp_1776833328_0026/rec_check.jsonl +0 -0
  217. drydock_cli-2.7.1/research/traces/exp_1776833328_0026/summary.json +14 -0
  218. drydock_cli-2.7.1/research/traces/exp_1776833652_0027/messages.jsonl +46 -0
  219. drydock_cli-2.7.1/research/traces/exp_1776833652_0027/meta.json +859 -0
  220. drydock_cli-2.7.1/research/traces/exp_1776833652_0027/rec_check.jsonl +0 -0
  221. drydock_cli-2.7.1/research/traces/exp_1776833652_0027/summary.json +14 -0
  222. drydock_cli-2.7.1/scripts/research_babysitter.sh +99 -0
  223. drydock_cli-2.7.1/tests/backend/__init__.py +0 -0
  224. drydock_cli-2.7.1/tests/cli/textual_ui/__init__.py +0 -0
  225. drydock_cli-2.7.1/tests/mock/__init__.py +0 -0
  226. drydock_cli-2.7.0/.auto_release.lock +0 -1
  227. drydock_cli-2.7.0/research/results.tsv +0 -2
  228. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.claude/scheduled_tasks.lock +0 -0
  229. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.github/CODEOWNERS +0 -0
  230. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
  231. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  232. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  233. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.github/workflows/build-and-upload.yml +0 -0
  234. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.github/workflows/ci.yml +0 -0
  235. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.github/workflows/issue-labeler.yml +0 -0
  236. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.github/workflows/release.yml +0 -0
  237. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.gitignore +0 -0
  238. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.pre-commit-config.yaml +0 -0
  239. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.python-version +0 -0
  240. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.typos.toml +0 -0
  241. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.vscode/extensions.json +0 -0
  242. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.vscode/launch.json +0 -0
  243. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.vscode/settings.json +0 -0
  244. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/AGENTS.md +0 -0
  245. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/Admiral.md +0 -0
  246. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/BASELINE_412.md +0 -0
  247. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/CHANGELOG.md +0 -0
  248. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/CLAUDE.md +0 -0
  249. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/CONTRIBUTING.md +0 -0
  250. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/DEPLOYMENT.md +0 -0
  251. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/Drydock_rebrand.md +0 -0
  252. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/LICENSE +0 -0
  253. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/MODEL_SHORTCOMINGS.md +0 -0
  254. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/NOTICE +0 -0
  255. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/OVERNIGHT_PROGRESS.md +0 -0
  256. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/OVERNIGHT_REPORT_2026_04_13.md +0 -0
  257. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/PRD.md +0 -0
  258. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/README.md +0 -0
  259. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/action.yml +0 -0
  260. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/README.md +0 -0
  261. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results1.tsv +0 -0
  262. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results13.tsv +0 -0
  263. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results14.tsv +0 -0
  264. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results15.tsv +0 -0
  265. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results16.tsv +0 -0
  266. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results17.tsv +0 -0
  267. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results18.tsv +0 -0
  268. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results19.tsv +0 -0
  269. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results2.tsv +0 -0
  270. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results20.tsv +0 -0
  271. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results3.tsv +0 -0
  272. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results4.tsv +0 -0
  273. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results5.tsv +0 -0
  274. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results6.tsv +0 -0
  275. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results7.tsv +0 -0
  276. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results8.tsv +0 -0
  277. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results9.tsv +0 -0
  278. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results_evolved_v1.tsv +0 -0
  279. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/distribution/zed/LICENSE +0 -0
  280. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/distribution/zed/extension.toml +0 -0
  281. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/distribution/zed/icons/mistral_vibe.svg +0 -0
  282. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/docs/README.md +0 -0
  283. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/docs/acp-setup.md +0 -0
  284. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/docs/proxy-setup.md +0 -0
  285. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/__init__.py +0 -0
  286. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/__init__.py +0 -0
  287. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/acp_agent_loop.py +0 -0
  288. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/acp_logger.py +0 -0
  289. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/entrypoint.py +0 -0
  290. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/tools/__init__.py +0 -0
  291. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/tools/base.py +0 -0
  292. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/tools/builtins/bash.py +0 -0
  293. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/tools/builtins/read_file.py +0 -0
  294. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/tools/builtins/search_replace.py +0 -0
  295. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/tools/builtins/todo.py +0 -0
  296. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/tools/builtins/write_file.py +0 -0
  297. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/tools/session_update.py +0 -0
  298. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/utils.py +0 -0
  299. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/__init__.py +0 -0
  300. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/detectors.py +0 -0
  301. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/history.py +0 -0
  302. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/interventions.py +0 -0
  303. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/llm_analyzer.py +0 -0
  304. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/metrics.py +0 -0
  305. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/opus_escalator.py +0 -0
  306. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/persistence.py +0 -0
  307. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/policy.py +0 -0
  308. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/proposer.py +0 -0
  309. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/stager.py +0 -0
  310. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/task_classifier.py +0 -0
  311. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/tuning.py +0 -0
  312. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/validator.py +0 -0
  313. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/worker.py +0 -0
  314. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/__init__.py +0 -0
  315. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/autocompletion/__init__.py +0 -0
  316. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/autocompletion/base.py +0 -0
  317. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/autocompletion/path_completion.py +0 -0
  318. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/autocompletion/slash_command.py +0 -0
  319. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/cli.py +0 -0
  320. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/clipboard.py +0 -0
  321. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/commands.py +0 -0
  322. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/entrypoint.py +0 -0
  323. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/history_manager.py +0 -0
  324. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
  325. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
  326. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
  327. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/terminal_setup.py +0 -0
  328. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/__init__.py +0 -0
  329. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
  330. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/app.py +0 -0
  331. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/app.tcss +0 -0
  332. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/external_editor.py +0 -0
  333. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
  334. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/handlers/event_handler.py +0 -0
  335. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
  336. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/notifications/adapters/__init__.py +0 -0
  337. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
  338. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/notifications/ports/__init__.py +0 -0
  339. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
  340. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/__init__.py +0 -0
  341. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/approval_app.py +0 -0
  342. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
  343. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
  344. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
  345. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
  346. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
  347. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
  348. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
  349. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
  350. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
  351. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/checkpoint_picker.py +0 -0
  352. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/compact.py +0 -0
  353. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
  354. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
  355. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
  356. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/loading.py +0 -0
  357. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/messages.py +0 -0
  358. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
  359. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
  360. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
  361. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
  362. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
  363. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
  364. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
  365. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
  366. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
  367. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/tools.py +0 -0
  368. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
  369. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
  370. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/windowing/history.py +0 -0
  371. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
  372. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/windowing/state.py +0 -0
  373. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/update_notifier/__init__.py +0 -0
  374. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
  375. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
  376. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
  377. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
  378. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
  379. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/update_notifier/update.py +0 -0
  380. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/update_notifier/whats_new.py +0 -0
  381. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/__init__.py +0 -0
  382. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/agent_loop.py +0 -0
  383. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/agents/__init__.py +0 -0
  384. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/agents/manager.py +0 -0
  385. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/agents/models.py +0 -0
  386. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/auth/__init__.py +0 -0
  387. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/auth/crypto.py +0 -0
  388. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/auth/github.py +0 -0
  389. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/__init__.py +0 -0
  390. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/completers.py +0 -0
  391. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
  392. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
  393. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
  394. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/file_indexer/store.py +0 -0
  395. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
  396. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/fuzzy.py +0 -0
  397. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/path_prompt.py +0 -0
  398. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
  399. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/build_orchestrator.py +0 -0
  400. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/checkpoint.py +0 -0
  401. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/config/__init__.py +0 -0
  402. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/config/_settings.py +0 -0
  403. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/config/doctor.py +0 -0
  404. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/config/harness_files/__init__.py +0 -0
  405. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/config/harness_files/_harness_manager.py +0 -0
  406. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/config/harness_files/_paths.py +0 -0
  407. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/consultant.py +0 -0
  408. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/drydock_states.py +0 -0
  409. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/hooks.py +0 -0
  410. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/__init__.py +0 -0
  411. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/backend/anthropic.py +0 -0
  412. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/backend/base.py +0 -0
  413. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/backend/factory.py +0 -0
  414. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/backend/generic.py +0 -0
  415. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/backend/mistral.py +0 -0
  416. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
  417. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/backend/vertex.py +0 -0
  418. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/exceptions.py +0 -0
  419. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/format.py +0 -0
  420. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/message_utils.py +0 -0
  421. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/types.py +0 -0
  422. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/logger.py +0 -0
  423. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/middleware.py +0 -0
  424. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/output_formatters.py +0 -0
  425. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/paths/__init__.py +0 -0
  426. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/paths/_drydock_home.py +0 -0
  427. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/paths/_local_config_walk.py +0 -0
  428. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/paths/conventions.py +0 -0
  429. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/plan_session.py +0 -0
  430. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/plugins.py +0 -0
  431. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/programmatic.py +0 -0
  432. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/__init__.py +0 -0
  433. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/builder.md +0 -0
  434. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/cli.md +0 -0
  435. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/compact.md +0 -0
  436. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/dangerous_directory.md +0 -0
  437. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/diagnostic.md +0 -0
  438. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/explore.md +0 -0
  439. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/gemma4.md +0 -0
  440. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/planner.md +0 -0
  441. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/project_context.md +0 -0
  442. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/tests.md +0 -0
  443. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/proxy_setup.py +0 -0
  444. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/session/agent_memory.py +0 -0
  445. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/session/checkpoints.py +0 -0
  446. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/session/session_loader.py +0 -0
  447. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/session/session_logger.py +0 -0
  448. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/session/session_migration.py +0 -0
  449. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/session/state_file.py +0 -0
  450. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/session_checker.py +0 -0
  451. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/skills/__init__.py +0 -0
  452. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/skills/manager.py +0 -0
  453. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/skills/models.py +0 -0
  454. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/skills/parser.py +0 -0
  455. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/slug.py +0 -0
  456. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/system_prompt.py +0 -0
  457. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/telemetry/__init__.py +0 -0
  458. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/telemetry/send.py +0 -0
  459. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/teleport/errors.py +0 -0
  460. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/teleport/git.py +0 -0
  461. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/teleport/nuage.py +0 -0
  462. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/teleport/teleport.py +0 -0
  463. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/teleport/types.py +0 -0
  464. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/base.py +0 -0
  465. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/_task_manager.py +0 -0
  466. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/ask_user_question.py +0 -0
  467. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/bash.py +0 -0
  468. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/cron.py +0 -0
  469. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
  470. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/glob_tool.py +0 -0
  471. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/grep.py +0 -0
  472. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/invoke_skill.py +0 -0
  473. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/lsp.py +0 -0
  474. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/mcp_resources.py +0 -0
  475. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/notebook_edit.py +0 -0
  476. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/powershell.py +0 -0
  477. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/__init__.py +0 -0
  478. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
  479. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/bash.md +0 -0
  480. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/cron.md +0 -0
  481. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/glob.md +0 -0
  482. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/grep.md +0 -0
  483. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
  484. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
  485. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
  486. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
  487. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
  488. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
  489. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
  490. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
  491. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/task.md +0 -0
  492. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
  493. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/todo.md +0 -0
  494. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
  495. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
  496. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
  497. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
  498. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
  499. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/read_file.py +0 -0
  500. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/search_replace.py +0 -0
  501. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/task.py +0 -0
  502. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/todo.py +0 -0
  503. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/tool_search.py +0 -0
  504. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/webfetch.py +0 -0
  505. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/websearch.py +0 -0
  506. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/worktree.py +0 -0
  507. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/write_file.py +0 -0
  508. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/injection_guard.py +0 -0
  509. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/manager.py +0 -0
  510. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/mcp/__init__.py +0 -0
  511. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/mcp/registry.py +0 -0
  512. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/mcp/tools.py +0 -0
  513. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/mcp_sampling.py +0 -0
  514. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/ui.py +0 -0
  515. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/utils.py +0 -0
  516. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/trusted_folders.py +0 -0
  517. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/types.py +0 -0
  518. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/utils.py +0 -0
  519. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/onboarding/__init__.py +0 -0
  520. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/onboarding/base.py +0 -0
  521. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/onboarding/onboarding.tcss +0 -0
  522. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/onboarding/screens/__init__.py +0 -0
  523. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/onboarding/screens/api_key.py +0 -0
  524. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/onboarding/screens/choice.py +0 -0
  525. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/onboarding/screens/local_model.py +0 -0
  526. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/onboarding/screens/welcome.py +0 -0
  527. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
  528. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
  529. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/__init__.py +0 -0
  530. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/api-design/SKILL.md +0 -0
  531. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/audit-tests/SKILL.md +0 -0
  532. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/batch/SKILL.md +0 -0
  533. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/commit-code/SKILL.md +0 -0
  534. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/context-summary/SKILL.md +0 -0
  535. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/create-presentation/SKILL.md +0 -0
  536. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/deep-research/SKILL.md +0 -0
  537. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/deploy/SKILL.md +0 -0
  538. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/diff-review/SKILL.md +0 -0
  539. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/doc-gen/SKILL.md +0 -0
  540. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/explain-code/SKILL.md +0 -0
  541. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/explore-code/SKILL.md +0 -0
  542. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/fix-issue/SKILL.md +0 -0
  543. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/git-ops/SKILL.md +0 -0
  544. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/init-project/SKILL.md +0 -0
  545. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/investigate/SKILL.md +0 -0
  546. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/loop/SKILL.md +0 -0
  547. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/migrate/SKILL.md +0 -0
  548. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/perf-analyze/SKILL.md +0 -0
  549. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/plan-impl/SKILL.md +0 -0
  550. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/pr-review/SKILL.md +0 -0
  551. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/refactor/SKILL.md +0 -0
  552. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/regex-help/SKILL.md +0 -0
  553. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/review/SKILL.md +0 -0
  554. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/security-review/SKILL.md +0 -0
  555. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/ship/SKILL.md +0 -0
  556. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/simplify/SKILL.md +0 -0
  557. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/strong-tests/SKILL.md +0 -0
  558. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/test-verify/SKILL.md +0 -0
  559. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/whats_new.md +0 -0
  560. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock-acp.spec +0 -0
  561. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock_terms.md +0 -0
  562. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/flake.lock +0 -0
  563. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/flake.nix +0 -0
  564. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/README.md +0 -0
  565. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/config_base.toml +0 -0
  566. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/kernel.py +0 -0
  567. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/mini_prd.md +0 -0
  568. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/mini_prompts.txt +0 -0
  569. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/staged/exp_1776806574_0001.toml +0 -0
  570. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/staged/exp_1776806920_0002.toml +0 -0
  571. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/staged/exp_1776807004_0001.toml +0 -0
  572. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/staged/exp_1776807135_0001.toml +0 -0
  573. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/traces/exp_1776806574_0001/rec_check.jsonl +0 -0
  574. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/traces/exp_1776806574_0001/summary.json +0 -0
  575. /drydock_cli-2.7.0/tests/backend/__init__.py → /drydock_cli-2.7.1/research/traces/exp_1776807135_0001/rec_check.jsonl +0 -0
  576. /drydock_cli-2.7.0/tests/cli/textual_ui/__init__.py → /drydock_cli-2.7.1/research/traces/exp_1776807445_0002/rec_check.jsonl +0 -0
  577. /drydock_cli-2.7.0/tests/mock/__init__.py → /drydock_cli-2.7.1/research/traces/exp_1776807750_0003/rec_check.jsonl +0 -0
  578. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/README.md +0 -0
  579. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/admiral_probe.py +0 -0
  580. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/audit_sampler.py +0 -0
  581. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/auto_generate_tests.py +0 -0
  582. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/auto_release.sh +0 -0
  583. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/auto_test_loop.sh +0 -0
  584. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/backup.sh +0 -0
  585. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/bump_version.py +0 -0
  586. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/comprehensive_loop.py +0 -0
  587. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/deploy_to_github.sh +0 -0
  588. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/discover_cli_tools.sh +0 -0
  589. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/evolve_tests.py +0 -0
  590. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/gen_2000_prompts.py +0 -0
  591. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/install.sh +0 -0
  592. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/llm_balancer.py +0 -0
  593. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/mega_loop.py +0 -0
  594. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/meta_ralph_loop.py +0 -0
  595. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/monitor_swebench.sh +0 -0
  596. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/monitor_test_battery.sh +0 -0
  597. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/notify_release.py +0 -0
  598. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/oss_task_harness.py +0 -0
  599. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/overnight_agents_test.sh +0 -0
  600. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/poll_issues.sh +0 -0
  601. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/port_task.py +0 -0
  602. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/prepare_release.py +0 -0
  603. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/publish_to_pypi.sh +0 -0
  604. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/ralph_loop.py +0 -0
  605. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/session_loop_audit.py +0 -0
  606. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/shakedown.py +0 -0
  607. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/shakedown_interactive.py +0 -0
  608. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/shakedown_regression.sh +0 -0
  609. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/shakedown_suite.sh +0 -0
  610. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/shakedown_variance.sh +0 -0
  611. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/stress_babysitter.sh +0 -0
  612. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/stress_prompts_50.txt +0 -0
  613. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/stress_prompts_realuser.txt +0 -0
  614. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/stress_prompts_tool_agent.txt +0 -0
  615. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/stress_prompts_tool_agent_2000.txt +0 -0
  616. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/stress_shakedown.py +0 -0
  617. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/stress_telegram_status.py +0 -0
  618. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/stress_watcher.py +0 -0
  619. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/telegram_bot.py +0 -0
  620. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/test_bank.sh +0 -0
  621. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/test_full.sh +0 -0
  622. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/test_smoke.sh +0 -0
  623. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/test_tui_path.py +0 -0
  624. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/tui_test.py +0 -0
  625. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/vllm_failover.sh +0 -0
  626. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/__init__.py +0 -0
  627. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/conftest.py +0 -0
  628. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_acp.py +0 -0
  629. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_agent_thought.py +0 -0
  630. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_bash.py +0 -0
  631. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_compact_session_updates.py +0 -0
  632. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_content.py +0 -0
  633. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_initialize.py +0 -0
  634. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_list_sessions.py +0 -0
  635. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_load_session.py +0 -0
  636. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_multi_session.py +0 -0
  637. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_new_session.py +0 -0
  638. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_proxy_setup_acp.py +0 -0
  639. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_read_file.py +0 -0
  640. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_search_replace.py +0 -0
  641. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_set_config_option.py +0 -0
  642. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_set_mode.py +0 -0
  643. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_set_model.py +0 -0
  644. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_tool_call_session_update.py +0 -0
  645. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_utils.py +0 -0
  646. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_write_file.py +0 -0
  647. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/autocompletion/test_file_indexer.py +0 -0
  648. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/autocompletion/test_fuzzy.py +0 -0
  649. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
  650. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/autocompletion/test_path_completer_recursive.py +0 -0
  651. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/autocompletion/test_path_completion_controller.py +0 -0
  652. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
  653. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/autocompletion/test_slash_command_controller.py +0 -0
  654. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
  655. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/backend/data/__init__.py +0 -0
  656. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/backend/data/fireworks.py +0 -0
  657. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/backend/data/mistral.py +0 -0
  658. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/backend/test_anthropic_adapter.py +0 -0
  659. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/backend/test_backend.py +0 -0
  660. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/backend/test_reasoning_adapter.py +0 -0
  661. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
  662. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
  663. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
  664. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
  665. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_bell_notifications.py +0 -0
  666. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_braille_renderer.py +0 -0
  667. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_clipboard.py +0 -0
  668. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_commands.py +0 -0
  669. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_copy_shortcuts.py +0 -0
  670. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_external_editor.py +0 -0
  671. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_no_markup_static.py +0 -0
  672. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_question_app.py +0 -0
  673. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_spinner.py +0 -0
  674. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_switching_mode.py +0 -0
  675. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_ui_clipboard_notifications.py +0 -0
  676. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
  677. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_ui_session_resume.py +0 -0
  678. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_ui_skill_dispatch.py +0 -0
  679. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/textual_ui/test_session_picker.py +0 -0
  680. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/conftest.py +0 -0
  681. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_agents.py +0 -0
  682. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_auth_crypto.py +0 -0
  683. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_auth_github.py +0 -0
  684. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_config_load_dotenv.py +0 -0
  685. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_config_paths.py +0 -0
  686. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_config_resolution.py +0 -0
  687. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_file_logging.py +0 -0
  688. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_plan_session.py +0 -0
  689. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_proxy_setup.py +0 -0
  690. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_slug.py +0 -0
  691. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_telemetry_send.py +0 -0
  692. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_teleport_git.py +0 -0
  693. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_teleport_nuage.py +0 -0
  694. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_teleport_service.py +0 -0
  695. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_trusted_folders.py +0 -0
  696. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_utils.py +0 -0
  697. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/e2e/common.py +0 -0
  698. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/e2e/conftest.py +0 -0
  699. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/e2e/mock_server.py +0 -0
  700. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/e2e/test_cli_tui_onboarding.py +0 -0
  701. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/e2e/test_cli_tui_streaming.py +0 -0
  702. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
  703. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/fixtures/doc_qa_system_prd.md +0 -0
  704. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/mock/mock_backend_factory.py +0 -0
  705. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/mock/mock_entrypoint.py +0 -0
  706. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/mock/utils.py +0 -0
  707. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/onboarding/test_run_onboarding.py +0 -0
  708. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/onboarding/test_ui_onboarding.py +0 -0
  709. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/session/test_session_loader.py +0 -0
  710. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/session/test_session_logger.py +0 -0
  711. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/session/test_session_migration.py +0 -0
  712. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/skills/conftest.py +0 -0
  713. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/skills/test_manager.py +0 -0
  714. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/skills/test_models.py +0 -0
  715. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/skills/test_parser.py +0 -0
  716. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
  717. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
  718. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
  719. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_code_block_horizontal_scrolling/test_snapshot_allows_horizontal_scrolling_for_long_code_blocks.svg +0 -0
  720. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +0 -0
  721. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
  722. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
  723. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
  724. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
  725. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
  726. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
  727. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
  728. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
  729. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
  730. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
  731. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
  732. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
  733. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
  734. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
  735. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
  736. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
  737. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
  738. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
  739. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
  740. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
  741. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
  742. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
  743. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
  744. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
  745. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
  746. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
  747. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
  748. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
  749. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
  750. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
  751. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
  752. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
  753. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
  754. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
  755. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
  756. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
  757. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
  758. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
  759. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
  760. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
  761. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
  762. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
  763. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
  764. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
  765. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
  766. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
  767. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
  768. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
  769. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
  770. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
  771. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
  772. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
  773. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
  774. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
  775. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
  776. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/base_snapshot_test_app.py +0 -0
  777. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/conftest.py +0 -0
  778. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/snap_compare.py +0 -0
  779. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
  780. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
  781. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
  782. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
  783. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
  784. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
  785. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
  786. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
  787. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
  788. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
  789. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
  790. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
  791. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
  792. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
  793. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/stubs/fake_backend.py +0 -0
  794. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/stubs/fake_client.py +0 -0
  795. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/stubs/fake_tool.py +0 -0
  796. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_admiral.py +0 -0
  797. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_admiral_phase3.py +0 -0
  798. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_agent_auto_compact.py +0 -0
  799. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_agent_backend.py +0 -0
  800. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_agent_observer_streaming.py +0 -0
  801. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_agent_stats.py +0 -0
  802. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_agent_tasks.py +0 -0
  803. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_agent_tool_call.py +0 -0
  804. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_agents.py +0 -0
  805. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_bank_build.py +0 -0
  806. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_bank_debug.py +0 -0
  807. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_bank_multiagent.py +0 -0
  808. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_bank_prd.py +0 -0
  809. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_bank_prd_extended.py +0 -0
  810. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_bank_tools.py +0 -0
  811. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_bank_update.py +0 -0
  812. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_build_projects.py +0 -0
  813. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_checkpoint.py +0 -0
  814. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_cli_programmatic_preload.py +0 -0
  815. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_current_bugs.py +0 -0
  816. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_drydock_regression.py +0 -0
  817. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_drydock_tasks.py +0 -0
  818. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_full_regression.py +0 -0
  819. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_history_manager.py +0 -0
  820. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_integration.py +0 -0
  821. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_issue_fixes.py +0 -0
  822. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_loop_detection.py +0 -0
  823. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_message_id.py +0 -0
  824. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_message_merging.py +0 -0
  825. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_middleware.py +0 -0
  826. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_multi_agent.py +0 -0
  827. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_real_failures.py +0 -0
  828. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_real_issues.py +0 -0
  829. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_real_workflow.py +0 -0
  830. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_reasoning_content.py +0 -0
  831. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_smoke.py +0 -0
  832. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_system_prompt.py +0 -0
  833. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_tagged_text.py +0 -0
  834. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_tool_args.py +0 -0
  835. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_ui_external_editor.py +0 -0
  836. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_ui_input_history.py +0 -0
  837. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_user_issues.py +0 -0
  838. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_workloads.py +0 -0
  839. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/testbank_helpers.py +0 -0
  840. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_ask_user_question.py +0 -0
  841. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_bash.py +0 -0
  842. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_exit_plan_mode.py +0 -0
  843. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_grep.py +0 -0
  844. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_invoke_context.py +0 -0
  845. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_manager_get_tool_config.py +0 -0
  846. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_mcp.py +0 -0
  847. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_mcp_sampling.py +0 -0
  848. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_task.py +0 -0
  849. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_ui_bash_execution.py +0 -0
  850. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_webfetch.py +0 -0
  851. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_websearch.py +0 -0
  852. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
  853. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
  854. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/test_do_update.py +0 -0
  855. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
  856. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/test_github_update_gateway.py +0 -0
  857. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
  858. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/test_ui_update_notification.py +0 -0
  859. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/test_update_use_case.py +0 -0
  860. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/test_whats_new.py +0 -0
  861. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/uv.lock +0 -0
  862. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/worked_examples/README.md +0 -0
  863. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/worked_examples/cli_subcommand_dispatch.py +0 -0
  864. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/worked_examples/lookup.json +0 -0
  865. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/worked_examples/sql_parser.py +0 -0
  866. {drydock_cli-2.7.0 → drydock_cli-2.7.1}/worked_examples/tree_walking_interpreter.py +0 -0
@@ -0,0 +1 @@
1
+ 2859910
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: drydock-cli
3
- Version: 2.7.0
3
+ Version: 2.7.1
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "drydock-cli"
3
- version = "2.7.0"
3
+ version = "2.7.1"
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,147 @@
1
+ [target]
2
+ model = "mistral-vibe-cli-latest"
3
+ task = "unknown"
4
+
5
+ [[knob]]
6
+ name = "per_prompt_budget_sec"
7
+ default = 300
8
+ min = 300
9
+ max = 3600
10
+ mutable = true
11
+ why = "Hard ceiling on a single user turn. Too low wastes work; too high lets loops run wild."
12
+ value = 900
13
+
14
+ [[knob]]
15
+ name = "hard_stop_tool_calls"
16
+ default = 100
17
+ min = 30
18
+ max = 250
19
+ mutable = true
20
+ why = "HARD_STOP_CALLS in agent_loop. Cap on tool-call depth per user turn."
21
+
22
+ [[knob]]
23
+ name = "wrap_up_warn_at"
24
+ default = 40
25
+ min = 10
26
+ max = 100
27
+ mutable = true
28
+ why = "First progressive nudge. Earlier = tighter turns, may lose quality."
29
+
30
+ [[knob]]
31
+ name = "stop_now_warn_at"
32
+ default = 60
33
+ min = 20
34
+ max = 150
35
+ mutable = true
36
+ why = "Second progressive nudge. Gemma often ignores the wrap-up; this is the harder prod."
37
+
38
+ [[knob]]
39
+ name = "temperature"
40
+ default = 0.3
41
+ min = 0.0
42
+ max = 0.9
43
+ mutable = true
44
+ why = "Sampling temperature. Lower = more deterministic; higher = more exploration."
45
+ value = 0.1
46
+
47
+ [[knob]]
48
+ name = "loop_detector_window"
49
+ default = 3
50
+ min = 2
51
+ max = 6
52
+ mutable = true
53
+ why = "How many consecutive identical tool calls trigger the loop advisor."
54
+
55
+ [[knob]]
56
+ name = "struggle_threshold"
57
+ default = 20
58
+ min = 10
59
+ max = 40
60
+ mutable = true
61
+ why = "Reads-without-a-write before admiral fires the struggle directive."
62
+ value = 40
63
+
64
+ [env_flags]
65
+ DRYDOCK_AUTO_CONTINUE_DISABLE = "1"
66
+
67
+ [prompts.gemma4]
68
+ source_path = ""
69
+ mutable = true
70
+ why = "Single highest-leverage mutable target. Governs how Gemma 4 interprets every turn."
71
+
72
+ [prompts.cli]
73
+ source_path = ""
74
+ mutable = true
75
+ why = "Alternate non-Gemma system prompt. Rarely the right target but available for cross-model experiments."
76
+
77
+ [[harness_threshold]]
78
+ name = "MAX_CONSECUTIVE_SKIPS_BEFORE_RESET"
79
+ default = 2
80
+ min = 1
81
+ max = 5
82
+ mutable = true
83
+ why = "Force ESC+/clear after N consecutive SKIPs. Lower = aggressive recycling; higher = tolerant of transient wedges."
84
+
85
+ [[harness_threshold]]
86
+ name = "SESSION_RESET_EVERY"
87
+ default = 15
88
+ min = 5
89
+ max = 50
90
+ mutable = true
91
+ why = "Periodic /clear cadence in prompts. Tight cadence bounds context but costs reset overhead every N prompts."
92
+
93
+ [[harness_threshold]]
94
+ name = "SEND_PROMPT_RETRY_COUNT"
95
+ default = 3
96
+ min = 1
97
+ max = 6
98
+ mutable = true
99
+ why = "How many times send_prompt_and_confirm re-types before marking SKIP. Each retry is ~120s."
100
+
101
+ [[harness_threshold]]
102
+ name = "SEND_PROMPT_WAIT_PER_RETRY_SEC"
103
+ default = 120
104
+ min = 30
105
+ max = 300
106
+ mutable = true
107
+ why = "Seconds to wait for user-msg confirmation before retyping. Tighter = faster SKIP, may miss slow prompts."
108
+
109
+ [[admiral_detector]]
110
+ name = "REPEAT_WARNING_THRESHOLD"
111
+ default = 4
112
+ min = 2
113
+ max = 8
114
+ mutable = true
115
+ why = "Consecutive identical tool calls before a WARNING. Lower = early nudge; higher = tolerant of legit repetition."
116
+
117
+ [[admiral_detector]]
118
+ name = "REPEAT_FORCE_STOP_THRESHOLD"
119
+ default = 8
120
+ min = 4
121
+ max = 20
122
+ mutable = true
123
+ why = "Consecutive identical tool calls before FORCE_STOP. Must be >= REPEAT_WARNING_THRESHOLD."
124
+
125
+ [[admiral_detector]]
126
+ name = "EMPTY_RESULT_THRESHOLD"
127
+ default = 3
128
+ min = 2
129
+ max = 6
130
+ mutable = true
131
+ why = "Check 0 (empty-result loop). Fire FORCE_STOP after N identical-call + empty-result in a row."
132
+
133
+ [[admiral_detector]]
134
+ name = "SAME_TOOL_NAME_REPEAT_LIMIT_BASH"
135
+ default = 5
136
+ min = 3
137
+ max = 10
138
+ mutable = true
139
+ why = "Same-tool repetition limit for bash. Different from read/grep which need more headroom."
140
+
141
+ [[admiral_detector]]
142
+ name = "SAME_TOOL_NAME_REPEAT_LIMIT_READ"
143
+ default = 7
144
+ min = 4
145
+ max = 12
146
+ mutable = true
147
+ why = "Same-tool repetition limit for read_file + grep. Investigation tools legitimately repeat more."
@@ -4,6 +4,25 @@ Produced per stanford-iris-lab/meta-harness ONBOARDING.md template.
4
4
  First-cut spec; refine as the proposer exposes failure modes the
5
5
  current evaluation set doesn't distinguish.
6
6
 
7
+ ## Non-Negotiable: Air-Gap-Safe Proposer
8
+
9
+ Drydock's positioning is **self-hosted AI coding agents for air-gapped
10
+ and regulated environments** (defense/gov vertical, 90-day pilot plan).
11
+ That pitch collapses the moment any component — including the
12
+ self-tuning loop — phones home to a cloud LLM.
13
+
14
+ **The Meta-Harness proposer MUST use the local vLLM endpoint** (the
15
+ same one drydock's TUI uses). The `local` proposer mode is the
16
+ default in `experimenter.py` and `research_babysitter.sh`. The `opus`
17
+ mode exists for development when a stronger reasoner is convenient,
18
+ but it requires `DRYDOCK_RESEARCH_ALLOW_OPUS=1` to actually dispatch
19
+ cloud calls — otherwise it silently falls back to local.
20
+
21
+ Any future change that makes cloud the default (or silently enables
22
+ cloud without the explicit env var) is a regression. See
23
+ `research/proposer.py::propose` — the local-first dispatch is the
24
+ load-bearing guarantee.
25
+
7
26
  ## Domain Summary
8
27
 
9
28
  **What the user is trying to improve:** drydock's acceptance rate,
@@ -30,6 +30,7 @@ from __future__ import annotations
30
30
 
31
31
  import argparse
32
32
  import copy
33
+ import os
33
34
  import random
34
35
  import shutil
35
36
  import signal
@@ -158,22 +159,40 @@ def mutate_opus(cfg: dict) -> tuple[dict, str] | None:
158
159
  else:
159
160
  return None
160
161
 
162
+ # Label says "llm" to avoid implying we called Opus even in local
163
+ # mode (proposer transport chooses local-first when ALLOW_OPUS=0).
164
+ # Keeps the results.tsv "note" column truthful when read later.
161
165
  if target == "prompt":
162
166
  size = len(str(value))
163
- desc = f"opus prompt:{name} -> [{size} chars] ({reason})"
167
+ desc = f"llm prompt:{name} -> [{size} chars] ({reason})"
164
168
  else:
165
- desc = f"opus {target}:{name} -> {value} ({reason})"
169
+ desc = f"llm {target}:{name} -> {value} ({reason})"
166
170
  return new, desc
167
171
 
168
172
 
169
173
  def mutate(cfg: dict, rng: random.Random, mode: str) -> tuple[dict, str]:
170
- """Dispatch to the requested proposer. Opus mode falls back to
171
- random if the proposer doesn't deliver."""
172
- if mode == "opus":
173
- r = mutate_opus(cfg)
174
+ """Dispatch to the requested proposer. LLM modes fall back to
175
+ random if the proposer doesn't deliver.
176
+
177
+ `local` and `opus` share the same proposer code; the difference is
178
+ the transport (proposer.py decides based on
179
+ DRYDOCK_RESEARCH_ALLOW_OPUS). `opus` only contacts the cloud if
180
+ the operator explicitly set the env var; otherwise it behaves like
181
+ `local` (which calls the on-box vLLM endpoint).
182
+ """
183
+ if mode in ("opus", "local"):
184
+ # Hint to the proposer's transport preference via env var.
185
+ # propose() checks this before reaching for the cloud.
186
+ if mode == "opus":
187
+ os.environ["DRYDOCK_RESEARCH_ALLOW_OPUS"] = "1"
188
+ else:
189
+ # Local mode: disable cloud fallback regardless of ambient env.
190
+ os.environ["DRYDOCK_RESEARCH_ALLOW_OPUS"] = "0"
191
+ r = mutate_opus(cfg) # function name is historical; contract unchanged
174
192
  if r is not None:
175
193
  return r
176
- print(" opus mutator returned nothing; falling back to random", flush=True)
194
+ print(f" {mode} mutator returned nothing; falling back to random",
195
+ flush=True)
177
196
  return mutate_random(cfg, rng)
178
197
 
179
198
 
@@ -264,12 +283,22 @@ def main() -> int:
264
283
  ap.add_argument("--cooldown-s", type=float, default=10.0,
265
284
  help="Sleep between experiments (lets GPU settle).")
266
285
  ap.add_argument("--results-tsv", type=Path, default=DEFAULT_RESULTS)
267
- ap.add_argument("--proposer", choices=("random", "opus"),
268
- default="random",
269
- help="random = bounded uniform + nudge sampling. "
270
- "opus = Meta-Harness-style LLM proposer using "
271
- "ANTHROPIC_API_KEY or the `claude` CLI; falls "
272
- "back to random on any failure.")
286
+ ap.add_argument("--proposer", choices=("random", "local", "opus"),
287
+ default="local",
288
+ help="local = Meta-Harness LLM proposer against the "
289
+ "local vLLM endpoint (drydock's own model). "
290
+ "THIS IS THE DEFAULT. Keeps the self-tuning loop "
291
+ "air-gap-safe matches the 'self-hosted agents "
292
+ "for regulated environments' positioning. "
293
+ "random = bounded uniform + nudge sampling, no "
294
+ "LLM involved. "
295
+ "opus = cloud proposer via ANTHROPIC_API_KEY or "
296
+ "the `claude` CLI — NOT AIRGAP-SAFE; only use "
297
+ "for development when you want a smarter "
298
+ "reasoner. Also requires setting env "
299
+ "DRYDOCK_RESEARCH_ALLOW_OPUS=1 to actually "
300
+ "dispatch cloud calls. Falls back to random "
301
+ "otherwise.")
273
302
  args = ap.parse_args()
274
303
 
275
304
  signal.signal(signal.SIGTERM, _handle_signal)
@@ -49,11 +49,58 @@ RESEARCH_DIR = Path(__file__).resolve().parent
49
49
  DRYDOCK_ROOT = RESEARCH_DIR.parent # /data3/drydock — repo root
50
50
  OPUS_MODEL = "claude-opus-4-7"
51
51
  OPUS_TIMEOUT_SEC = 120
52
+ # Local proposer endpoint. Defaults to the same balancer drydock uses
53
+ # so the proposer is air-gap-compatible — the whole pitch collapses
54
+ # if the self-tuning loop phones home.
55
+ LOCAL_ENDPOINT = os.environ.get("DRYDOCK_RESEARCH_PROPOSER_URL",
56
+ "http://localhost:8001/v1")
57
+ LOCAL_MODEL = os.environ.get("DRYDOCK_RESEARCH_PROPOSER_MODEL", "gemma4")
58
+ LOCAL_TIMEOUT_SEC = 180 # Gemma 4 thinks longer than Opus
52
59
  MAX_TRACES_EACH_SIDE = 3 # top-N + bottom-N contrastive
53
60
  MAX_TRACE_MESSAGES_CHARS = 4000 # truncate each trace's messages to this
54
61
  MAX_SOURCE_EXCERPT_CHARS = 8000 # truncate agent_loop.py to this
55
62
 
56
63
 
64
+ def _try_local_llm(prompt: str) -> str | None:
65
+ """Call the local vLLM endpoint. OpenAI-compatible chat completions.
66
+
67
+ Default proposer transport for air-gap-safe operation. A defense/gov
68
+ prospect cannot use a self-tuning loop that phones home to Anthropic;
69
+ the whole self-tuning pitch collapses the moment a remote API shows
70
+ up in the loop.
71
+
72
+ Uses `httpx` directly (already a drydock transitive dep) rather than
73
+ pulling in the `openai` SDK. Endpoint from
74
+ DRYDOCK_RESEARCH_PROPOSER_URL; model from
75
+ DRYDOCK_RESEARCH_PROPOSER_MODEL (default 'gemma4').
76
+ """
77
+ try:
78
+ import httpx
79
+ except ImportError:
80
+ print(" proposer: httpx not available — cannot call local LLM",
81
+ file=sys.stderr)
82
+ return None
83
+ url = LOCAL_ENDPOINT.rstrip("/") + "/chat/completions"
84
+ payload = {
85
+ "model": LOCAL_MODEL,
86
+ "max_tokens": 1200,
87
+ "messages": [{"role": "user", "content": prompt}],
88
+ }
89
+ try:
90
+ r = httpx.post(url, json=payload, timeout=LOCAL_TIMEOUT_SEC)
91
+ r.raise_for_status()
92
+ data = r.json()
93
+ choices = data.get("choices") or []
94
+ if not choices:
95
+ return None
96
+ msg = choices[0].get("message") or {}
97
+ content = (msg.get("content") or "").strip()
98
+ return content or None
99
+ except Exception as e:
100
+ print(f" proposer: local LLM call failed: {e}", file=sys.stderr)
101
+ return None
102
+
103
+
57
104
  def _try_anthropic_sdk(prompt: str) -> str | None:
58
105
  api_key = os.getenv("ANTHROPIC_API_KEY")
59
106
  if not api_key:
@@ -307,7 +354,17 @@ def propose(config_base_path: Path, config_best_path: Path | None,
307
354
 
308
355
  prompt = _build_prompt(config_base, config_best, ranked)
309
356
 
310
- response = _try_anthropic_sdk(prompt) or _try_claude_cli(prompt)
357
+ # Local-first is non-negotiable: the defense/gov pitch (air-gapped
358
+ # self-tuning agents) collapses the moment the proposer phones home.
359
+ # Only fall back to Opus / Claude CLI if DRYDOCK_RESEARCH_ALLOW_OPUS=1
360
+ # is explicitly set AND the local endpoint returned nothing useful.
361
+ # The experimenter's default (--proposer local) skips opus entirely.
362
+ response = _try_local_llm(prompt)
363
+ if not response and os.environ.get("DRYDOCK_RESEARCH_ALLOW_OPUS") == "1":
364
+ print(" proposer: local returned nothing, falling back to cloud "
365
+ "(DRYDOCK_RESEARCH_ALLOW_OPUS=1). This is NOT airgap-safe.",
366
+ file=sys.stderr)
367
+ response = _try_anthropic_sdk(prompt) or _try_claude_cli(prompt)
311
368
  if not response:
312
369
  print(" proposer: no response from Opus", file=sys.stderr)
313
370
  return None
@@ -0,0 +1,45 @@
1
+ ts exp_id git_commit config_sha metric done skip timeout recycle elapsed_s note
2
+ 1776806910 exp_1776806574_0001 74075e4 81d102021a 0.000 0 6 0 0 329.5 opus knob:per_prompt_budget_sec -> 600 (No trace history yet. Seed search from a tighter per-turn budget (600s vs defaul
3
+ 1776807435 exp_1776807135_0001 ec58651 4c88fdcfdf 4.486 22 0 0 0 294.3 opus knob:per_prompt_budget_sec -> 900 (Only seed run used 600s and got 0 done / 6 skipped in 329s — prompts skipping be
4
+ 1776807740 exp_1776807445_0002 ec58651 1124958468 4.167 20 0 0 0 288.0 opus knob:stop_now_warn_at -> 50 (Top run (22 done, 0 skips, 294s) stayed well under hard_stop=100. Tighten second-nudge
5
+ 1776808088 exp_1776807750_0003 ec58651 368e85f341 4.528 22 0 0 0 291.5 opus knob:temperature -> 0.1 (Both top runs (4.486, 4.167) finished 20-22 prompts with 0 skips and hit 288-294s on the 3
6
+ 1776808481 exp_1776808098_0004 ec58651 6523365e69 4.142 20 0 0 0 289.7 opus harness_threshold:SESSION_RESET_EVERY -> 25 (Top runs finish 20-22 prompts in 287-294s bounded by elapsed cap, not
7
+ 1776808822 exp_1776808492_0005 ec58651 f06cf95f58 4.123 20 0 0 0 291.0 opus knob:temperature -> 0.0 (All 3 top runs bounded by 5min elapsed cap (287-294s), 0 skips. 0.3→0.1 mutation already i
8
+ 1776820643 exp_1776820249_0001 940ce5c 4fdd88a7ef 4.512 22 0 0 0 292.6 opus knob:wrap_up_warn_at -> 100 (Every trace tail shows 'Previous turn ended; awaiting your next instruction.' after ~4
9
+ 1776821009 exp_1776820673_0002 940ce5c 936650dbd3 4.492 22 0 0 0 293.9 opus knob:stop_now_warn_at -> 150 (Every trace tail (top AND bottom) shows 'Previous turn ended; awaiting your next inst
10
+ 1776821447 exp_1776821040_0003 940ce5c 4885d356ac 4.490 22 0 0 0 294.0 opus knob:struggle_threshold -> 40 (All top traces show 'Previous turn ended; awaiting your next instruction.' hijacking
11
+ 1776821824 exp_1776821477_0004 940ce5c 4885d356ac 4.725 23 0 0 0 292.1 opus knob:struggle_threshold -> 40 (Every trace tail shows 'Previous turn ended; awaiting your next instruction.' hijack
12
+ 1776822239 exp_1776821854_0005 940ce5c b8de17fe55 4.653 23 0 0 0 296.6 opus knob:wrap_up_warn_at -> 100 (Traces show 'Previous turn ended' hijack fires at ~40 tool calls across all runs. exp_
13
+ 1776822665 exp_1776822269_0006 940ce5c cd348b52aa 3.935 19 0 0 0 289.7 opus knob:stop_now_warn_at -> 150 (Every top+bottom trace tail shows admiral's 'Previous turn ended; awaiting your next
14
+ 1776823108 exp_1776822696_0007 940ce5c 57b880a66e 4.104 20 0 0 0 292.4 random stop_now_warn_at: 60.0 -> 64
15
+ 1776823555 exp_1776823138_0008 940ce5c 399281d361 4.258 21 0 0 0 295.9 random temperature: 0.1 -> 0.867
16
+ 1776823914 exp_1776823585_0009 940ce5c 31699d8902 4.607 22 0 0 0 286.5 opus admiral_detector:SAME_TOOL_NAME_REPEAT_LIMIT_BASH -> 10 (Stress prompts are simple Q&A (sha1sum, rot13, rev, wc, et
17
+ 1776824309 exp_1776823944_0010 940ce5c 31699d8902 4.110 20 0 0 0 292.0 opus admiral_detector:SAME_TOOL_NAME_REPEAT_LIMIT_BASH -> 10 (exp_0009 (4.61) proved BASH=10 fixes 'Previous turn ended'
18
+ 1776824751 exp_1776824339_0011 940ce5c c8a775a416 4.517 22 0 0 0 292.2 random loop_detector_window: 3.0 -> 3
19
+ 1776825463 exp_1776825164_0001 7f5e6d8 b8de17fe55 4.558 22 0 0 0 289.6 opus knob:wrap_up_warn_at -> 100 (Traces show a 'Previous turn ended' hijack mid-session after ~40 tool calls. Top perfo
20
+ 1776825794 exp_1776825493_0002 7f5e6d8 b8de17fe55 4.121 20 0 0 0 291.2 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, exp_0005) use higher wrap_up_warn_at values to prevent the '
21
+ 1776826116 exp_1776825824_0003 7f5e6d8 b8de17fe55 4.127 20 0 0 0 290.8 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) consistently push wrap_up_warn_at higher to delay the
22
+ 1776826437 exp_1776826146_0004 7f5e6d8 b8de17fe55 4.569 22 0 0 0 288.9 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) both increased wrap_up_warn_at to 100 to delay the 'Pr
23
+ 1776826766 exp_1776826467_0005 7f5e6d8 31699d8902 4.282 21 0 0 0 294.2 opus admiral_detector:SAME_TOOL_NAME_REPEAT_LIMIT_BASH -> 10 (Trace contrast shows BASH=10 (exp_0009) outperforms BASH=5
24
+ 1776827100 exp_1776826797_0006 7f5e6d8 b8de17fe55 3.935 19 0 0 0 289.7 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, exp_0005) use wrap_up=100 to prevent the 'Previous turn ende
25
+ 1776827425 exp_1776827130_0007 7f5e6d8 b8de17fe55 4.557 22 0 0 0 289.7 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) use higher wrap_up_warn_at to prevent the 'Previous tu
26
+ 1776827746 exp_1776827455_0008 7f5e6d8 31699d8902 4.615 22 0 0 0 286.0 opus admiral_detector:SAME_TOOL_NAME_REPEAT_LIMIT_BASH -> 10 (Top performers (exp_0009) used BASH=10 to prevent 'Previou
27
+ 1776828077 exp_1776827776_0009 7f5e6d8 6cc8996dd4 4.525 22 0 0 0 291.7 random temperature: 0.1 -> 0.76
28
+ 1776828409 exp_1776828107_0010 7f5e6d8 31699d8902 4.519 22 0 0 0 292.1 opus admiral_detector:SAME_TOOL_NAME_REPEAT_LIMIT_BASH -> 10 (Top performers (exp_0008, 0004) avoid 'Previous turn ended
29
+ 1776828730 exp_1776828439_0011 7f5e6d8 1521a6d5df 4.192 20 0 0 0 286.3 opus knob:struggle_threshold -> 30 (Top performers (exp_0004, 0005) show 'Previous turn ended' hijacks after ~20-40 read
30
+ 1776829054 exp_1776828760_0012 7f5e6d8 4885d356ac 4.149 20 0 0 0 289.2 opus knob:struggle_threshold -> 40 (Top performers (exp_0004, 0005) use struggle_threshold=40 to prevent 'Previous turn
31
+ 1776829384 exp_1776829085_0013 7f5e6d8 b8de17fe55 4.687 23 0 0 0 294.4 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) delay the 'Previous turn ended' hijack by increasing w
32
+ 1776829720 exp_1776829414_0014 7f5e6d8 b8de17fe55 4.053 20 0 0 0 296.1 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005, 0013) all set wrap_up_warn_at to 100 to delay the 'Pre
33
+ 1776830052 exp_1776829750_0015 7f5e6d8 b8de17fe55 4.099 20 0 0 0 292.7 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) delay the 'Previous turn ended' hijack by increasing w
34
+ 1776830372 exp_1776830082_0016 7f5e6d8 b8de17fe55 3.970 19 0 0 0 287.1 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) show that increasing wrap_up_warn_at to 100 delays the
35
+ 1776830696 exp_1776830402_0017 7f5e6d8 b8de17fe55 4.141 20 0 0 0 289.8 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) delay the 'Previous turn ended' hijack by increasing w
36
+ 1776831016 exp_1776830726_0018 7f5e6d8 b8de17fe55 4.167 20 0 0 0 288.0 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) both increased wrap_up_warn_at to 100 to delay the 'Pr
37
+ 1776831339 exp_1776831046_0019 7f5e6d8 7afdaaa642 4.569 22 0 0 0 288.9 random stop_now_warn_at: 60.0 -> 47
38
+ 1776831670 exp_1776831369_0020 7f5e6d8 b8de17fe55 3.849 19 1 0 0 296.1 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) demonstrate that increasing wrap_up_warn_at to 100 pre
39
+ 1776832006 exp_1776831700_0021 7f5e6d8 b8de17fe55 4.050 20 0 0 0 296.3 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) show 'Previous turn ended' hijacks after ~40 tool call
40
+ 1776832324 exp_1776832036_0022 7f5e6d8 b8de17fe55 4.196 20 0 0 0 286.0 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) delay the 'Previous turn ended' hijack by increasing w
41
+ 1776832649 exp_1776832354_0023 7f5e6d8 b8de17fe55 4.519 22 0 0 0 292.1 opus knob:wrap_up_warn_at -> 100 (Trace contrast shows the 'Previous turn ended' hijack occurs around 40 tool calls. Inc
42
+ 1776832972 exp_1776832680_0024 7f5e6d8 b8de17fe55 4.173 20 0 0 0 287.6 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) delay the 'Previous turn ended' hijack by increasing w
43
+ 1776833298 exp_1776833002_0025 7f5e6d8 b8de17fe55 4.542 22 0 0 0 290.6 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) both increased wrap_up_warn_at to 100 to delay the 'Pr
44
+ 1776833622 exp_1776833328_0026 7f5e6d8 b8de17fe55 4.567 22 0 0 0 289.0 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) delay the 'Previous turn ended' hijack by increasing w
45
+ 1776833946 exp_1776833652_0027 7f5e6d8 b8de17fe55 4.146 20 0 0 0 289.4 opus knob:wrap_up_warn_at -> 100 (Trace analysis shows 'Previous turn ended' hijacking occurs at ~40 tool calls. Increas
@@ -9,7 +9,7 @@ min = 300
9
9
  max = 3600
10
10
  mutable = true
11
11
  why = "Hard ceiling on a single user turn. Too low wastes work; too high lets loops run wild."
12
- value = 600
12
+ value = 900
13
13
 
14
14
  [[knob]]
15
15
  name = "hard_stop_tool_calls"
@@ -34,6 +34,7 @@ min = 20
34
34
  max = 150
35
35
  mutable = true
36
36
  why = "Second progressive nudge. Gemma often ignores the wrap-up; this is the harder prod."
37
+ value = 50
37
38
 
38
39
  [[knob]]
39
40
  name = "temperature"
@@ -0,0 +1,146 @@
1
+ [target]
2
+ model = "mistral-vibe-cli-latest"
3
+ task = "unknown"
4
+
5
+ [[knob]]
6
+ name = "per_prompt_budget_sec"
7
+ default = 300
8
+ min = 300
9
+ max = 3600
10
+ mutable = true
11
+ why = "Hard ceiling on a single user turn. Too low wastes work; too high lets loops run wild."
12
+ value = 900
13
+
14
+ [[knob]]
15
+ name = "hard_stop_tool_calls"
16
+ default = 100
17
+ min = 30
18
+ max = 250
19
+ mutable = true
20
+ why = "HARD_STOP_CALLS in agent_loop. Cap on tool-call depth per user turn."
21
+
22
+ [[knob]]
23
+ name = "wrap_up_warn_at"
24
+ default = 40
25
+ min = 10
26
+ max = 100
27
+ mutable = true
28
+ why = "First progressive nudge. Earlier = tighter turns, may lose quality."
29
+
30
+ [[knob]]
31
+ name = "stop_now_warn_at"
32
+ default = 60
33
+ min = 20
34
+ max = 150
35
+ mutable = true
36
+ why = "Second progressive nudge. Gemma often ignores the wrap-up; this is the harder prod."
37
+
38
+ [[knob]]
39
+ name = "temperature"
40
+ default = 0.3
41
+ min = 0.0
42
+ max = 0.9
43
+ mutable = true
44
+ why = "Sampling temperature. Lower = more deterministic; higher = more exploration."
45
+ value = 0.1
46
+
47
+ [[knob]]
48
+ name = "loop_detector_window"
49
+ default = 3
50
+ min = 2
51
+ max = 6
52
+ mutable = true
53
+ why = "How many consecutive identical tool calls trigger the loop advisor."
54
+
55
+ [[knob]]
56
+ name = "struggle_threshold"
57
+ default = 20
58
+ min = 10
59
+ max = 40
60
+ mutable = true
61
+ why = "Reads-without-a-write before admiral fires the struggle directive."
62
+
63
+ [env_flags]
64
+ DRYDOCK_AUTO_CONTINUE_DISABLE = "1"
65
+
66
+ [prompts.gemma4]
67
+ source_path = ""
68
+ mutable = true
69
+ why = "Single highest-leverage mutable target. Governs how Gemma 4 interprets every turn."
70
+
71
+ [prompts.cli]
72
+ source_path = ""
73
+ mutable = true
74
+ why = "Alternate non-Gemma system prompt. Rarely the right target but available for cross-model experiments."
75
+
76
+ [[harness_threshold]]
77
+ name = "MAX_CONSECUTIVE_SKIPS_BEFORE_RESET"
78
+ default = 2
79
+ min = 1
80
+ max = 5
81
+ mutable = true
82
+ why = "Force ESC+/clear after N consecutive SKIPs. Lower = aggressive recycling; higher = tolerant of transient wedges."
83
+
84
+ [[harness_threshold]]
85
+ name = "SESSION_RESET_EVERY"
86
+ default = 15
87
+ min = 5
88
+ max = 50
89
+ mutable = true
90
+ why = "Periodic /clear cadence in prompts. Tight cadence bounds context but costs reset overhead every N prompts."
91
+
92
+ [[harness_threshold]]
93
+ name = "SEND_PROMPT_RETRY_COUNT"
94
+ default = 3
95
+ min = 1
96
+ max = 6
97
+ mutable = true
98
+ why = "How many times send_prompt_and_confirm re-types before marking SKIP. Each retry is ~120s."
99
+
100
+ [[harness_threshold]]
101
+ name = "SEND_PROMPT_WAIT_PER_RETRY_SEC"
102
+ default = 120
103
+ min = 30
104
+ max = 300
105
+ mutable = true
106
+ why = "Seconds to wait for user-msg confirmation before retyping. Tighter = faster SKIP, may miss slow prompts."
107
+
108
+ [[admiral_detector]]
109
+ name = "REPEAT_WARNING_THRESHOLD"
110
+ default = 4
111
+ min = 2
112
+ max = 8
113
+ mutable = true
114
+ why = "Consecutive identical tool calls before a WARNING. Lower = early nudge; higher = tolerant of legit repetition."
115
+
116
+ [[admiral_detector]]
117
+ name = "REPEAT_FORCE_STOP_THRESHOLD"
118
+ default = 8
119
+ min = 4
120
+ max = 20
121
+ mutable = true
122
+ why = "Consecutive identical tool calls before FORCE_STOP. Must be >= REPEAT_WARNING_THRESHOLD."
123
+
124
+ [[admiral_detector]]
125
+ name = "EMPTY_RESULT_THRESHOLD"
126
+ default = 3
127
+ min = 2
128
+ max = 6
129
+ mutable = true
130
+ why = "Check 0 (empty-result loop). Fire FORCE_STOP after N identical-call + empty-result in a row."
131
+
132
+ [[admiral_detector]]
133
+ name = "SAME_TOOL_NAME_REPEAT_LIMIT_BASH"
134
+ default = 5
135
+ min = 3
136
+ max = 10
137
+ mutable = true
138
+ why = "Same-tool repetition limit for bash. Different from read/grep which need more headroom."
139
+
140
+ [[admiral_detector]]
141
+ name = "SAME_TOOL_NAME_REPEAT_LIMIT_READ"
142
+ default = 7
143
+ min = 4
144
+ max = 12
145
+ mutable = true
146
+ why = "Same-tool repetition limit for read_file + grep. Investigation tools legitimately repeat more."