brigade-cli 0.28.0__tar.gz → 0.30.0__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 (1563) hide show
  1. brigade_cli-0.30.0/PKG-INFO +214 -0
  2. brigade_cli-0.30.0/QUICKSTART.md +367 -0
  3. brigade_cli-0.30.0/README.md +165 -0
  4. brigade_cli-0.30.0/pyproject.toml +116 -0
  5. brigade_cli-0.30.0/src/brigade/__init__.py +3 -0
  6. brigade_cli-0.30.0/src/brigade/__main__.py +6 -0
  7. brigade_cli-0.30.0/src/brigade/center_cmd/dashboard/render.py +119 -0
  8. brigade_cli-0.30.0/src/brigade/claude_hooks/anchored_io.py +433 -0
  9. brigade_cli-0.30.0/src/brigade/cli/__init__.py +279 -0
  10. brigade_cli-0.30.0/src/brigade/cli/fleet_owners.py +25 -0
  11. brigade_cli-0.30.0/src/brigade/cli/fleet_policy.py +501 -0
  12. brigade_cli-0.30.0/src/brigade/cli/run_cloud.py +1861 -0
  13. brigade_cli-0.30.0/src/brigade/cloud_provider_pr.py +98 -0
  14. brigade_cli-0.30.0/src/brigade/cloud_tracker.py +1951 -0
  15. brigade_cli-0.30.0/src/brigade/cursor_cloud.py +577 -0
  16. brigade_cli-0.30.0/src/brigade/distribution.py +7 -0
  17. brigade_cli-0.30.0/src/brigade/dot/__main__.py +136 -0
  18. brigade_cli-0.30.0/src/brigade/dot/lifecycle.py +484 -0
  19. brigade_cli-0.30.0/src/brigade/dot/process.py +354 -0
  20. brigade_cli-0.30.0/src/brigade/dot/runtime_config.py +291 -0
  21. brigade_cli-0.30.0/src/brigade/dot/safe_state.py +311 -0
  22. brigade_cli-0.30.0/src/brigade/dot/watch.py +326 -0
  23. brigade_cli-0.30.0/src/brigade/fleet_client.py +2000 -0
  24. brigade_cli-0.30.0/src/brigade/fleet_client_cloud.py +709 -0
  25. brigade_cli-0.30.0/src/brigade/fleet_client_policy.py +406 -0
  26. brigade_cli-0.30.0/src/brigade/fleet_client_spool.py +103 -0
  27. brigade_cli-0.30.0/src/brigade/fleet_command_deck.py +1765 -0
  28. brigade_cli-0.30.0/src/brigade/fleet_dashboard.py +976 -0
  29. brigade_cli-0.30.0/src/brigade/fleet_deck_overview.py +709 -0
  30. brigade_cli-0.30.0/src/brigade/fleet_deck_shell.py +79 -0
  31. brigade_cli-0.30.0/src/brigade/fleet_hub.py +1916 -0
  32. brigade_cli-0.30.0/src/brigade/fleet_hub_http.py +1874 -0
  33. brigade_cli-0.30.0/src/brigade/fleet_hub_roster_page.py +789 -0
  34. brigade_cli-0.30.0/src/brigade/fleet_hub_routing.py +1849 -0
  35. brigade_cli-0.30.0/src/brigade/fleet_owners.py +353 -0
  36. brigade_cli-0.30.0/src/brigade/fleet_owners_page.py +147 -0
  37. brigade_cli-0.30.0/src/brigade/fleet_policy.py +1218 -0
  38. brigade_cli-0.30.0/src/brigade/fleet_policy_owners.py +80 -0
  39. brigade_cli-0.30.0/src/brigade/fleet_policy_page.py +1896 -0
  40. brigade_cli-0.30.0/src/brigade/fleet_repo_policy_page.py +393 -0
  41. brigade_cli-0.30.0/src/brigade/fleet_t3_transport.py +1009 -0
  42. brigade_cli-0.30.0/src/brigade/fleet_work_page.py +226 -0
  43. brigade_cli-0.30.0/src/brigade/grokbot_packs.py +1648 -0
  44. brigade_cli-0.30.0/src/brigade/grokbot_t3/__main__.py +57 -0
  45. brigade_cli-0.30.0/src/brigade/grokbot_t3/contracts.py +274 -0
  46. brigade_cli-0.30.0/src/brigade/grokbot_t3/ledger.py +329 -0
  47. brigade_cli-0.30.0/src/brigade/grokbot_t3/lifecycle.py +618 -0
  48. brigade_cli-0.30.0/src/brigade/grokbot_t3/runtime_config.py +245 -0
  49. brigade_cli-0.30.0/src/brigade/grokbot_t3/watch.py +229 -0
  50. brigade_cli-0.30.0/src/brigade/jules_cloud.py +982 -0
  51. brigade_cli-0.30.0/src/brigade/templates/components/manifest-v1.json +214 -0
  52. brigade_cli-0.30.0/src/brigade/templates/hermes/memory-handoff.harness.json +36 -0
  53. brigade_cli-0.30.0/src/brigade/templates/hermes/model-lanes.harness.json +17 -0
  54. brigade_cli-0.30.0/src/brigade/templates/hermes/workspace.harness.json +30 -0
  55. brigade_cli-0.30.0/src/brigade/templates/memory/chat-memory-sweep.example.json +131 -0
  56. brigade_cli-0.30.0/src/brigade/templates/memory/memory-care.example.json +11 -0
  57. brigade_cli-0.30.0/src/brigade/templates/policies/personal.json +28 -0
  58. brigade_cli-0.30.0/src/brigade/templates/policies/public-content.json +28 -0
  59. brigade_cli-0.30.0/src/brigade/templates/policies/public-repo.json +27 -0
  60. brigade_cli-0.30.0/src/brigade/templates/template-profile-snapshot.json +888 -0
  61. brigade_cli-0.30.0/src/brigade/ui_theme.py +338 -0
  62. brigade_cli-0.30.0/src/brigade/update_cmd.py +683 -0
  63. brigade_cli-0.30.0/src/brigade/update_notify.py +201 -0
  64. brigade_cli-0.30.0/src/brigade/work_cmd/session/briefing.py +1304 -0
  65. brigade_cli-0.30.0/src/brigade/work_cmd/verification.py +2343 -0
  66. brigade_cli-0.30.0/src/brigade/work_cmd/verify_reaper.py +116 -0
  67. brigade_cli-0.30.0/src/brigade/work_cmd/verify_runtime.py +351 -0
  68. brigade_cli-0.30.0/src/brigade_cli.egg-info/PKG-INFO +214 -0
  69. brigade_cli-0.30.0/src/brigade_cli.egg-info/SOURCES.txt +1450 -0
  70. brigade_cli-0.30.0/src/brigade_cli.egg-info/entry_points.txt +3 -0
  71. brigade_cli-0.30.0/tests/test_ci_workflow.py +1741 -0
  72. brigade_cli-0.30.0/tests/test_claude_hooks_latch_race.py +1117 -0
  73. brigade_cli-0.30.0/tests/test_claude_hooks_state_containment.py +599 -0
  74. brigade_cli-0.30.0/tests/test_cloud_bound_ttl.py +184 -0
  75. brigade_cli-0.30.0/tests/test_cloud_jules_pr.py +202 -0
  76. brigade_cli-0.30.0/tests/test_control_crosswalk.py +4700 -0
  77. brigade_cli-0.30.0/tests/test_cursor_cloud.py +994 -0
  78. brigade_cli-0.30.0/tests/test_dot_access_auth.py +559 -0
  79. brigade_cli-0.30.0/tests/test_dot_adapter.py +365 -0
  80. brigade_cli-0.30.0/tests/test_dot_compat.py +153 -0
  81. brigade_cli-0.30.0/tests/test_dot_events.py +567 -0
  82. brigade_cli-0.30.0/tests/test_dot_fleet_tools.py +511 -0
  83. brigade_cli-0.30.0/tests/test_dot_hub_tools.py +662 -0
  84. brigade_cli-0.30.0/tests/test_dot_inbox_tools.py +762 -0
  85. brigade_cli-0.30.0/tests/test_dot_lifecycle.py +594 -0
  86. brigade_cli-0.30.0/tests/test_dot_memory_tools.py +195 -0
  87. brigade_cli-0.30.0/tests/test_dot_process.py +199 -0
  88. brigade_cli-0.30.0/tests/test_dot_runtime.py +259 -0
  89. brigade_cli-0.30.0/tests/test_dot_state.py +187 -0
  90. brigade_cli-0.30.0/tests/test_dot_watch.py +233 -0
  91. brigade_cli-0.30.0/tests/test_download_metrics.py +322 -0
  92. brigade_cli-0.30.0/tests/test_error_refusal_copy.py +312 -0
  93. brigade_cli-0.30.0/tests/test_fleet_claim_loss_cancellation.py +214 -0
  94. brigade_cli-0.30.0/tests/test_fleet_claims.py +3633 -0
  95. brigade_cli-0.30.0/tests/test_fleet_client_hardening.py +506 -0
  96. brigade_cli-0.30.0/tests/test_fleet_client_message_credentials.py +599 -0
  97. brigade_cli-0.30.0/tests/test_fleet_command_deck.py +1686 -0
  98. brigade_cli-0.30.0/tests/test_fleet_dashboard.py +1752 -0
  99. brigade_cli-0.30.0/tests/test_fleet_deck_badges.py +315 -0
  100. brigade_cli-0.30.0/tests/test_fleet_deck_overview.py +944 -0
  101. brigade_cli-0.30.0/tests/test_fleet_events_cli.py +167 -0
  102. brigade_cli-0.30.0/tests/test_fleet_hub_container_recipes.py +328 -0
  103. brigade_cli-0.30.0/tests/test_fleet_messages.py +3339 -0
  104. brigade_cli-0.30.0/tests/test_fleet_owners.py +124 -0
  105. brigade_cli-0.30.0/tests/test_fleet_owners_cli.py +71 -0
  106. brigade_cli-0.30.0/tests/test_fleet_owners_page.py +416 -0
  107. brigade_cli-0.30.0/tests/test_fleet_owners_view.py +398 -0
  108. brigade_cli-0.30.0/tests/test_fleet_policy_owners.py +138 -0
  109. brigade_cli-0.30.0/tests/test_fleet_routing.py +1027 -0
  110. brigade_cli-0.30.0/tests/test_fleet_t3_transport.py +843 -0
  111. brigade_cli-0.30.0/tests/test_fleet_work_page.py +763 -0
  112. brigade_cli-0.30.0/tests/test_grokbot_cerebro.py +960 -0
  113. brigade_cli-0.30.0/tests/test_grokbot_t3_intake.py +554 -0
  114. brigade_cli-0.30.0/tests/test_grokbot_t3_ledger.py +309 -0
  115. brigade_cli-0.30.0/tests/test_grokbot_t3_lifecycle.py +330 -0
  116. brigade_cli-0.30.0/tests/test_grokbot_t3_platform.py +94 -0
  117. brigade_cli-0.30.0/tests/test_grokbot_t3_runtime.py +192 -0
  118. brigade_cli-0.30.0/tests/test_grokbot_t3_tools.py +668 -0
  119. brigade_cli-0.30.0/tests/test_grokbot_t3_watch.py +627 -0
  120. brigade_cli-0.30.0/tests/test_jules_cloud.py +1349 -0
  121. brigade_cli-0.30.0/tests/test_npm_feasibility_prepare.py +824 -0
  122. brigade_cli-0.30.0/tests/test_publish_workflow.py +907 -0
  123. brigade_cli-0.30.0/tests/test_published_artifact_acceptance.py +1095 -0
  124. brigade_cli-0.30.0/tests/test_readme_brand_header.py +75 -0
  125. brigade_cli-0.30.0/tests/test_run_cli.py +3762 -0
  126. brigade_cli-0.30.0/tests/test_run_journal_qualification.py +1986 -0
  127. brigade_cli-0.30.0/tests/test_ui_theme.py +175 -0
  128. brigade_cli-0.30.0/tests/test_ui_theme_integration.py +425 -0
  129. brigade_cli-0.30.0/tests/test_update_cmd.py +1101 -0
  130. brigade_cli-0.30.0/tests/test_update_notify.py +419 -0
  131. brigade_cli-0.30.0/tests/test_verify_reaper.py +102 -0
  132. brigade_cli-0.30.0/tests/test_windows_affected_tests.py +96 -0
  133. brigade_cli-0.30.0/tests/test_windows_pytest_selection.py +66 -0
  134. brigade_cli-0.30.0/tests/test_work_cmd_verification.py +5455 -0
  135. brigade_cli-0.28.0/PKG-INFO +0 -164
  136. brigade_cli-0.28.0/QUICKSTART.md +0 -342
  137. brigade_cli-0.28.0/README.md +0 -115
  138. brigade_cli-0.28.0/pyproject.toml +0 -116
  139. brigade_cli-0.28.0/src/brigade/__init__.py +0 -3
  140. brigade_cli-0.28.0/src/brigade/__main__.py +0 -6
  141. brigade_cli-0.28.0/src/brigade/center_cmd/dashboard/render.py +0 -118
  142. brigade_cli-0.28.0/src/brigade/claude_hooks/anchored_io.py +0 -435
  143. brigade_cli-0.28.0/src/brigade/cli/__init__.py +0 -265
  144. brigade_cli-0.28.0/src/brigade/cli/fleet_policy.py +0 -495
  145. brigade_cli-0.28.0/src/brigade/cli/run_cloud.py +0 -1858
  146. brigade_cli-0.28.0/src/brigade/cloud_tracker.py +0 -1933
  147. brigade_cli-0.28.0/src/brigade/cursor_cloud.py +0 -571
  148. brigade_cli-0.28.0/src/brigade/dot/__main__.py +0 -134
  149. brigade_cli-0.28.0/src/brigade/dot/lifecycle.py +0 -474
  150. brigade_cli-0.28.0/src/brigade/dot/process.py +0 -228
  151. brigade_cli-0.28.0/src/brigade/dot/runtime_config.py +0 -290
  152. brigade_cli-0.28.0/src/brigade/dot/safe_state.py +0 -302
  153. brigade_cli-0.28.0/src/brigade/dot/watch.py +0 -320
  154. brigade_cli-0.28.0/src/brigade/fleet_client.py +0 -1994
  155. brigade_cli-0.28.0/src/brigade/fleet_client_cloud.py +0 -696
  156. brigade_cli-0.28.0/src/brigade/fleet_client_policy.py +0 -400
  157. brigade_cli-0.28.0/src/brigade/fleet_client_spool.py +0 -98
  158. brigade_cli-0.28.0/src/brigade/fleet_command_deck.py +0 -1953
  159. brigade_cli-0.28.0/src/brigade/fleet_dashboard.py +0 -975
  160. brigade_cli-0.28.0/src/brigade/fleet_hub.py +0 -1904
  161. brigade_cli-0.28.0/src/brigade/fleet_hub_http.py +0 -1838
  162. brigade_cli-0.28.0/src/brigade/fleet_hub_roster_page.py +0 -792
  163. brigade_cli-0.28.0/src/brigade/fleet_hub_routing.py +0 -1833
  164. brigade_cli-0.28.0/src/brigade/fleet_policy.py +0 -1211
  165. brigade_cli-0.28.0/src/brigade/fleet_policy_page.py +0 -1899
  166. brigade_cli-0.28.0/src/brigade/fleet_repo_policy_page.py +0 -394
  167. brigade_cli-0.28.0/src/brigade/fleet_t3_transport.py +0 -1006
  168. brigade_cli-0.28.0/src/brigade/fleet_work_page.py +0 -226
  169. brigade_cli-0.28.0/src/brigade/grokbot_packs.py +0 -1635
  170. brigade_cli-0.28.0/src/brigade/grokbot_t3/__main__.py +0 -52
  171. brigade_cli-0.28.0/src/brigade/grokbot_t3/contracts.py +0 -273
  172. brigade_cli-0.28.0/src/brigade/grokbot_t3/ledger.py +0 -323
  173. brigade_cli-0.28.0/src/brigade/grokbot_t3/lifecycle.py +0 -608
  174. brigade_cli-0.28.0/src/brigade/grokbot_t3/runtime_config.py +0 -238
  175. brigade_cli-0.28.0/src/brigade/grokbot_t3/watch.py +0 -227
  176. brigade_cli-0.28.0/src/brigade/jules_cloud.py +0 -977
  177. brigade_cli-0.28.0/src/brigade/templates/components/manifest-v1.json +0 -214
  178. brigade_cli-0.28.0/src/brigade/templates/hermes/memory-handoff.harness.json +0 -36
  179. brigade_cli-0.28.0/src/brigade/templates/hermes/model-lanes.harness.json +0 -17
  180. brigade_cli-0.28.0/src/brigade/templates/hermes/workspace.harness.json +0 -30
  181. brigade_cli-0.28.0/src/brigade/templates/memory/chat-memory-sweep.example.json +0 -131
  182. brigade_cli-0.28.0/src/brigade/templates/memory/memory-care.example.json +0 -11
  183. brigade_cli-0.28.0/src/brigade/templates/policies/personal.json +0 -28
  184. brigade_cli-0.28.0/src/brigade/templates/policies/public-content.json +0 -28
  185. brigade_cli-0.28.0/src/brigade/templates/policies/public-repo.json +0 -27
  186. brigade_cli-0.28.0/src/brigade/templates/template-profile-snapshot.json +0 -888
  187. brigade_cli-0.28.0/src/brigade/ui_theme.py +0 -173
  188. brigade_cli-0.28.0/src/brigade/update_cmd.py +0 -676
  189. brigade_cli-0.28.0/src/brigade/update_notify.py +0 -201
  190. brigade_cli-0.28.0/src/brigade/work_cmd/session/briefing.py +0 -1304
  191. brigade_cli-0.28.0/src/brigade/work_cmd/verification.py +0 -2337
  192. brigade_cli-0.28.0/src/brigade/work_cmd/verify_reaper.py +0 -77
  193. brigade_cli-0.28.0/src/brigade_cli.egg-info/PKG-INFO +0 -164
  194. brigade_cli-0.28.0/src/brigade_cli.egg-info/SOURCES.txt +0 -1427
  195. brigade_cli-0.28.0/src/brigade_cli.egg-info/entry_points.txt +0 -3
  196. brigade_cli-0.28.0/tests/test_ci_workflow.py +0 -1555
  197. brigade_cli-0.28.0/tests/test_claude_hooks_latch_race.py +0 -1108
  198. brigade_cli-0.28.0/tests/test_claude_hooks_state_containment.py +0 -564
  199. brigade_cli-0.28.0/tests/test_control_crosswalk.py +0 -4663
  200. brigade_cli-0.28.0/tests/test_cursor_cloud.py +0 -968
  201. brigade_cli-0.28.0/tests/test_dot_access_auth.py +0 -542
  202. brigade_cli-0.28.0/tests/test_dot_adapter.py +0 -348
  203. brigade_cli-0.28.0/tests/test_dot_compat.py +0 -120
  204. brigade_cli-0.28.0/tests/test_dot_events.py +0 -553
  205. brigade_cli-0.28.0/tests/test_dot_fleet_tools.py +0 -490
  206. brigade_cli-0.28.0/tests/test_dot_hub_tools.py +0 -632
  207. brigade_cli-0.28.0/tests/test_dot_inbox_tools.py +0 -724
  208. brigade_cli-0.28.0/tests/test_dot_lifecycle.py +0 -573
  209. brigade_cli-0.28.0/tests/test_dot_memory_tools.py +0 -184
  210. brigade_cli-0.28.0/tests/test_dot_process.py +0 -106
  211. brigade_cli-0.28.0/tests/test_dot_runtime.py +0 -254
  212. brigade_cli-0.28.0/tests/test_dot_state.py +0 -179
  213. brigade_cli-0.28.0/tests/test_dot_watch.py +0 -219
  214. brigade_cli-0.28.0/tests/test_error_refusal_copy.py +0 -285
  215. brigade_cli-0.28.0/tests/test_fleet_claim_loss_cancellation.py +0 -212
  216. brigade_cli-0.28.0/tests/test_fleet_claims.py +0 -3635
  217. brigade_cli-0.28.0/tests/test_fleet_client_hardening.py +0 -478
  218. brigade_cli-0.28.0/tests/test_fleet_client_message_credentials.py +0 -583
  219. brigade_cli-0.28.0/tests/test_fleet_command_deck.py +0 -1606
  220. brigade_cli-0.28.0/tests/test_fleet_dashboard.py +0 -1752
  221. brigade_cli-0.28.0/tests/test_fleet_deck_badges.py +0 -303
  222. brigade_cli-0.28.0/tests/test_fleet_events_cli.py +0 -164
  223. brigade_cli-0.28.0/tests/test_fleet_hub_container_recipes.py +0 -325
  224. brigade_cli-0.28.0/tests/test_fleet_messages.py +0 -3324
  225. brigade_cli-0.28.0/tests/test_fleet_routing.py +0 -962
  226. brigade_cli-0.28.0/tests/test_fleet_t3_transport.py +0 -835
  227. brigade_cli-0.28.0/tests/test_fleet_work_page.py +0 -763
  228. brigade_cli-0.28.0/tests/test_grokbot_cerebro.py +0 -961
  229. brigade_cli-0.28.0/tests/test_grokbot_t3_intake.py +0 -554
  230. brigade_cli-0.28.0/tests/test_grokbot_t3_ledger.py +0 -277
  231. brigade_cli-0.28.0/tests/test_grokbot_t3_lifecycle.py +0 -320
  232. brigade_cli-0.28.0/tests/test_grokbot_t3_runtime.py +0 -167
  233. brigade_cli-0.28.0/tests/test_grokbot_t3_tools.py +0 -668
  234. brigade_cli-0.28.0/tests/test_grokbot_t3_watch.py +0 -627
  235. brigade_cli-0.28.0/tests/test_jules_cloud.py +0 -1342
  236. brigade_cli-0.28.0/tests/test_publish_workflow.py +0 -431
  237. brigade_cli-0.28.0/tests/test_published_artifact_acceptance.py +0 -1072
  238. brigade_cli-0.28.0/tests/test_readme_brand_header.py +0 -75
  239. brigade_cli-0.28.0/tests/test_run_cli.py +0 -3748
  240. brigade_cli-0.28.0/tests/test_run_journal_qualification.py +0 -1978
  241. brigade_cli-0.28.0/tests/test_ui_theme.py +0 -61
  242. brigade_cli-0.28.0/tests/test_ui_theme_integration.py +0 -373
  243. brigade_cli-0.28.0/tests/test_update_cmd.py +0 -1031
  244. brigade_cli-0.28.0/tests/test_update_notify.py +0 -377
  245. brigade_cli-0.28.0/tests/test_work_cmd_verification.py +0 -3772
  246. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/LICENSE +0 -0
  247. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/MANIFEST.in +0 -0
  248. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/THIRD_PARTY_NOTICES.md +0 -0
  249. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/setup.cfg +0 -0
  250. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/_control_crosswalk_io.py +0 -0
  251. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/aboyeur/__init__.py +0 -0
  252. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/aboyeur/artifacts.py +0 -0
  253. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/aboyeur/briefs.py +0 -0
  254. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/aboyeur/direct_worker_finish.py +0 -0
  255. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/aboyeur/model_admission.py +0 -0
  256. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/aboyeur/orchestrator.py +0 -0
  257. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/aboyeur/planning.py +0 -0
  258. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/aboyeur/prompts.py +0 -0
  259. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/aboyeur/run_io.py +0 -0
  260. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/aboyeur_artifacts.py +0 -0
  261. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/aboyeur_model_policy.py +0 -0
  262. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/acpx_adapter.py +0 -0
  263. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/actionqueue.py +0 -0
  264. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/add.py +0 -0
  265. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/agent_change.py +0 -0
  266. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/agent_change_approval_verify.py +0 -0
  267. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/agent_change_refs.py +0 -0
  268. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/agent_change_verify.py +0 -0
  269. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/agent_request.py +0 -0
  270. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/agent_skill_format.py +0 -0
  271. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/agents.py +0 -0
  272. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/approval.py +0 -0
  273. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/approval_v2.py +0 -0
  274. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/approval_verification.py +0 -0
  275. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/assets/fleet_hub/apple-touch-icon.png +0 -0
  276. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/assets/fleet_hub/favicon-32x32.png +0 -0
  277. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/assets/fleet_hub/favicon.ico +0 -0
  278. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/assets/fleet_hub/icon-192.png +0 -0
  279. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/assets/fleet_hub/icon-512.png +0 -0
  280. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/assets/fleet_hub/site.webmanifest +0 -0
  281. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/attestation.py +0 -0
  282. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/attestation_cmd.py +0 -0
  283. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/attestation_input.py +0 -0
  284. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/attestation_receipt.py +0 -0
  285. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/authority_broker.py +0 -0
  286. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/authority_key.py +0 -0
  287. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/authority_marker.py +0 -0
  288. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/brief_sections.py +0 -0
  289. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/budgets.py +0 -0
  290. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/budgets_cmd.py +0 -0
  291. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/candidate_set.py +0 -0
  292. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/card_fingerprint.py +0 -0
  293. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/card_identity.py +0 -0
  294. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/care_cmd.py +0 -0
  295. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/care_schedules.py +0 -0
  296. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/causal_receipt.py +0 -0
  297. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/__init__.py +0 -0
  298. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/actions.py +0 -0
  299. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/agent_activity.py +0 -0
  300. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/core.py +0 -0
  301. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/dashboard/__init__.py +0 -0
  302. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/dashboard/data.py +0 -0
  303. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/dashboard/snapshot.py +0 -0
  304. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/dashboard/timing.py +0 -0
  305. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/dashboard/views/__init__.py +0 -0
  306. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/dashboard/views/agent_activity.py +0 -0
  307. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/dashboard/views/code_graph.py +0 -0
  308. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/dashboard/views/handoff_inbox.py +0 -0
  309. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/dashboard/views/memory_operations.py +0 -0
  310. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/dashboard/views/outcome_rank.py +0 -0
  311. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/dashboard/views/research.py +0 -0
  312. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/dashboard/views/run_timeline.py +0 -0
  313. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/dashboard/views/status_grid.py +0 -0
  314. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/dashboard/views/work.py +0 -0
  315. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/dashboard/work_graph.py +0 -0
  316. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/readiness.py +0 -0
  317. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/report_review_ops.py +0 -0
  318. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/reports.py +0 -0
  319. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/schema_ops.py +0 -0
  320. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/center_cmd/serve.py +0 -0
  321. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/chat_cmd.py +0 -0
  322. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claim_loss_cancellation.py +0 -0
  323. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_actions_diagnostics.py +0 -0
  324. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_actions_evidence.py +0 -0
  325. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_actions_http.py +0 -0
  326. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_actions_import.py +0 -0
  327. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_actions_metadata.py +0 -0
  328. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_cloud.py +0 -0
  329. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_cloud_identity.py +0 -0
  330. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_hooks/__init__.py +0 -0
  331. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_hooks/classify.py +0 -0
  332. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_hooks/compaction_marker.py +0 -0
  333. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_hooks/entry.py +0 -0
  334. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_hooks/envelope.py +0 -0
  335. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_hooks/fingerprint.py +0 -0
  336. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_hooks/heartbeat.py +0 -0
  337. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_hooks/install_cmd.py +0 -0
  338. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_hooks/package.py +0 -0
  339. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_hooks/paths.py +0 -0
  340. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_hooks/presence.py +0 -0
  341. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_hooks/runtime.py +0 -0
  342. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_hooks/session_state.py +0 -0
  343. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_review_evidence.py +0 -0
  344. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_review_history.py +0 -0
  345. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/claude_review_import.py +0 -0
  346. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/_common.py +0 -0
  347. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/add.py +0 -0
  348. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/budgets.py +0 -0
  349. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/care.py +0 -0
  350. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/center.py +0 -0
  351. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/chat.py +0 -0
  352. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/code.py +0 -0
  353. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/completions.py +0 -0
  354. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/context.py +0 -0
  355. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/daily.py +0 -0
  356. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/doctor.py +0 -0
  357. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/dogfood.py +0 -0
  358. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/evidence.py +0 -0
  359. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/extras.py +0 -0
  360. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/fleet.py +0 -0
  361. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/fleet_campaign.py +0 -0
  362. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/fleet_dot.py +0 -0
  363. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/fleet_enroll.py +0 -0
  364. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/fleet_events.py +0 -0
  365. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/fleet_messages.py +0 -0
  366. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/fleet_roster.py +0 -0
  367. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/fleet_work.py +0 -0
  368. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/fleet_work_ownership.py +0 -0
  369. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/friction.py +0 -0
  370. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/governance.py +0 -0
  371. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/guard.py +0 -0
  372. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/handoff.py +0 -0
  373. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/handoff_template.py +0 -0
  374. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/harness.py +0 -0
  375. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/hermes_fragments.py +0 -0
  376. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/ingest.py +0 -0
  377. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/init.py +0 -0
  378. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/learn.py +0 -0
  379. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/mcp.py +0 -0
  380. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/memory.py +0 -0
  381. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/model.py +0 -0
  382. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/node.py +0 -0
  383. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/notifications.py +0 -0
  384. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/openclaw_fragments.py +0 -0
  385. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/operator.py +0 -0
  386. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/outcome.py +0 -0
  387. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/pantry.py +0 -0
  388. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/profiles.py +0 -0
  389. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/projection.py +0 -0
  390. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/projects.py +0 -0
  391. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/receipts.py +0 -0
  392. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/reconfigure.py +0 -0
  393. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/release.py +0 -0
  394. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/repos.py +0 -0
  395. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/research.py +0 -0
  396. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/roadmap.py +0 -0
  397. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/roster.py +0 -0
  398. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/route.py +0 -0
  399. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/run.py +0 -0
  400. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/run_cloud_build_feed.py +0 -0
  401. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/runbook.py +0 -0
  402. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/runs.py +0 -0
  403. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/scrub.py +0 -0
  404. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/search.py +0 -0
  405. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/security.py +0 -0
  406. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/setup.py +0 -0
  407. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/skills.py +0 -0
  408. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/stations.py +0 -0
  409. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/status.py +0 -0
  410. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/tokens.py +0 -0
  411. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/tools.py +0 -0
  412. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/untrusted.py +0 -0
  413. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/update.py +0 -0
  414. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/version.py +0 -0
  415. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/work/__init__.py +0 -0
  416. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/work/dispatching.py +0 -0
  417. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/work/phases.py +0 -0
  418. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/work/registration.py +0 -0
  419. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cli/workflow.py +0 -0
  420. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/code_cmd.py +0 -0
  421. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/code_export.py +0 -0
  422. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/code_references.py +0 -0
  423. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/codex_appserver.py +0 -0
  424. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/codex_cloud.py +0 -0
  425. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/commit_linkage.py +0 -0
  426. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/commit_linkage_verify.py +0 -0
  427. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/completions.py +0 -0
  428. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/component_bins.py +0 -0
  429. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/component_install.py +0 -0
  430. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/component_manifest.py +0 -0
  431. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/component_paths.py +0 -0
  432. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/component_report.py +0 -0
  433. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/component_state.py +0 -0
  434. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/config.py +0 -0
  435. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/context_cmd.py +0 -0
  436. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/context_eval.py +0 -0
  437. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/context_preview.py +0 -0
  438. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/control_crosswalk.py +0 -0
  439. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/control_crosswalk_cosign.py +0 -0
  440. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/control_crosswalk_package.py +0 -0
  441. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/control_readiness.py +0 -0
  442. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cosign_attestation.py +0 -0
  443. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/cursor_user_cmd.py +0 -0
  444. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/daily_cmd/__init__.py +0 -0
  445. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/daily_cmd/approvals.py +0 -0
  446. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/daily_cmd/candidates.py +0 -0
  447. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/daily_cmd/closeout_ops.py +0 -0
  448. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/daily_cmd/config.py +0 -0
  449. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/daily_cmd/hardening.py +0 -0
  450. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/daily_cmd/run_loop.py +0 -0
  451. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/daily_cmd/status_plan.py +0 -0
  452. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/daily_cmd/telemetry_ops.py +0 -0
  453. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/dirfd.py +0 -0
  454. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/doctor.py +0 -0
  455. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/doctor_agent.py +0 -0
  456. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/doctor_instruction_chain.py +0 -0
  457. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/dogfood_cmd.py +0 -0
  458. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/dot/__init__.py +0 -0
  459. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/dot/access_auth.py +0 -0
  460. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/dot/adapter.py +0 -0
  461. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/dot/contracts.py +0 -0
  462. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/dot/event_app.py +0 -0
  463. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/dot/events.py +0 -0
  464. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/dot/fleet_tools.py +0 -0
  465. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/dot/hub_inbox.py +0 -0
  466. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/dot/hub_tools.py +0 -0
  467. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/dot/inbox_tools.py +0 -0
  468. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/dot/memory_tools.py +0 -0
  469. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/dot/server.py +0 -0
  470. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/dot/state.py +0 -0
  471. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/dot/webhooks.py +0 -0
  472. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/evidence_ack_acceptance.py +0 -0
  473. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/evidence_ack_crypto.py +0 -0
  474. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/evidence_ack_protocol.py +0 -0
  475. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/evidence_brief.py +0 -0
  476. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/evidence_cmd.py +0 -0
  477. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/evidence_derivative.py +0 -0
  478. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/evidence_package.py +0 -0
  479. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/evidence_package_snapshot.py +0 -0
  480. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/evidence_redaction.py +0 -0
  481. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/evidence_runtime.py +0 -0
  482. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/extras.py +0 -0
  483. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fixtures/causal-receipt.v1.golden.json +0 -0
  484. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fixtures/provenance-envelope.v1.golden.json +0 -0
  485. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fixtures/trust-policy.v1.json +0 -0
  486. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fixtures/worker-events-appserver.v1.golden.json +0 -0
  487. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_campaign.py +0 -0
  488. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_campaign_authority.py +0 -0
  489. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_center_links.py +0 -0
  490. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_claim_display.py +0 -0
  491. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_claim_lifecycle.py +0 -0
  492. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_claim_target.py +0 -0
  493. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_client_enrollment.py +0 -0
  494. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_client_grokbot.py +0 -0
  495. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_client_message_credentials.py +0 -0
  496. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_client_messages.py +0 -0
  497. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_deck_brands.py +0 -0
  498. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_dot.py +0 -0
  499. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_event_freshness.py +0 -0
  500. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_event_report.py +0 -0
  501. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_execution_context.py +0 -0
  502. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_export.py +0 -0
  503. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_hub_capacity.py +0 -0
  504. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_hub_claim_cardinality.py +0 -0
  505. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_hub_claims.py +0 -0
  506. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_hub_cloud_policy.py +0 -0
  507. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_hub_enrollment.py +0 -0
  508. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_hub_event_bounds.py +0 -0
  509. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_hub_grokbot.py +0 -0
  510. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_hub_message_grants.py +0 -0
  511. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_hub_messages.py +0 -0
  512. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_hub_model_roster.py +0 -0
  513. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_hub_policy.py +0 -0
  514. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_hub_policy_api.py +0 -0
  515. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_hub_preference.py +0 -0
  516. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_hub_server.py +0 -0
  517. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_hub_sessions.py +0 -0
  518. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_hub_status.py +0 -0
  519. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_master_roster.py +0 -0
  520. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_model_admission.py +0 -0
  521. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_model_inventory.py +0 -0
  522. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_model_roster.py +0 -0
  523. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_policy_delegation.py +0 -0
  524. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_policy_form.py +0 -0
  525. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_policy_migration.py +0 -0
  526. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_quota.py +0 -0
  527. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_session_bootstrap.py +0 -0
  528. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fleet_session_presence.py +0 -0
  529. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/fragments.py +0 -0
  530. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/friction_cmd.py +0 -0
  531. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/generated_patch_quarantine.py +0 -0
  532. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/governance_inventory.py +0 -0
  533. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/graphtrail_delta.py +0 -0
  534. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_backup/__init__.py +0 -0
  535. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_backup/actions.py +0 -0
  536. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_backup/adapters.py +0 -0
  537. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_backup/contracts.py +0 -0
  538. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_backup/exec.py +0 -0
  539. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_backup/ledger.py +0 -0
  540. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_backup/lifecycle.py +0 -0
  541. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_backup/normalize.py +0 -0
  542. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_backup/runtime_config.py +0 -0
  543. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_backup/tools.py +0 -0
  544. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_build_feed.py +0 -0
  545. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_cerebro.py +0 -0
  546. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_feed.py +0 -0
  547. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_findings.py +0 -0
  548. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_findings_relay.py +0 -0
  549. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_fleet/__init__.py +0 -0
  550. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_fleet/actions.py +0 -0
  551. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_fleet/app.py +0 -0
  552. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_fleet/contracts.py +0 -0
  553. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_fleet/exec.py +0 -0
  554. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_fleet/ledger.py +0 -0
  555. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_fleet/lifecycle.py +0 -0
  556. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_fleet/normalize.py +0 -0
  557. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_fleet/policy.py +0 -0
  558. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_fleet/probes.py +0 -0
  559. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_fleet/registry.py +0 -0
  560. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_fleet/runtime_config.py +0 -0
  561. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_fleet/tools.py +0 -0
  562. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_job_clock.py +0 -0
  563. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_job_validation.py +0 -0
  564. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_jobs.py +0 -0
  565. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_jobs_claim_target.py +0 -0
  566. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_jobs_expiry.py +0 -0
  567. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_jobs_hub.py +0 -0
  568. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_mcp.py +0 -0
  569. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_n8n/__init__.py +0 -0
  570. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_n8n/actions.py +0 -0
  571. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_n8n/client.py +0 -0
  572. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_n8n/contracts.py +0 -0
  573. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_n8n/lifecycle.py +0 -0
  574. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_n8n/runtime_config.py +0 -0
  575. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_n8n/tools.py +0 -0
  576. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_obsidian/__init__.py +0 -0
  577. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_obsidian/actions.py +0 -0
  578. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_obsidian/adapters.py +0 -0
  579. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_obsidian/capabilities.py +0 -0
  580. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_obsidian/catalog.py +0 -0
  581. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_obsidian/content_policy.py +0 -0
  582. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_obsidian/contracts.py +0 -0
  583. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_obsidian/excalidraw_client.py +0 -0
  584. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_obsidian/lifecycle.py +0 -0
  585. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_obsidian/native_client.py +0 -0
  586. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_obsidian/operator_adapter.py +0 -0
  587. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_obsidian/path_policy.py +0 -0
  588. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_obsidian/runtime_config.py +0 -0
  589. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_obsidian/store.py +0 -0
  590. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_obsidian/tls.py +0 -0
  591. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_obsidian/tools.py +0 -0
  592. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_obsidian/utf8.py +0 -0
  593. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_operations_relay.py +0 -0
  594. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_ops.py +0 -0
  595. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_pack_relay.py +0 -0
  596. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_paths.py +0 -0
  597. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_reconcile.py +0 -0
  598. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_scout_feed.py +0 -0
  599. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_t3/__init__.py +0 -0
  600. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_t3/fleet.py +0 -0
  601. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_t3/intake.py +0 -0
  602. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_t3/tools.py +0 -0
  603. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_wazuh/__init__.py +0 -0
  604. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_wazuh/contracts.py +0 -0
  605. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_wazuh/lifecycle.py +0 -0
  606. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_wazuh/normalize.py +0 -0
  607. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_wazuh/policy.py +0 -0
  608. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_wazuh/store.py +0 -0
  609. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/grokbot_wazuh/tools.py +0 -0
  610. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/__init__.py +0 -0
  611. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/__main__.py +0 -0
  612. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/allowlist.py +0 -0
  613. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/audit.py +0 -0
  614. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/baseline.py +0 -0
  615. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/cli.py +0 -0
  616. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/detectors/__init__.py +0 -0
  617. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/detectors/opf.py +0 -0
  618. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/engine.py +0 -0
  619. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/examples/n8n-validation/blocked-local-service.json +0 -0
  620. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/examples/n8n-validation/blocked-secret-token.json +0 -0
  621. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/examples/n8n-validation/clean-blog-post.json +0 -0
  622. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/examples/n8n-validation/clean-social-post.json +0 -0
  623. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/examples/n8n-validation/warn-review-email.json +0 -0
  624. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/git_commits.py +0 -0
  625. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/git_scan.py +0 -0
  626. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/n8n_advisory.py +0 -0
  627. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/n8n_validate.py +0 -0
  628. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/policies/in-house-repo.json +0 -0
  629. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/policies/openclaw-message.json +0 -0
  630. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/policies/pr-draft.json +0 -0
  631. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/policies/public-content.json +0 -0
  632. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/policies/public-repo.json +0 -0
  633. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/policy.py +0 -0
  634. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/pr_draft.py +0 -0
  635. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/pr_prepare.py +0 -0
  636. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/publish_check.py +0 -0
  637. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/report.py +0 -0
  638. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/rev_range.py +0 -0
  639. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/rules.py +0 -0
  640. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/guard/types.py +0 -0
  641. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/handoff.py +0 -0
  642. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/handoff_cmd/__init__.py +0 -0
  643. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/handoff_cmd/drafts.py +0 -0
  644. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/handoff_cmd/inspect_ops.py +0 -0
  645. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/handoff_cmd/issue_ops.py +0 -0
  646. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/handoff_cmd/linting.py +0 -0
  647. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/handoff_cmd/migrate_ops.py +0 -0
  648. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/handoff_cmd/models.py +0 -0
  649. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/handoff_cmd/readability.py +0 -0
  650. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/handoff_cmd/receipts.py +0 -0
  651. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/handoff_cmd/sources.py +0 -0
  652. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/handoff_content.py +0 -0
  653. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/harness_profile_cmd.py +0 -0
  654. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/harness_profile_doctor.py +0 -0
  655. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/harness_profiles.py +0 -0
  656. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/hermes_adapter.py +0 -0
  657. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/inbox_lock.py +0 -0
  658. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/ingest.py +0 -0
  659. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/install.py +0 -0
  660. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/journal_export.py +0 -0
  661. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/learn_cmd.py +0 -0
  662. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/localio.py +0 -0
  663. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/managed.py +0 -0
  664. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/managed_block.py +0 -0
  665. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/managed_snapshot.py +0 -0
  666. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/mcp_adapters.py +0 -0
  667. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/mcp_cmd.py +0 -0
  668. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/mcp_fidelity.py +0 -0
  669. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/mcp_runtime.py +0 -0
  670. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/mcp_server.py +0 -0
  671. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_care_closeout.py +0 -0
  672. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_care_plan.py +0 -0
  673. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_cmd.py +0 -0
  674. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_doctor/__init__.py +0 -0
  675. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_doctor/__main__.py +0 -0
  676. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_doctor/cli.py +0 -0
  677. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_doctor/compact.py +0 -0
  678. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_doctor/git.py +0 -0
  679. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_doctor/init_git.py +0 -0
  680. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_doctor/lint.py +0 -0
  681. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_doctor/parsing.py +0 -0
  682. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_doctor/paths.py +0 -0
  683. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_doctor/safety.py +0 -0
  684. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_doctor/status.py +0 -0
  685. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_doctor_cmd.py +0 -0
  686. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_hooks.py +0 -0
  687. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_identity_audit.py +0 -0
  688. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_operations.py +0 -0
  689. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_proposal_io.py +0 -0
  690. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_proposals.py +0 -0
  691. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_retrieval_eval/__init__.py +0 -0
  692. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_retrieval_eval/__main__.py +0 -0
  693. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_retrieval_eval/adapters.py +0 -0
  694. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_retrieval_eval/corpus.py +0 -0
  695. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_retrieval_eval/harness.py +0 -0
  696. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_retrieval_eval/metrics.py +0 -0
  697. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_retrieval_eval/projection.py +0 -0
  698. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_retrieval_eval/quality.py +0 -0
  699. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_retrieval_eval/report.py +0 -0
  700. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_search_diagnostics.py +0 -0
  701. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/memory_vault.py +0 -0
  702. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/message_envelope.py +0 -0
  703. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/model_inventory.py +0 -0
  704. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/model_scorecard.py +0 -0
  705. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/model_trials.py +0 -0
  706. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/node.py +0 -0
  707. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/notifications_cmd.py +0 -0
  708. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/obsidian_vault.py +0 -0
  709. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/operator_cmd/__init__.py +0 -0
  710. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/operator_cmd/adoption.py +0 -0
  711. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/operator_cmd/guide.py +0 -0
  712. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/operator_cmd/health.py +0 -0
  713. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/operator_cmd/lifecycle.py +0 -0
  714. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/operator_cmd/migration.py +0 -0
  715. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/operator_cmd/surfaces.py +0 -0
  716. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/outcome.py +0 -0
  717. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/outcome_cmd.py +0 -0
  718. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/outcome_discovery.py +0 -0
  719. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/outcome_repair.py +0 -0
  720. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/pantry_cmd.py +0 -0
  721. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/pantry_compat.py +0 -0
  722. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/phases_cmd/__init__.py +0 -0
  723. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/phases_cmd/checks_actions.py +0 -0
  724. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/phases_cmd/constants.py +0 -0
  725. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/phases_cmd/session_lifecycle.py +0 -0
  726. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/phases_cmd/session_ops.py +0 -0
  727. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/pi_mcp_bridge.py +0 -0
  728. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/pi_mcp_cmd.py +0 -0
  729. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/proc.py +0 -0
  730. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/profiles.py +0 -0
  731. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/profiles_cmd.py +0 -0
  732. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/projection/__init__.py +0 -0
  733. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/projection/fixture.py +0 -0
  734. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/projection/kernel.py +0 -0
  735. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/projection_cmd.py +0 -0
  736. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/projects_cmd.py +0 -0
  737. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/prompt.py +0 -0
  738. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/provenance.py +0 -0
  739. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/py.typed +0 -0
  740. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/receipt_schema.py +0 -0
  741. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/receipt_signing.py +0 -0
  742. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/receipts_cmd.py +0 -0
  743. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/receipts_trailer.py +0 -0
  744. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/reconfigure.py +0 -0
  745. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/registry.py +0 -0
  746. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/release_cmd/__init__.py +0 -0
  747. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/release_cmd/candidate.py +0 -0
  748. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/release_cmd/candidate_audit_ops.py +0 -0
  749. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/release_cmd/ci.py +0 -0
  750. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/release_cmd/commands.py +0 -0
  751. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/release_cmd/evidence.py +0 -0
  752. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/release_cmd/install_smoke.py +0 -0
  753. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/release_cmd/paths.py +0 -0
  754. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/release_cmd/schema_ops.py +0 -0
  755. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/release_cmd/version_guard.py +0 -0
  756. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/release_version_sync.py +0 -0
  757. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/render.py +0 -0
  758. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/reportstore.py +0 -0
  759. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/repos_cmd/__init__.py +0 -0
  760. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/repos_cmd/actions_dispatch.py +0 -0
  761. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/repos_cmd/adoption.py +0 -0
  762. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/repos_cmd/constants.py +0 -0
  763. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/repos_cmd/fleet.py +0 -0
  764. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/repos_cmd/fleet_health.py +0 -0
  765. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/repos_cmd/friction_fleet.py +0 -0
  766. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/repos_cmd/release_ops.py +0 -0
  767. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/repos_cmd/release_train.py +0 -0
  768. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/repos_cmd/sweeps.py +0 -0
  769. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/__init__.py +0 -0
  770. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/browser_preflight.py +0 -0
  771. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/claim_audit.py +0 -0
  772. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/config.py +0 -0
  773. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/doctor.py +0 -0
  774. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/engine.py +0 -0
  775. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/extract.py +0 -0
  776. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/handoff.py +0 -0
  777. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/llm.py +0 -0
  778. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/provenance.py +0 -0
  779. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/registry.py +0 -0
  780. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/report.py +0 -0
  781. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/sources/__init__.py +0 -0
  782. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/sources/browser_ai.py +0 -0
  783. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/sources/cli.py +0 -0
  784. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/sources/local.py +0 -0
  785. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/sources/web.py +0 -0
  786. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research/types.py +0 -0
  787. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/research_cmd.py +0 -0
  788. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/result_integrity.py +0 -0
  789. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/roadmap_cmd.py +0 -0
  790. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/roster.py +0 -0
  791. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/roster_cmd.py +0 -0
  792. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/route_catalog.py +0 -0
  793. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/route_policy.py +0 -0
  794. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/route_receipts.py +0 -0
  795. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/router.py +0 -0
  796. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_audit.py +0 -0
  797. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_budget.py +0 -0
  798. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_checkpoint.py +0 -0
  799. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_control.py +0 -0
  800. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_control_journal.py +0 -0
  801. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_dirfd.py +0 -0
  802. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_event_cursor.py +0 -0
  803. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_events.py +0 -0
  804. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_id.py +0 -0
  805. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_journal.py +0 -0
  806. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_lifecycle.py +0 -0
  807. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_preference.py +0 -0
  808. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_projector.py +0 -0
  809. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_reap.py +0 -0
  810. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_receipts.py +0 -0
  811. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_redaction.py +0 -0
  812. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_resume.py +0 -0
  813. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_seat.py +0 -0
  814. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_shadow.py +0 -0
  815. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/run_transport.py +0 -0
  816. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/runbook_cmd.py +0 -0
  817. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/runguard.py +0 -0
  818. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/runs_cmd.py +0 -0
  819. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/runs_cmd_worktrees.py +0 -0
  820. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/runs_diff.py +0 -0
  821. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/runs_serve.py +0 -0
  822. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/runs_view.html +0 -0
  823. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/scanner_isolation.py +0 -0
  824. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/scorecard.py +0 -0
  825. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/scrub.py +0 -0
  826. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/search_cmd.py +0 -0
  827. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/seat_health.py +0 -0
  828. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/seat_health_policy.py +0 -0
  829. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/security_cmd/__init__.py +0 -0
  830. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/security_cmd/commands.py +0 -0
  831. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/security_cmd/config.py +0 -0
  832. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/security_cmd/enrichment.py +0 -0
  833. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/security_cmd/models.py +0 -0
  834. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/security_cmd/reports.py +0 -0
  835. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/security_cmd/scan_detectors.py +0 -0
  836. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/security_cmd/scan_engine.py +0 -0
  837. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/security_cmd/suppression.py +0 -0
  838. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/security_cmd/template_audit_ops.py +0 -0
  839. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/selection.py +0 -0
  840. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/skill_obligations.py +0 -0
  841. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/skills_cmd/__init__.py +0 -0
  842. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/skills_cmd/adapters.py +0 -0
  843. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/skills_cmd/inbox.py +0 -0
  844. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/skills_cmd/install.py +0 -0
  845. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/skills_cmd/packs.py +0 -0
  846. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/skills_cmd/registry.py +0 -0
  847. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/skills_cmd/search_validate.py +0 -0
  848. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/skills_cmd/sync_history.py +0 -0
  849. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/station.py +0 -0
  850. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/station_health.py +0 -0
  851. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/station_manifest.py +0 -0
  852. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/stations_cmd.py +0 -0
  853. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/status.py +0 -0
  854. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/telemetry_export.py +0 -0
  855. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/template_profiles.py +0 -0
  856. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/adal/memory-handoffs/TEMPLATE.md +0 -0
  857. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/aider/memory-handoffs/TEMPLATE.md +0 -0
  858. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/amp/memory-handoffs/TEMPLATE.md +0 -0
  859. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/antigravity/memory-handoffs/TEMPLATE.md +0 -0
  860. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/claude/memory-handoffs/TEMPLATE.md +0 -0
  861. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/codex/memory-handoffs/TEMPLATE.md +0 -0
  862. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/continue/memory-handoffs/TEMPLATE.md +0 -0
  863. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/control-crosswalk.json +0 -0
  864. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/copilot/memory-handoffs/TEMPLATE.md +0 -0
  865. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/crush/memory-handoffs/TEMPLATE.md +0 -0
  866. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/cursor/memory-handoffs/TEMPLATE.md +0 -0
  867. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/depth/repo.json +0 -0
  868. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/depth/workspace.json +0 -0
  869. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/evals/adversarial/failed-verification/cases/acknowledge-broken-receipt.prompt.md +0 -0
  870. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/evals/adversarial/failed-verification/cases/report-failing-tests.prompt.md +0 -0
  871. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/evals/adversarial/failed-verification/manifest.json +0 -0
  872. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/evals/adversarial/prompt-injection/cases/disregard-system-prompt.prompt.md +0 -0
  873. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/evals/adversarial/prompt-injection/cases/fake-system-block.prompt.md +0 -0
  874. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/evals/adversarial/prompt-injection/cases/handoff-lint-regression.prompt.md +0 -0
  875. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/evals/adversarial/prompt-injection/fixtures/handoff-lint-regression.md +0 -0
  876. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/evals/adversarial/prompt-injection/manifest.json +0 -0
  877. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/evals/adversarial/unsafe-command/cases/refuse-destructive-shell.prompt.md +0 -0
  878. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/evals/adversarial/unsafe-command/cases/refuse-force-push.prompt.md +0 -0
  879. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/evals/adversarial/unsafe-command/manifest.json +0 -0
  880. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/evals/adversarial/untrusted-evidence/cases/benign-quoted-payload.prompt.md +0 -0
  881. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/evals/adversarial/untrusted-evidence/cases/hostile-tool-output.prompt.md +0 -0
  882. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/evals/adversarial/untrusted-evidence/manifest.json +0 -0
  883. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/generic/harness-adapter-checklist.md +0 -0
  884. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/generic/memory-contract.md +0 -0
  885. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/goose/memory-handoffs/TEMPLATE.md +0 -0
  886. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/grok/hooks/brigade-work.json +0 -0
  887. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/grok/hooks/brigade-work.sh +0 -0
  888. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/grok/memory-handoffs/TEMPLATE.md +0 -0
  889. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/handoff/handoff-sources.example.json +0 -0
  890. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/handoff/openclaw-ingest-receipt.example.json +0 -0
  891. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/adal.json +0 -0
  892. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/aider.json +0 -0
  893. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/amp.json +0 -0
  894. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/antigravity.json +0 -0
  895. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/claude.json +0 -0
  896. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/codex.json +0 -0
  897. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/continue.json +0 -0
  898. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/copilot.json +0 -0
  899. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/crush.json +0 -0
  900. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/cursor.json +0 -0
  901. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/goose.json +0 -0
  902. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/grok.json +0 -0
  903. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/hermes.json +0 -0
  904. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/kimi.json +0 -0
  905. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/openclaw.json +0 -0
  906. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/opencode.json +0 -0
  907. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/openhands.json +0 -0
  908. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/pi.json +0 -0
  909. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/harnesses/qwen.json +0 -0
  910. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/hermes/README.md +0 -0
  911. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/hermes/memory-handoffs/TEMPLATE.md +0 -0
  912. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/hooks/pre-push +0 -0
  913. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/includes/publisher.json +0 -0
  914. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/includes/repo-extras.json +0 -0
  915. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/kimi/memory-handoffs/TEMPLATE.md +0 -0
  916. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/memory/cards/backup-restic.md +0 -0
  917. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/memory/cards/chat-surface-crawlers.md +0 -0
  918. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/memory/cards/content-safety.md +0 -0
  919. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/memory/cards/handoff-flow.md +0 -0
  920. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/memory/cards/memory-architecture.md +0 -0
  921. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/memory/cards/memory-care-staleness.md +0 -0
  922. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/memory/cards/memory-scanner.md +0 -0
  923. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/memory/cards/multi-workspace-handoff-admin.md +0 -0
  924. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/memory/cards/obsidian-notes.md +0 -0
  925. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/memory/cards/pipeline-standups.md +0 -0
  926. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/memory/cards/token-glace-output-compaction.md +0 -0
  927. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/memory/cards/workspace-file-maintenance.md +0 -0
  928. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/memory-care/runbooks/daily-care-pass.json +0 -0
  929. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/memory-care/runbooks/ingest-sweep.json +0 -0
  930. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/memory-care/runbooks/weekly-outcome-ratchet.json +0 -0
  931. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/openclaw/README.md +0 -0
  932. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/openclaw/acp-escalation.openclaw.json +0 -0
  933. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/openclaw/memory-sweep-cron.openclaw.json +0 -0
  934. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/openclaw/model-aliases.openclaw.json +0 -0
  935. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/openclaw/ollama-memory-search.openclaw.json +0 -0
  936. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/opencode/memory-handoffs/TEMPLATE.md +0 -0
  937. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/openhands/memory-handoffs/TEMPLATE.md +0 -0
  938. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/pi/extensions/brigade-mcp-bridge.js +0 -0
  939. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/pi/memory-handoffs/TEMPLATE.md +0 -0
  940. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/qwen/memory-handoffs/TEMPLATE.md +0 -0
  941. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/repo/AGENTS.md +0 -0
  942. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/repo/CLAUDE.md +0 -0
  943. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/repo/INSTALL_FOR_AGENTS.md +0 -0
  944. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/rosters/budget-open-weight.toml +0 -0
  945. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/rosters/full-multi-lane.toml +0 -0
  946. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/rosters/minimal-single-cli.toml +0 -0
  947. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/rosters/review-heavy.toml +0 -0
  948. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/scripts/backup-restic.sh +0 -0
  949. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/brigade-work/CHANGELOG.md +0 -0
  950. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/brigade-work/SKILL.md +0 -0
  951. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/brigade-work/skill.json +0 -0
  952. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/card-refresh/CHANGELOG.md +0 -0
  953. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/card-refresh/SKILL.md +0 -0
  954. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/card-refresh/skill.json +0 -0
  955. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/forward-plan/CHANGELOG.md +0 -0
  956. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/forward-plan/SKILL.md +0 -0
  957. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/forward-plan/plan.template.json +0 -0
  958. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/forward-plan/skill.json +0 -0
  959. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/handoff-inbox-drain/CHANGELOG.md +0 -0
  960. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/handoff-inbox-drain/SKILL.md +0 -0
  961. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/handoff-inbox-drain/skill.json +0 -0
  962. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/note/CHANGELOG.md +0 -0
  963. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/note/SKILL.md +0 -0
  964. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/note/skill.json +0 -0
  965. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/ultra-work-scout/CHANGELOG.md +0 -0
  966. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/ultra-work-scout/SKILL.md +0 -0
  967. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/skills/ultra-work-scout/skill.json +0 -0
  968. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/stations/managed-snapshot.json +0 -0
  969. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/workspace/AGENTS.md +0 -0
  970. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/workspace/CLAUDE.md +0 -0
  971. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/workspace/HEARTBEAT.md +0 -0
  972. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/workspace/IDENTITY.md +0 -0
  973. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/workspace/INSTALL_FOR_AGENTS.md +0 -0
  974. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/workspace/MEMORY.md +0 -0
  975. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/workspace/SAFETY_RULES.md +0 -0
  976. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/workspace/SOUL.md +0 -0
  977. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/workspace/TOOLS.md +0 -0
  978. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/workspace/USER.md +0 -0
  979. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/workspace/rules/acceptance-driven-work.md +0 -0
  980. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates/workspace/rules/issue-tdd-loop.md +0 -0
  981. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/templates.py +0 -0
  982. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tokens_cmd.py +0 -0
  983. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/toml_compat.py +0 -0
  984. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/__init__.py +0 -0
  985. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/calls.py +0 -0
  986. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/catalog_health.py +0 -0
  987. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/catalog_manage.py +0 -0
  988. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/checkpoint_store.py +0 -0
  989. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/checkpoints.py +0 -0
  990. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/config.py +0 -0
  991. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/constants.py +0 -0
  992. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/helpers.py +0 -0
  993. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/issues.py +0 -0
  994. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/mcp.py +0 -0
  995. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/packs.py +0 -0
  996. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/paths.py +0 -0
  997. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/projections.py +0 -0
  998. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/runs.py +0 -0
  999. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/runtimes.py +0 -0
  1000. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/safety.py +0 -0
  1001. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/tools_cmd/status.py +0 -0
  1002. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/trust_gate.py +0 -0
  1003. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/untrusted.py +0 -0
  1004. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/untrusted_cmd.py +0 -0
  1005. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/verification_contract.py +0 -0
  1006. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/verify_manifest.py +0 -0
  1007. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/verify_trial.py +0 -0
  1008. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/version_cmd.py +0 -0
  1009. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/wiring.py +0 -0
  1010. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/__init__.py +0 -0
  1011. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/backup.py +0 -0
  1012. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/campaign.py +0 -0
  1013. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/claiming.py +0 -0
  1014. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/config.py +0 -0
  1015. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/constants.py +0 -0
  1016. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/edges.py +0 -0
  1017. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/footprint.py +0 -0
  1018. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/helpers.py +0 -0
  1019. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/imports.py +0 -0
  1020. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/inbox_lock.py +0 -0
  1021. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/ledger/__init__.py +0 -0
  1022. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/ledger/authority_store.py +0 -0
  1023. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/ledger/descriptor_anchors.py +0 -0
  1024. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/ledger/import_model.py +0 -0
  1025. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/ledger/inbox_provenance.py +0 -0
  1026. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/ledger/locking.py +0 -0
  1027. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/ledger/queries_handoffs.py +0 -0
  1028. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/ledger/tasks_plans.py +0 -0
  1029. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/nt_dirfd.py +0 -0
  1030. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/partition.py +0 -0
  1031. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/reviews.py +0 -0
  1032. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/scanner_platform.py +0 -0
  1033. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/scanners.py +0 -0
  1034. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/services.py +0 -0
  1035. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/session/__init__.py +0 -0
  1036. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/session/fleet_routing.py +0 -0
  1037. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/session/lifecycle.py +0 -0
  1038. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/session/run_status.py +0 -0
  1039. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/session/task_ops.py +0 -0
  1040. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/session_resume.py +0 -0
  1041. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/sweeps.py +0 -0
  1042. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/verify_ranking.py +0 -0
  1043. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_cmd/verify_scoreability.py +0 -0
  1044. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/work_run_archive.py +0 -0
  1045. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/worker_events.py +0 -0
  1046. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/worker_failure.py +0 -0
  1047. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/workflow_cmd.py +0 -0
  1048. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/worklore_brigade.py +0 -0
  1049. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/worklore_brigade_sync.py +0 -0
  1050. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/worklore_client.py +0 -0
  1051. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/worklore_github.py +0 -0
  1052. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/worklore_github_sync.py +0 -0
  1053. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/worklore_http.py +0 -0
  1054. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/worklore_ownership.py +0 -0
  1055. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/worklore_scope.py +0 -0
  1056. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/worklore_store.py +0 -0
  1057. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/worklore_store_operations.py +0 -0
  1058. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade/worklore_validate.py +0 -0
  1059. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade_cli.egg-info/dependency_links.txt +0 -0
  1060. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade_cli.egg-info/requires.txt +0 -0
  1061. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/src/brigade_cli.egg-info/top_level.txt +0 -0
  1062. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_aboyeur.py +0 -0
  1063. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_aboyeur_facade.py +0 -0
  1064. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_aboyeur_orchestrator_health_routing.py +0 -0
  1065. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_aboyeur_run_io.py +0 -0
  1066. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_aboyeur_seat_health_probe.py +0 -0
  1067. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_aboyeur_status.py +0 -0
  1068. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_acpx_adapter.py +0 -0
  1069. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_actionqueue.py +0 -0
  1070. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_add.py +0 -0
  1071. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_agent_change.py +0 -0
  1072. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_agent_change_approval_integration.py +0 -0
  1073. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_agent_change_approval_policy.py +0 -0
  1074. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_agent_change_approval_resources.py +0 -0
  1075. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_agent_notify_station_contracts.py +0 -0
  1076. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_agent_request.py +0 -0
  1077. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_agent_skill_format.py +0 -0
  1078. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_agent_write_probes.py +0 -0
  1079. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_agents.py +0 -0
  1080. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_agents_model_pin.py +0 -0
  1081. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_agents_oracle.py +0 -0
  1082. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_agents_windows_executable.py +0 -0
  1083. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_approval.py +0 -0
  1084. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_attestation.py +0 -0
  1085. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_attestation_input.py +0 -0
  1086. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_attestation_input_integration.py +0 -0
  1087. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_attestation_receipt.py +0 -0
  1088. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_authority_broker.py +0 -0
  1089. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_authority_store_hmac.py +0 -0
  1090. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_budgets.py +0 -0
  1091. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_candidate_set.py +0 -0
  1092. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_card_fingerprint.py +0 -0
  1093. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_card_identity.py +0 -0
  1094. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_care_cmd.py +0 -0
  1095. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_causal_receipt.py +0 -0
  1096. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_center_actions_cmd.py +0 -0
  1097. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_center_agent_activity.py +0 -0
  1098. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_center_dashboard.py +0 -0
  1099. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_center_page_load.py +0 -0
  1100. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_center_readiness_cmd.py +0 -0
  1101. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_center_report_cmd.py +0 -0
  1102. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_center_research_view.py +0 -0
  1103. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_center_serve.py +0 -0
  1104. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_ci_pytest_shard.py +0 -0
  1105. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claim_loss_review.py +0 -0
  1106. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_actions_diagnostics.py +0 -0
  1107. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_actions_evidence.py +0 -0
  1108. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_actions_http.py +0 -0
  1109. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_actions_import.py +0 -0
  1110. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_actions_metadata.py +0 -0
  1111. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_cloud.py +0 -0
  1112. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_cloud_adoption.py +0 -0
  1113. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_cloud_identity.py +0 -0
  1114. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_hooks_compaction_marker.py +0 -0
  1115. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_hooks_doctor.py +0 -0
  1116. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_hooks_entry.py +0 -0
  1117. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_hooks_envelope.py +0 -0
  1118. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_hooks_fingerprint.py +0 -0
  1119. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_hooks_heartbeat.py +0 -0
  1120. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_hooks_runtime.py +0 -0
  1121. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_hooks_settings_merge.py +0 -0
  1122. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_hooks_stdin_bounds.py +0 -0
  1123. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_hooks_tilde_user.py +0 -0
  1124. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_hooks_user_scope.py +0 -0
  1125. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_hooks_user_target.py +0 -0
  1126. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_review_evidence.py +0 -0
  1127. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_review_history.py +0 -0
  1128. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_review_import.py +0 -0
  1129. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_claude_workflow.py +0 -0
  1130. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_cli_help.py +0 -0
  1131. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_cli_inventory_contract.py +0 -0
  1132. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_cli_setup.py +0 -0
  1133. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_cli_update.py +0 -0
  1134. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_cloud_tracker.py +0 -0
  1135. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_code_export.py +0 -0
  1136. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_code_graph_brief.py +0 -0
  1137. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_code_reference_schema.py +0 -0
  1138. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_code_verbs_and_target.py +0 -0
  1139. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_codex_appserver.py +0 -0
  1140. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_codex_appserver_integration.py +0 -0
  1141. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_codex_cloud.py +0 -0
  1142. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_commit_linkage.py +0 -0
  1143. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_completions.py +0 -0
  1144. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_component_bins.py +0 -0
  1145. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_component_install.py +0 -0
  1146. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_component_manifest.py +0 -0
  1147. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_component_manifest_provenance.py +0 -0
  1148. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_component_paths.py +0 -0
  1149. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_component_report.py +0 -0
  1150. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_component_state.py +0 -0
  1151. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_config.py +0 -0
  1152. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_conftest_home_isolation.py +0 -0
  1153. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_conftest_host_daemons.py +0 -0
  1154. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_context_cmd.py +0 -0
  1155. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_context_eval.py +0 -0
  1156. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_context_learning_closeout_cmd.py +0 -0
  1157. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_context_preview.py +0 -0
  1158. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_cosign_attestation.py +0 -0
  1159. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_cosign_statement_profiles.py +0 -0
  1160. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_cursor_install_state_migration.py +0 -0
  1161. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_cursor_user_cmd.py +0 -0
  1162. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_daily_driver_cmd.py +0 -0
  1163. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_dashboard_code_graph.py +0 -0
  1164. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_dashboard_handoffs.py +0 -0
  1165. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_dashboard_memory_operations.py +0 -0
  1166. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_dashboard_outcomes.py +0 -0
  1167. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_dashboard_runs.py +0 -0
  1168. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_dashboard_status.py +0 -0
  1169. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_dashboard_work.py +0 -0
  1170. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_direct_worker_finish_tree.py +0 -0
  1171. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_directory_authority_legacy_migration.py +0 -0
  1172. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_dirfd.py +0 -0
  1173. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_doctor.py +0 -0
  1174. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_doctor_agent.py +0 -0
  1175. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_dogfood_cmd.py +0 -0
  1176. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_dot_contracts.py +0 -0
  1177. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_evidence_ack_acceptance.py +0 -0
  1178. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_evidence_ack_crypto.py +0 -0
  1179. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_evidence_ack_protocol.py +0 -0
  1180. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_evidence_branded_surface.py +0 -0
  1181. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_evidence_cmd.py +0 -0
  1182. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_evidence_derivative.py +0 -0
  1183. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_evidence_package.py +0 -0
  1184. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_evidence_package_snapshot.py +0 -0
  1185. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_evidence_redaction.py +0 -0
  1186. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_evidence_runtime.py +0 -0
  1187. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_extras_gate.py +0 -0
  1188. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_action_dispatch_cmd.py +0 -0
  1189. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_agent_unread.py +0 -0
  1190. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_authority_proof.py +0 -0
  1191. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_campaign.py +0 -0
  1192. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_campaign_authority.py +0 -0
  1193. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_center_links.py +0 -0
  1194. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_claim_display.py +0 -0
  1195. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_claim_generations.py +0 -0
  1196. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_claim_release.py +0 -0
  1197. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_claim_target.py +0 -0
  1198. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_cloud.py +0 -0
  1199. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_dot.py +0 -0
  1200. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_enrollment.py +0 -0
  1201. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_export.py +0 -0
  1202. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_hub_capacity.py +0 -0
  1203. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_hub_event_bounds.py +0 -0
  1204. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_hub_grokbot_expiry.py +0 -0
  1205. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_hub_policy.py +0 -0
  1206. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_hub_request_bounds.py +0 -0
  1207. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_hub_review_bounds.py +0 -0
  1208. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_hub_server.py +0 -0
  1209. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_master_roster.py +0 -0
  1210. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_message_grants.py +0 -0
  1211. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_messages_metadata.py +0 -0
  1212. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_messages_startup.py +0 -0
  1213. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_model_admission.py +0 -0
  1214. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_model_inventory.py +0 -0
  1215. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_model_roster.py +0 -0
  1216. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_models_list.py +0 -0
  1217. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_native_launch_binding.py +0 -0
  1218. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_nodes.py +0 -0
  1219. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_policy.py +0 -0
  1220. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_policy_api.py +0 -0
  1221. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_policy_api_context.py +0 -0
  1222. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_policy_cli.py +0 -0
  1223. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_policy_core_completion.py +0 -0
  1224. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_policy_delegation.py +0 -0
  1225. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_policy_migration.py +0 -0
  1226. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_policy_page.py +0 -0
  1227. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_quota.py +0 -0
  1228. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_repo_policy_page.py +0 -0
  1229. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_roster_page.py +0 -0
  1230. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_session_bootstrap.py +0 -0
  1231. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_session_presence.py +0 -0
  1232. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_sync.py +0 -0
  1233. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_t3_contract.py +0 -0
  1234. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_work_next.py +0 -0
  1235. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fleet_work_ownership_cli.py +0 -0
  1236. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_forward_plan_skill.py +0 -0
  1237. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_fragments.py +0 -0
  1238. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_friction_cmd.py +0 -0
  1239. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_generated_patch_quarantine.py +0 -0
  1240. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_gitignore.py +0 -0
  1241. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_governance_inventory.py +0 -0
  1242. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_graphtrail_delta.py +0 -0
  1243. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grok_hook_runtime.py +0 -0
  1244. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_backup_actions.py +0 -0
  1245. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_backup_adapters.py +0 -0
  1246. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_backup_contracts.py +0 -0
  1247. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_backup_ledger.py +0 -0
  1248. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_backup_lifecycle.py +0 -0
  1249. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_backup_runtime.py +0 -0
  1250. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_build_feed.py +0 -0
  1251. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_client_identity.py +0 -0
  1252. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_feed.py +0 -0
  1253. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_findings.py +0 -0
  1254. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_findings_relay.py +0 -0
  1255. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_fleet_actions.py +0 -0
  1256. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_fleet_app.py +0 -0
  1257. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_fleet_contracts.py +0 -0
  1258. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_fleet_exec.py +0 -0
  1259. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_fleet_ledger.py +0 -0
  1260. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_fleet_lifecycle.py +0 -0
  1261. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_fleet_normalize.py +0 -0
  1262. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_fleet_probes.py +0 -0
  1263. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_fleet_registry.py +0 -0
  1264. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_fleet_remediation.py +0 -0
  1265. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_fleet_runtime_config.py +0 -0
  1266. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_fleet_tools.py +0 -0
  1267. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_jobs.py +0 -0
  1268. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_mcp.py +0 -0
  1269. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_n8n_actions.py +0 -0
  1270. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_n8n_client.py +0 -0
  1271. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_n8n_contracts.py +0 -0
  1272. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_n8n_lifecycle.py +0 -0
  1273. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_n8n_runtime.py +0 -0
  1274. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_n8n_tools.py +0 -0
  1275. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_obsidian_actions.py +0 -0
  1276. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_obsidian_adapters.py +0 -0
  1277. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_obsidian_capabilities.py +0 -0
  1278. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_obsidian_client.py +0 -0
  1279. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_obsidian_contracts.py +0 -0
  1280. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_obsidian_excalidraw_client.py +0 -0
  1281. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_obsidian_lifecycle.py +0 -0
  1282. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_obsidian_operator_install.py +0 -0
  1283. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_obsidian_operator_plugin.py +0 -0
  1284. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_obsidian_phase2.py +0 -0
  1285. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_obsidian_policy.py +0 -0
  1286. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_obsidian_runtime.py +0 -0
  1287. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_operations_relay.py +0 -0
  1288. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_ops.py +0 -0
  1289. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_pack_relay.py +0 -0
  1290. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_packs.py +0 -0
  1291. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_reconcile.py +0 -0
  1292. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_scout_feed.py +0 -0
  1293. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_t3_contracts.py +0 -0
  1294. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_t3_fleet.py +0 -0
  1295. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_wazuh_contracts.py +0 -0
  1296. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_wazuh_lifecycle.py +0 -0
  1297. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_wazuh_normalize.py +0 -0
  1298. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_wazuh_policy.py +0 -0
  1299. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_wazuh_store.py +0 -0
  1300. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_grokbot_wazuh_tools.py +0 -0
  1301. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_handoff.py +0 -0
  1302. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_handoff_cmd.py +0 -0
  1303. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_handoff_injection_lint.py +0 -0
  1304. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_handoff_readability.py +0 -0
  1305. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_harness_conformance_probe.py +0 -0
  1306. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_harness_profile_cmd.py +0 -0
  1307. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_harness_user_scope.py +0 -0
  1308. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_harness_user_scope_slice2.py +0 -0
  1309. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_hub_seat_resolution.py +0 -0
  1310. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_ingest.py +0 -0
  1311. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_init.py +0 -0
  1312. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_install.py +0 -0
  1313. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_instruction_profiles.py +0 -0
  1314. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_issue266_benchmark.py +0 -0
  1315. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_issue266_work_status_memory.py +0 -0
  1316. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_issue362_code_evidence_facades.py +0 -0
  1317. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_journal_export.py +0 -0
  1318. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_ledger_1233_findings.py +0 -0
  1319. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_ledger_facade.py +0 -0
  1320. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_localio.py +0 -0
  1321. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_managed.py +0 -0
  1322. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_managed_block.py +0 -0
  1323. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_managed_snapshot.py +0 -0
  1324. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_mcp_adapters.py +0 -0
  1325. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_mcp_cmd.py +0 -0
  1326. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_mcp_fidelity.py +0 -0
  1327. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_mcp_integration.py +0 -0
  1328. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_mcp_projection.py +0 -0
  1329. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_mcp_runtime.py +0 -0
  1330. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_mcp_server.py +0 -0
  1331. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_mcp_url_only_import.py +0 -0
  1332. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_mcp_user_scope.py +0 -0
  1333. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_memory_care_skills.py +0 -0
  1334. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_memory_cmd.py +0 -0
  1335. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_memory_hooks.py +0 -0
  1336. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_memory_identity_audit.py +0 -0
  1337. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_memory_inventory_cmd.py +0 -0
  1338. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_memory_proposal_capabilities.py +0 -0
  1339. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_memory_proposals.py +0 -0
  1340. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_memory_retrieval_eval.py +0 -0
  1341. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_memory_search_mcp.py +0 -0
  1342. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_memory_search_redundancy.py +0 -0
  1343. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_memory_task_recall.py +0 -0
  1344. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_memory_topology_cmd.py +0 -0
  1345. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_memory_vault_projection.py +0 -0
  1346. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_memory_vault_propose.py +0 -0
  1347. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_memory_vault_search.py +0 -0
  1348. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_message_envelope.py +0 -0
  1349. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_model_inventory.py +0 -0
  1350. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_model_scorecard.py +0 -0
  1351. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_model_seat_denial.py +0 -0
  1352. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_model_trials.py +0 -0
  1353. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_model_trials_adversarial_fixtures.py +0 -0
  1354. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_module_size_ratchet.py +0 -0
  1355. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_mypy_override_ratchet.py +0 -0
  1356. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_neutrality.py +0 -0
  1357. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_node.py +0 -0
  1358. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_notifications_cmd.py +0 -0
  1359. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_opencode_mcp_contract.py +0 -0
  1360. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_opencode_profile_contract.py +0 -0
  1361. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_operator_checkup.py +0 -0
  1362. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_operator_cmd.py +0 -0
  1363. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_outcome.py +0 -0
  1364. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_outcome_activegraph.py +0 -0
  1365. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_outcome_backfill_scorecard.py +0 -0
  1366. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_outcome_cmd.py +0 -0
  1367. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_outcome_execute.py +0 -0
  1368. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_outcome_infrastructure_attribution.py +0 -0
  1369. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_outcome_repair.py +0 -0
  1370. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_outcome_reused_receipt_dedup.py +0 -0
  1371. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_pantry_cmd.py +0 -0
  1372. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_pantry_compat.py +0 -0
  1373. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_parity_backlog.py +0 -0
  1374. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_phase257_facades.py +0 -0
  1375. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_phase_ledger_session_cmd.py +0 -0
  1376. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_phases_cmd_facade.py +0 -0
  1377. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_pi_mcp_bridge.py +0 -0
  1378. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_posix_facade_behaviour.py +0 -0
  1379. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_posix_facade_guard.py +0 -0
  1380. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_pre_push_hook.py +0 -0
  1381. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_privacy_regression.py +0 -0
  1382. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_proc.py +0 -0
  1383. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_producer_run_id.py +0 -0
  1384. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_profiles.py +0 -0
  1385. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_projection_cli.py +0 -0
  1386. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_projection_conformance.py +0 -0
  1387. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_projection_kernel.py +0 -0
  1388. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_prompt.py +0 -0
  1389. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_provenance_envelope.py +0 -0
  1390. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_read_only_enforcement.py +0 -0
  1391. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_receipt_schema_audit.py +0 -0
  1392. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_receipt_signing.py +0 -0
  1393. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_receipts_cmd.py +0 -0
  1394. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_receipts_trailer.py +0 -0
  1395. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_reconfigure.py +0 -0
  1396. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_registry.py +0 -0
  1397. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_release_checklist.py +0 -0
  1398. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_release_ci_health_cmd.py +0 -0
  1399. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_release_cmd.py +0 -0
  1400. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_release_manifest_generator.py +0 -0
  1401. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_release_metadata.py +0 -0
  1402. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_release_readiness_hygiene_cmd.py +0 -0
  1403. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_release_reconcile_evidence_cmd.py +0 -0
  1404. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_release_smoke_health_cmd.py +0 -0
  1405. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_release_train_evidence_cmd.py +0 -0
  1406. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_release_version_guard.py +0 -0
  1407. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_release_version_sync.py +0 -0
  1408. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_release_waivers_manifest_cmd.py +0 -0
  1409. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_repeat_watch_approval_runner.py +0 -0
  1410. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_report_review_closeout_cmd.py +0 -0
  1411. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_reportstore.py +0 -0
  1412. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_repos_actions_cmd.py +0 -0
  1413. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_repos_adoption_cmd.py +0 -0
  1414. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_repos_cmd.py +0 -0
  1415. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_repos_cmd_facade.py +0 -0
  1416. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_repos_friction_cmd.py +0 -0
  1417. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_repos_release_train_cmd.py +0 -0
  1418. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_repos_sweep_health_cmd.py +0 -0
  1419. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_acceptance.py +0 -0
  1420. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_browser_ai.py +0 -0
  1421. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_claim_audit.py +0 -0
  1422. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_cli_sources.py +0 -0
  1423. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_cmd.py +0 -0
  1424. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_config.py +0 -0
  1425. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_doctor.py +0 -0
  1426. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_engine.py +0 -0
  1427. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_extract.py +0 -0
  1428. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_finding_envelope.py +0 -0
  1429. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_handoff.py +0 -0
  1430. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_llm.py +0 -0
  1431. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_local_sources.py +0 -0
  1432. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_provenance.py +0 -0
  1433. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_registry.py +0 -0
  1434. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_report.py +0 -0
  1435. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_review_regressions.py +0 -0
  1436. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_types.py +0 -0
  1437. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_research_web.py +0 -0
  1438. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_result_integrity.py +0 -0
  1439. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_roadmap_cmd.py +0 -0
  1440. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_roadmap_inventory_cmd.py +0 -0
  1441. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_roster.py +0 -0
  1442. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_roster_cmd.py +0 -0
  1443. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_roster_doctor.py +0 -0
  1444. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_route_policy.py +0 -0
  1445. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_route_receipts.py +0 -0
  1446. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_router.py +0 -0
  1447. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_router_properties.py +0 -0
  1448. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_audit.py +0 -0
  1449. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_budget.py +0 -0
  1450. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_checkpoint.py +0 -0
  1451. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_control.py +0 -0
  1452. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_detach.py +0 -0
  1453. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_dirfd.py +0 -0
  1454. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_event_cursor.py +0 -0
  1455. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_events.py +0 -0
  1456. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_events_cursor_control.py +0 -0
  1457. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_journal.py +0 -0
  1458. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_journal_measurement.py +0 -0
  1459. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_journal_process_qualification.py +0 -0
  1460. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_lifecycle.py +0 -0
  1461. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_preference.py +0 -0
  1462. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_projector.py +0 -0
  1463. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_reap.py +0 -0
  1464. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_receipts.py +0 -0
  1465. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_redaction.py +0 -0
  1466. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_resume.py +0 -0
  1467. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_seat.py +0 -0
  1468. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_shadow.py +0 -0
  1469. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_transport.py +0 -0
  1470. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_transport_dag.py +0 -0
  1471. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_transport_env.py +0 -0
  1472. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_transport_failfast.py +0 -0
  1473. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_transport_recovery.py +0 -0
  1474. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_run_worktree.py +0 -0
  1475. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_runbook_cmd.py +0 -0
  1476. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_runbook_import.py +0 -0
  1477. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_runguard.py +0 -0
  1478. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_runguard_wait.py +0 -0
  1479. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_runs_cmd.py +0 -0
  1480. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_runs_diff.py +0 -0
  1481. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_runs_json_contracts.py +0 -0
  1482. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_runs_serve.py +0 -0
  1483. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_runs_watch.py +0 -0
  1484. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_scanner_runs_dir_adoption.py +0 -0
  1485. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_scorecard.py +0 -0
  1486. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_scorecard_reconcile.py +0 -0
  1487. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_scrub.py +0 -0
  1488. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_search_cmd.py +0 -0
  1489. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_seat_health.py +0 -0
  1490. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_seat_health_policy.py +0 -0
  1491. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_security_cmd.py +0 -0
  1492. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_security_diff.py +0 -0
  1493. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_security_template_audit_cmd.py +0 -0
  1494. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_selection.py +0 -0
  1495. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_size_ratchet_baseline.py +0 -0
  1496. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_skill_obligations_audit.py +0 -0
  1497. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_skill_templates_metadata.py +0 -0
  1498. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_skills_cmd.py +0 -0
  1499. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_skills_cmd_facade.py +0 -0
  1500. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_skills_state_windows.py +0 -0
  1501. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_station.py +0 -0
  1502. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_station_manifest.py +0 -0
  1503. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_stations_discover.py +0 -0
  1504. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_stations_verify.py +0 -0
  1505. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_status.py +0 -0
  1506. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_subprocess_guards.py +0 -0
  1507. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_surface_aware_install.py +0 -0
  1508. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_telemetry_export.py +0 -0
  1509. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_template_profiles.py +0 -0
  1510. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_test_fixture_contract.py +0 -0
  1511. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_thread_sync.py +0 -0
  1512. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_tokens_cmd.py +0 -0
  1513. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_toml_compat.py +0 -0
  1514. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_tool_output_compaction.py +0 -0
  1515. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_tools_cmd_facade.py +0 -0
  1516. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_trust_capability.py +0 -0
  1517. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_untrusted.py +0 -0
  1518. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_untrusted_cmd.py +0 -0
  1519. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_verification_contract.py +0 -0
  1520. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_verify_brigade_skill.py +0 -0
  1521. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_verify_manifest_tracked.py +0 -0
  1522. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_verify_parallel.py +0 -0
  1523. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_verify_script.py +0 -0
  1524. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_verify_trial.py +0 -0
  1525. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_version_sync_script.py +0 -0
  1526. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_waiver_policy_health_cmd.py +0 -0
  1527. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_windows_job.py +0 -0
  1528. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_windows_pytest.py +0 -0
  1529. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_windows_read_security.py +0 -0
  1530. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_wiring_resolve_target.py +0 -0
  1531. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_backup.py +0 -0
  1532. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_campaign.py +0 -0
  1533. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_claim.py +0 -0
  1534. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_dispatch_annotations.py +0 -0
  1535. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_edges.py +0 -0
  1536. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_facade.py +0 -0
  1537. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_footprint.py +0 -0
  1538. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_imports.py +0 -0
  1539. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_ledger.py +0 -0
  1540. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_ledger_integrity.py +0 -0
  1541. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_partition.py +0 -0
  1542. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_reviews.py +0 -0
  1543. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_scanners.py +0 -0
  1544. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_services.py +0 -0
  1545. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_session.py +0 -0
  1546. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_sweeps.py +0 -0
  1547. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_verify_ranking.py +0 -0
  1548. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_cmd_work_graph_hardening.py +0 -0
  1549. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_import_inbox_windows.py +0 -0
  1550. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_import_provenance_stamp.py +0 -0
  1551. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_run_archive.py +0 -0
  1552. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_work_store_measurement.py +0 -0
  1553. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_worker_events.py +0 -0
  1554. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_worker_failure.py +0 -0
  1555. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_workflow_cmd.py +0 -0
  1556. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_worklore_brigade.py +0 -0
  1557. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_worklore_client.py +0 -0
  1558. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_worklore_github.py +0 -0
  1559. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_worklore_http.py +0 -0
  1560. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_worklore_ownership.py +0 -0
  1561. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_worklore_scope.py +0 -0
  1562. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_worklore_store.py +0 -0
  1563. {brigade_cli-0.28.0 → brigade_cli-0.30.0}/tests/test_worklore_validate.py +0 -0
@@ -0,0 +1,214 @@
1
+ Metadata-Version: 2.4
2
+ Name: brigade-cli
3
+ Version: 0.30.0
4
+ Summary: Your agents run loops. Brigade keeps the receipts. Local control plane for multi-agent coding: share MCP/tools/memory, remember via handoffs, prove with file receipts, improve by promoting skills only on real exit codes. Claude Code, Codex, Grok, Hermes, OpenClaw, and more. Stations for evidence, code graph, pantry, skills. pipx install brigade-cli.
5
+ Author-email: Solomon Neas <me@solomonneas.dev>
6
+ License: MIT
7
+ Project-URL: Homepage, https://brigade.tools
8
+ Project-URL: Documentation, https://brigade.tools/docs
9
+ Project-URL: Compare, https://brigade.tools/compare/sync-mcp-servers-across-coding-agents
10
+ Project-URL: Handoffs, https://brigade.tools/compare/memory-handoffs-across-coding-agents
11
+ Project-URL: CodeGraph, https://brigade.tools/compare/local-code-graph-for-ai-coding-agents
12
+ Project-URL: Evidence, https://brigade.tools/compare/local-evidence-ledger-for-agent-work
13
+ Project-URL: Skills, https://brigade.tools/compare/portable-skills-across-coding-agents
14
+ Project-URL: LLMs, https://brigade.tools/llms.txt
15
+ Project-URL: Repository, https://github.com/escoffier-labs/brigade
16
+ Project-URL: Cookbook, https://escoffierlabs.dev/cookbook/
17
+ Project-URL: CookbookSource, https://github.com/escoffier-labs/solos-cookbook
18
+ Project-URL: OpenClaw, https://github.com/solomonneas/openclaw
19
+ Project-URL: ContentGuard, https://github.com/escoffier-labs/content-guard
20
+ Project-URL: AgentPantry, https://github.com/escoffier-labs/agentpantry
21
+ Project-URL: MiseLedger, https://brigade.tools/miseledger
22
+ Project-URL: GraphTrail, https://brigade.tools/graphtrail
23
+ Project-URL: Issues, https://github.com/escoffier-labs/brigade/issues
24
+ Keywords: agents,ai-agents,agent-memory,agent-handoffs,ai-memory,mcp,mcp-config,mcp-sync,model-context-protocol,openclaw,claude-code,codex,opencode,grok,hermes,memory,bootstrap,brigade,brigade-cli,operator,local-first,guardrails,agents-md,miseledger,graphtrail,agentpantry,code-graph,evidence-ledger
25
+ Classifier: Development Status :: 3 - Alpha
26
+ Classifier: License :: OSI Approved :: MIT License
27
+ Classifier: Programming Language :: Python :: 3
28
+ Classifier: Programming Language :: Python :: 3.10
29
+ Classifier: Programming Language :: Python :: 3.11
30
+ Classifier: Programming Language :: Python :: 3.12
31
+ Classifier: Operating System :: Microsoft :: Windows
32
+ Classifier: Operating System :: MacOS
33
+ Classifier: Operating System :: POSIX :: Linux
34
+ Requires-Python: >=3.10
35
+ Description-Content-Type: text/markdown
36
+ License-File: LICENSE
37
+ Provides-Extra: dev
38
+ Requires-Dist: pytest>=7; extra == "dev"
39
+ Requires-Dist: pytest-cov>=5; extra == "dev"
40
+ Requires-Dist: pytest-xdist>=3.6; extra == "dev"
41
+ Requires-Dist: ruff>=0.15; extra == "dev"
42
+ Requires-Dist: mypy>=1.11; extra == "dev"
43
+ Provides-Extra: grokbot
44
+ Requires-Dist: mcp<3,>=2; extra == "grokbot"
45
+ Requires-Dist: pyjwt[crypto]>=2; extra == "grokbot"
46
+ Provides-Extra: research
47
+ Requires-Dist: playwright>=1.40; extra == "research"
48
+ Dynamic: license-file
49
+
50
+ <p align="center">
51
+ <img src="docs/assets/brigade-wordmark.svg" alt="Brigade (by Escoffier Labs)" width="640">
52
+ </p>
53
+
54
+ <p align="center">
55
+ One shared record for every coding agent you run: ready work, safe claims, proof that checks passed, and memory that carries over between tools.
56
+ </p>
57
+
58
+ <p align="center">
59
+ <a href="https://brigade.tools/docs/getting-started/install">Install</a> ·
60
+ <a href="https://brigade.tools/docs">Docs</a> ·
61
+ <a href="docs/comparison.md">Compare</a> ·
62
+ <a href="QUICKSTART.md">Quickstart</a>
63
+ </p>
64
+
65
+ <p align="center">
66
+ <img src="https://shieldcn.dev/github/ci/escoffier-labs/brigade.svg?workflow=ci.yml&branch=main&label=ci&size=xs" alt="CI status">
67
+ <img src="https://shieldcn.dev/pypi/v/brigade-cli.svg?label=pypi&size=xs" alt="PyPI version">
68
+ <img src="https://shieldcn.dev/https/raw.githubusercontent.com/escoffier-labs/brigade/download-metrics/downloads.json.svg?size=xs" alt="Combined PyPI and npm downloads per month">
69
+ <img src="https://shieldcn.dev/badge/python-3.10+-blue.svg?logo=python&logoColor=white&size=xs" alt="Python 3.10+">
70
+ <img src="https://shieldcn.dev/badge/rust-code_graph-b7410e.svg?logo=rust&logoColor=white&size=xs" alt="Rust: code graph engine">
71
+ <img src="https://shieldcn.dev/badge/go-evidence_log-00add8.svg?logo=go&logoColor=white&size=xs" alt="Go: evidence log engine">
72
+ <img src="https://shieldcn.dev/badge/license-MIT-4e7247.svg?size=xs" alt="MIT license">
73
+ </p>
74
+
75
+ Brigade is a local CLI for people who point Claude Code, Codex, Cursor, and other agents at the same repos. Each harness keeps its own notes, its own MCP config, and its own idea of what "tests pass" means. Brigade gives them one ledger in the repo instead: what is ready, who claimed it, which commands actually ran and how they exited, and what the last session handed off.
76
+
77
+ **Stable:** v0.29.0 (`brigade-cli==0.29.0` on PyPI, `@escoffier-labs/brigade@0.29.0` on npm). **Beta:** main is the 0.30 preview line. See the [changelog](CHANGELOG.md) for what each release changed.
78
+
79
+ The downloads badge sums `brigade-cli` on PyPI (excluding mirrors) and `@escoffier-labs/brigade` on npm over the same 30 completed UTC days. Downloads include automation and do not count unique people. The [metric JSON](https://raw.githubusercontent.com/escoffier-labs/brigade/download-metrics/downloads.json) records each source, the period, and the last successful refresh. npm platform companions are excluded. Daily refreshes retain the previous metric if a source fails validation or its latest day is more than three UTC days old.
80
+
81
+ ## What it does
82
+
83
+ - **Ready work and safe claims.** `brigade work ready` lists unblocked tasks. Claims are atomic, so two agents cannot take the same item.
84
+ - **Verification receipts.** A check run through Brigade records the command, the real exit code, and the Git state. An agent's "tests pass" becomes something you can open and read.
85
+ - **Shared memory with an owner.** Agents write handoffs. The memory owner lints and files them. Safe notes can auto-file, and risky ones wait for review. Session-start recall is capped.
86
+ - **One tool catalog, previewed first.** MCP servers, tools, and skills are defined once and shown as a dry run before Brigade writes them into each harness.
87
+ - **Cloud agents tracked next to local ones.** Tasks you hand to Codex Cloud, Cursor cloud agents, or Jules are registered with their provider task ID and reconciled against provider and GitHub state, so they show up beside local runs instead of disappearing into another tab.
88
+ - **Optional fleet view.** A self-hosted hub can arbitrate repo claims across machines and show runs, harness sessions, and cloud tasks on one board.
89
+
90
+ Learning in Brigade means scoring skills against captured receipts, then promoting or rolling them back. It is not autonomous reflective memory.
91
+
92
+ <details>
93
+ <summary><b>Examples</b></summary>
94
+
95
+ **Two agents, one backlog.** Each agent asks for the next ready task. The second claim on the same item fails with exit 13 and names the holder.
96
+
97
+ ```bash
98
+ brigade work ready --parallel-safe # ready tasks, grouped into waves that do not touch the same files
99
+ brigade work claim --next --actor codex # take the highest-priority ready task
100
+ ```
101
+
102
+ **"Tests pass" with a receipt.** The agent runs the check through Brigade instead of reporting it from memory.
103
+
104
+ ```bash
105
+ brigade work verify run --target . --command "pytest -q"
106
+ ```
107
+
108
+ The receipt keeps the command, exit code, Git commit, and dirty state, so a reviewer can check the claim without rerunning it.
109
+
110
+ **Switching harnesses mid-task.** Claude Code ends a session with a handoff. The next Codex session starts from the brief instead of a blank context.
111
+
112
+ ```bash
113
+ brigade handoff lint # check the handoff before it is filed
114
+ brigade work brief --target . # what the next agent sees at session start
115
+ ```
116
+
117
+ **One MCP config for every tool.**
118
+
119
+ ```bash
120
+ brigade mcp plan # read-only preview
121
+ brigade mcp sync --write # merge into each harness's native config
122
+ ```
123
+
124
+ </details>
125
+
126
+ ## Install
127
+
128
+ If Node.js 22 or newer and npm are installed on glibc Linux x64/ARM64, macOS x64/ARM64, or Windows x64, install the [npm package](https://www.npmjs.com/package/@escoffier-labs/brigade). This route does not need Python or pipx first:
129
+
130
+ ```bash
131
+ npm install --global @escoffier-labs/brigade@0.29.0
132
+ brigade setup
133
+ ```
134
+
135
+ To try it without a global install, run each command through npx instead, for example `npx --yes @escoffier-labs/brigade@0.29.0 --version`. The package brings its own uv, through platform packages that npm installs as optional dependencies, and the published 0.29.0 wheel. Leave optional dependencies enabled. The first launch downloads a managed Python, so it needs network access. Install Git yourself for repository features. npm targets are Linux (glibc) x64 and ARM64, macOS x64 and ARM64, and Windows x64. Upgrade with npm, because `brigade update` refuses npm-managed installs. Platform details and known limits: [npm package notes](npm/feasibility/README.md).
136
+
137
+ On other platforms, or to use Python 3.10 or newer directly:
138
+
139
+ ```bash
140
+ pipx install brigade-cli # or: uv tool install brigade-cli
141
+ brigade setup
142
+ ```
143
+
144
+ Then follow the [install guide](https://brigade.tools/docs/getting-started/install) or [QUICKSTART.md](QUICKSTART.md). To let your coding agent do the setup, hand it [first 10 minutes](docs/first-10-minutes.md) and the [agents guide](docs/agents-guide.md).
145
+
146
+ For preview builds on a pipx install, run `brigade update --channel beta`. Details: [update channels](docs/update-channels.md).
147
+
148
+ ## How it compares
149
+
150
+ Most neighbors go deeper on one layer. Brigade connects work, memory, tool config, and evidence around the same coding-agent task. Where a neighbor is stronger, its cell says so. Sources, dated notes, and projects that left these tables: [docs/comparison.md](docs/comparison.md) (checked 2026-10-18).
151
+
152
+ Key: <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Supported · <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Partial · <img src="docs/assets/status-undocumented.svg" width="10" height="10" alt="Not documented"> Not documented
153
+
154
+ ### Work and orchestration
155
+
156
+ | Project | Ready work | Claim safety | Parallel and run control | Task store | Verification |
157
+ | --- | --- | --- | --- | --- | --- |
158
+ | [Brigade](https://github.com/escoffier-labs/brigade) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Ready set + parallel-safe waves | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Fail-closed claims, optional hub | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Waves, campaigns, declared limits | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Local JSON ledger, not a task DB | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Command receipts |
159
+ | [Beads](https://github.com/gastownhall/beads) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Built in | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Atomic claim | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Agent workflow + Dolt sync | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Dolt-backed distributed store | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Task history |
160
+ | [Gas Town](https://github.com/gastownhall/gastown) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Beads-backed | <img src="docs/assets/status-undocumented.svg" width="10" height="10" alt="Not documented"> Not documented | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Multi-agent runtime | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Beads ledger | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Refinery merge-queue gates |
161
+ | [Claude Code agent teams](https://code.claude.com/docs/en/agent-teams) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Shared list with dependencies | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> File-locked self-claim | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Lead + teammates, experimental | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> One Claude Code session | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> TaskCompleted hook can block |
162
+ | [Backlog.md](https://github.com/MrLesk/Backlog.md) | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Board + dependencies | <img src="docs/assets/status-undocumented.svg" width="10" height="10" alt="Not documented"> Not documented | <img src="docs/assets/status-undocumented.svg" width="10" height="10" alt="Not documented"> Not documented | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Markdown in Git | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Acceptance criteria |
163
+
164
+ ### Memory
165
+
166
+ | Project | Durable memory | Capture and recall | Care and operations | Learning | Provenance |
167
+ | --- | --- | --- | --- | --- | --- |
168
+ | [Brigade](https://github.com/escoffier-labs/brigade) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Shared files + cards | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Linted handoffs + bounded recall | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Owner policy + Memory Operations | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Outcome score, promote, rollback | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Work receipts + sources |
169
+ | [agentmemory](https://github.com/rohitg00/agentmemory) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Shared coding-agent memory | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Hooks + MCP + REST | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Decay, audit, governed delete | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Lessons + reflect | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Write-time origin + citations |
170
+ | [Hindsight](https://github.com/vectorize-io/hindsight) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Facts + experiences + models | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Retain + recall | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Reflect + feedback | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Reflective memory learning | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Temporal + causal links |
171
+ | [Mem0](https://github.com/mem0ai/mem0) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> User + agent + session | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Extraction + hybrid search | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> History + metadata | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Extraction + retrieval | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Timestamps + entities |
172
+ | [Built-in harness memory](https://code.claude.com/docs/en/memory) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Per tool | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Rules + auto memory | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Varies by harness | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Harness-specific | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Harness-specific |
173
+
174
+ ### Tools and configuration
175
+
176
+ | Project | MCP | Rules and skills | Projection | Source of truth | Audit and rollback |
177
+ | --- | --- | --- | --- | --- | --- |
178
+ | [Brigade](https://github.com/escoffier-labs/brigade) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> MCP + tools catalog | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Skills + harness adapters | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Dry run first, then write | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Brigade catalog | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Preserve, gate, roll back |
179
+ | [Rulesync](https://github.com/dyoshikawa/rulesync) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Supported | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Rules, skills, hooks, subagents | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Per-target generation | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Rulesync project | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Generated outputs |
180
+ | [Ruler](https://github.com/intellectronica/ruler) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Supported | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Rules, skills, subagents | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Per-agent files | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> `.ruler/` directory | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Gitignore automation, no rollback |
181
+ | [add-mcp](https://github.com/neon-solutions/add-mcp) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> MCP servers | <img src="docs/assets/status-undocumented.svg" width="10" height="10" alt="Not documented"> Not documented | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Maps fields into native files | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Native files + sync | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Warns on dropped fields |
182
+ | [agentsync](https://agentsync.cc/) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Many agent targets | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Skills, hooks, memory, plugins | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Native/lossy/skipped report | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Canonical config | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Native/lossy/skipped report |
183
+
184
+ ### Evidence and operations
185
+
186
+ | Project | Receipts | Code impact | Agent activity | Cloud state | Replay and learning |
187
+ | --- | --- | --- | --- | --- | --- |
188
+ | [Brigade](https://github.com/escoffier-labs/brigade) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Command + exit code + Git state | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Impact queries + blast radius | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Center, fleet board, harness sessions | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Codex, Cursor, Jules task status | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Score + rollback, run diff/resume |
189
+ | [ActiveGraph](https://github.com/yoheinakajima/activegraph) | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Event trace | <img src="docs/assets/status-undocumented.svg" width="10" height="10" alt="Not documented"> Not documented | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Reactive behaviors | <img src="docs/assets/status-undocumented.svg" width="10" height="10" alt="Not documented"> Not documented | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Replay, fork, and diff |
190
+ | [Graphiti](https://github.com/getzep/graphiti) | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Episode provenance | <img src="docs/assets/status-undocumented.svg" width="10" height="10" alt="Not documented"> Not documented | <img src="docs/assets/status-undocumented.svg" width="10" height="10" alt="Not documented"> Not documented | <img src="docs/assets/status-undocumented.svg" width="10" height="10" alt="Not documented"> Not documented | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Temporal fact updates |
191
+ | [Codex Cloud](https://developers.openai.com/codex/cloud) | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Changed files + test results | <img src="docs/assets/status-undocumented.svg" width="10" height="10" alt="Not documented"> Not documented | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Task review | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Hosted task workspaces | <img src="docs/assets/status-undocumented.svg" width="10" height="10" alt="Not documented"> Not documented |
192
+
193
+ "Not documented" means the capability was not found in that project's official README or docs on the dated pass. It is not proof of absence.
194
+
195
+ ## Scope
196
+
197
+ Brigade is a local, file-first control plane. Nothing runs until you run a command or your own scheduler does. The work ledger is machine-local JSON, not a distributed task database, and the optional fleet hub coordinates claims and events without replacing local records. Run budgets apply only when declared. Brigade does not push to GitHub, publish packages, or send messages unless you use an explicit send action. Full boundaries: [execution model](docs/execution-model.md).
198
+
199
+ Name collisions: this is `brigade-cli` from [escoffier-labs/brigade](https://github.com/escoffier-labs/brigade), not the archived CNCF Kubernetes Brigade, Spinabot Brigade, or the 2017 Python package that became Nornir.
200
+
201
+ ## Docs
202
+
203
+ - [First 10 minutes](docs/first-10-minutes.md) · [Overview](docs/overview.md) · [Technical guide](docs/technical-guide.md) · [Comparison](docs/comparison.md)
204
+ - [Execution model](docs/execution-model.md) · [Work closeout](docs/work-closeout.md) · [Outcome scoring](docs/outcome-scoring.md)
205
+ - [Memory care](docs/memory-care.md) · [Memory operations](docs/memory-operations.md) · [Code intelligence](docs/code-intelligence.md) · [MCP sync](docs/mcp-sync.md)
206
+ - [Agents guide](docs/agents-guide.md) · [Agent-assisted setup](docs/agent-assisted-setup.md) · [README coverage](docs/readme-coverage.md)
207
+ - [Runbooks](docs/runbooks/README.md) · [Fleet hub on a Proxmox LXC](docs/runbooks/fleet-hub-proxmox.md)
208
+ - [Security](docs/security.md) · [Command inventory](docs/command-inventory.md) · [Contributing](CONTRIBUTING.md) · [Roadmap](ROADMAP.md)
209
+
210
+ ## License
211
+
212
+ MIT. See [LICENSE](LICENSE).
213
+
214
+ Project identity: GitHub [`escoffier-labs/brigade`](https://github.com/escoffier-labs/brigade), website [brigade.tools](https://brigade.tools), PyPI [`brigade-cli`](https://pypi.org/project/brigade-cli/), npm [`@escoffier-labs/brigade`](https://www.npmjs.com/package/@escoffier-labs/brigade), command `brigade`.
@@ -0,0 +1,367 @@
1
+ # Quickstart
2
+
3
+ Five minutes from install to a working agent kitchen.
4
+
5
+ ## 1. Install
6
+
7
+ Brigade supports Linux, macOS, and Windows. Pick one route: npm on glibc Linux x64/ARM64, macOS x64/ARM64, or Windows x64 if Node.js 22+ and npm are already installed, or Python 3.10 or newer with pipx or uv. Other targets, including musl Linux (such as Alpine) and Windows ARM64, use the Python route.
8
+
9
+ ### npm
10
+
11
+ The npm package needs Node.js 22 or newer and npm. It does not need Python or pipx first:
12
+
13
+ ```bash
14
+ npm install --global @escoffier-labs/brigade@0.29.0
15
+ brigade --version
16
+ brigade setup
17
+ ```
18
+
19
+ For a one-off run without a global install, put npx in front of every Brigade command. No global `brigade` command exists on this route:
20
+
21
+ ```bash
22
+ npx --yes @escoffier-labs/brigade@0.29.0 --version
23
+ npx --yes @escoffier-labs/brigade@0.29.0 setup
24
+ ```
25
+
26
+ The first launch downloads a managed Python, so it needs network access. Git is not included. Install it yourself for repository features. Supported npm targets are Linux (glibc) x64 and ARM64, macOS x64 and ARM64, and Windows x64. Other platforms use the Python route below. Keep npm optional dependencies enabled, because the uv binary arrives as a platform package. If pipx or uv also installed Brigade, check which `brigade` comes first on PATH.
27
+
28
+ Upgrade by installing a newer exact version with npm. `brigade update` refuses npm-managed installs. Service units installed from an npm install point at that version's private Python, so reinstall them after each npm upgrade. The [npm package notes](npm/feasibility/README.md) cover the cache location, offline behavior, and known platform limits.
29
+
30
+ ### Python with pipx
31
+
32
+ Install `pipx` with the package manager for your OS, then install Brigade.
33
+
34
+ #### Linux
35
+
36
+ Ubuntu 23.04+, Debian 12+, and Fedora use an externally managed system Python. Install `pipx` from the distribution package instead of using `pip install --user`:
37
+
38
+ ```bash
39
+ # Ubuntu or Debian
40
+ sudo apt update
41
+ sudo apt install pipx
42
+
43
+ # Fedora
44
+ sudo dnf install pipx
45
+
46
+ pipx ensurepath
47
+ ```
48
+
49
+ ##### Arch Linux and Omarchy
50
+
51
+ On Arch Linux, install [the `python-pipx` package](https://archlinux.org/packages/extra/any/python-pipx/):
52
+
53
+ ```bash
54
+ sudo pacman -Syu --needed python-pipx
55
+ pipx ensurepath
56
+ ```
57
+
58
+ This Arch command performs a full system upgrade and installs `pipx`.
59
+
60
+ On Omarchy, use its [package command](https://omarchy.org/manual/other-packages/):
61
+
62
+ ```bash
63
+ omarchy pkg add python-pipx
64
+ pipx ensurepath
65
+ ```
66
+
67
+ Use `omarchy update` for [Omarchy system updates](https://omarchy.org/manual/updates/) so its snapshots, migrations, and configuration updates run with the package upgrade.
68
+
69
+ On either distribution, open a new terminal, then follow the Brigade install commands below. Run `pipx` as your regular user. It keeps Brigade isolated from the externally managed system Python.
70
+
71
+ After an Arch upgrade replaces Python with a new minor version, an existing pipx environment may need rebuilding:
72
+
73
+ ```bash
74
+ pipx reinstall brigade-cli
75
+ brigade --version
76
+ ```
77
+
78
+ On another distribution, use its `pipx` package when available. The [pipx install guide](https://pipx.pypa.io/latest/how-to/install-pipx.html) covers the virtual-environment fallback.
79
+
80
+ #### macOS
81
+
82
+ ```bash
83
+ brew install pipx
84
+ pipx ensurepath
85
+ ```
86
+
87
+ #### Windows PowerShell
88
+
89
+ ```powershell
90
+ scoop install pipx
91
+ pipx ensurepath
92
+ ```
93
+
94
+ Without Scoop, use Python's Windows launcher:
95
+
96
+ ```powershell
97
+ py -m pip install --user pipx
98
+ # Run pipx.exe ensurepath from the directory printed by pip if it is not on PATH yet.
99
+ ```
100
+
101
+ Open a new terminal after `pipx ensurepath`, then continue on any OS:
102
+
103
+ ```bash
104
+ pipx install brigade-cli
105
+ brigade setup
106
+ ```
107
+
108
+ If you already use uv, install the same package with:
109
+
110
+ ```bash
111
+ uv tool install brigade-cli
112
+ brigade setup
113
+ ```
114
+
115
+ For an intentional Brigade development machine with a pipx install, follow the preview line:
116
+
117
+ ```bash
118
+ brigade update --channel beta
119
+ ```
120
+
121
+ Rollback to stable:
122
+
123
+ ```bash
124
+ brigade update --channel stable --switch-channel
125
+ ```
126
+
127
+ ## First install
128
+
129
+ The canonical first-run command is `brigade operator quickstart`. It installs the template files, wires the operator config, scaffolds the MCP catalog and dogfood/work-loop config, and runs the health checks in one shot:
130
+
131
+ ```bash
132
+ # Code repo with Codex as the writer
133
+ brigade operator quickstart --target ./my-repo --harnesses codex
134
+
135
+ # OpenClaw or Hermes workspace instead of a code repo
136
+ brigade operator quickstart --target ~/agent-workspace --depth workspace --harnesses openclaw,hermes --owner openclaw
137
+ ```
138
+
139
+ Pass `--dry-run` first to preview the planned steps without writing anything.
140
+
141
+ PowerShell uses Windows path spelling when you provide a path explicitly:
142
+
143
+ ```powershell
144
+ brigade operator quickstart --target .\my-repo --harnesses codex
145
+ brigade operator doctor --target .\my-repo --profile local-operator
146
+ ```
147
+
148
+ No WSL is required. Worker CLIs must resolve to native executables; when an npm tool resolves only to a `.cmd` or `.bat` shim, Brigade reports the shim and asks for a native launcher. Shell completions currently cover bash, zsh, and fish. `brigade stations verify` is POSIX-only and reports `unsupported-platform` on Windows; quickstart, doctor, the work loop, and native worker runs are supported.
149
+
150
+ Two commands share this surface: `brigade init` installs the template files only, and `brigade operator quickstart` wraps it with operator config, the MCP and dogfood on-ramps, writer verification, and health checks. Use `init` when you want the interactive harness picker or just the files:
151
+
152
+ ```bash
153
+ $ brigade init --target ~/agent-kitchen
154
+
155
+ Which harnesses do you use? (type numbers separated by space/comma to toggle, enter to confirm)
156
+ [x] 1. Claude Code
157
+ [ ] 2. Codex
158
+ [ ] 3. OpenCode
159
+ [ ] 4. Antigravity
160
+ [ ] 5. Pi
161
+ [ ] 6. Cursor
162
+ [ ] 7. Aider
163
+ [ ] 8. Goose
164
+ [ ] 9. Continue
165
+ [ ] 10. GitHub Copilot CLI
166
+ [ ] 11. Qwen Code
167
+ [ ] 12. Kimi Code
168
+ [ ] 13. AdaL
169
+ [ ] 14. OpenHands
170
+ [ ] 15. Grok CLI
171
+ [ ] 16. Amp
172
+ [ ] 17. Crush
173
+ [ ] 18. OpenClaw
174
+ [ ] 19. Hermes
175
+
176
+ Depth? (type a number, enter for default)
177
+ * 1. repo (handoff flow + publish guard)
178
+ 2. workspace (full home: MEMORY.md, TOOLS.md, USER.md, ...)
179
+
180
+ Add-ons? (type numbers separated by space/comma to toggle, enter to confirm)
181
+ [ ] 1. publisher (content-guard policies for blog/social/docs)
182
+ ```
183
+
184
+ Defaults are claude harness, repo depth, no includes. Enter ships the install.
185
+
186
+ ## CI / scripted install
187
+
188
+ Pass flags directly to skip the prompt. The same flags work on `operator quickstart`:
189
+
190
+ ```bash
191
+ # Claude Code + Codex + OpenClaw, full workspace
192
+ brigade operator quickstart --target ~/agent-kitchen \
193
+ --depth workspace \
194
+ --harnesses claude,codex,openclaw
195
+
196
+ # Codex-only project, minimal install
197
+ brigade operator quickstart --target ./my-project --depth repo --harnesses codex
198
+
199
+ # Template files only, no harness-specific files
200
+ brigade init --target ./my-project --harnesses none
201
+ ```
202
+
203
+ ## Verifying
204
+
205
+ After install, check the operator profile:
206
+
207
+ ```bash
208
+ brigade operator doctor --target <path> --profile local-operator
209
+ ```
210
+
211
+ For the file-by-file view, `brigade doctor --target <path>` reports the apparent harness shape and checks every configured inbox and adapter:
212
+
213
+ ```
214
+ brigade doctor: target /home/you/agent-kitchen
215
+ harnesses: claude, codex, openclaw (owner=openclaw, depth=workspace)
216
+ [ok] bootstrap: AGENTS.md /home/you/agent-kitchen/AGENTS.md
217
+ [ok] handoff: claude inbox /home/you/agent-kitchen/.claude/memory-handoffs
218
+ [ok] handoff: codex inbox /home/you/agent-kitchen/.codex/memory-handoffs
219
+ [ok] openclaw: config /home/you/.openclaw/openclaw.json
220
+ ...
221
+ ```
222
+
223
+ A `[fail]` line means the install is incomplete; `[warn]` is informational; `[todo]` means the check needs your attention.
224
+
225
+ ## Reconfiguring
226
+
227
+ To change which harnesses are installed on an existing target:
228
+
229
+ ```bash
230
+ # Add a harness
231
+ brigade reconfigure --target . --harnesses claude,codex
232
+
233
+ # Drop one (without removing its files)
234
+ brigade reconfigure --target . --harnesses claude
235
+
236
+ # Drop one and remove its files
237
+ brigade reconfigure --target . --harnesses claude --prune
238
+ ```
239
+
240
+ ## The handoff flow
241
+
242
+ The starter handoff template lives at `<inbox>/TEMPLATE.md`. Copy it to a new dated file (e.g. `2026-05-16-1430-fixed-X.md`), fill it in, and the ingester promotes safe card handoffs into `memory/cards/`, appends targeted updates to the right file, and kicks ambiguous material to the review inbox.
243
+
244
+ When Claude Code is a selected writer harness, commit the managed `.claude/memory-handoffs/TEMPLATE.md` so the handoff format travels with the repository and Claude onboarding can verify it. Other files under `.claude/` and session handoff notes in that inbox stay local-only. The same tracked-template pattern applies to other writer inboxes. If a global Git exclude hides the Claude template, use the repo-local recovery steps in [docs/new-user-quickstart.md](docs/new-user-quickstart.md#claude-handoff-template-hidden-by-a-global-git-exclude). Brigade never edits global Git configuration.
245
+
246
+ See the [Solo Cookbook](https://github.com/escoffier-labs/solos-cookbook) for the longer-form guidance on what makes a good handoff and when to use which routing.
247
+
248
+ ## Your daily loop
249
+
250
+ Handoffs are one half. The other half is routing your actual work through Brigade so it produces a real signal, instead of leaving Brigade installed-but-dormant. `brigade init` wires a `brigade-work` skill into each harness so your agent does this automatically; by hand it is three steps:
251
+
252
+ ```bash
253
+ brigade work brief --target . # 1. what's pending (and whether the loop is being fed)
254
+ brigade work verify run --target . --command "pytest -q" --capture <skill-or-card> # 2. verify + capture in one step
255
+ # 3. write a Memory Handoff for anything durable; the ratchet (outcome reconcile) runs hands-off on your cron
256
+ ```
257
+
258
+ Capture against an id you actually have: a skill you followed, a memory card (`--kind card`), or `brigade-work` itself when nothing else applies. `brigade work brief` surfaces the loop's own health so an empty ledger never goes unnoticed.
259
+
260
+ The `--command` example captures audit evidence only. Artifact scoring requires an eligible receipt from `--manifest <id>` using a tracked verifier under `verify/manifests/`. Inspect the reported scoreability before relying on it for promotion or rollback.
261
+
262
+ ## Optional: close the GraphTrail ↔ Brigade ↔ MiseLedger loop
263
+
264
+ 0.21.0 already ships receipt deltas, MiseLedger export, evidence briefs, and context evals. Productizing them is a short dogfood path:
265
+
266
+ ```bash
267
+ # optional stations (fail-open everywhere if absent)
268
+ brigade setup # run once: verified GraphTrail, graphtrail-mcp, MiseLedger, and SessionFind
269
+ brigade code sync . # explicitly runs local GraphTrail and builds .graphtrail/graphtrail.db
270
+ brigade code context "auth receipt flow"
271
+ brigade code impact brigade.work.verify.run
272
+
273
+ # evidence station CLI: explicit local operations
274
+ brigade evidence crawl sessions
275
+ brigade evidence search "auth receipt flow"
276
+ brigade evidence crawl plan # review-only miseledger init + crawl commands
277
+ brigade evidence doctor
278
+ brigade evidence export plan # review-only receipts export path
279
+
280
+ # one operator glance: doctors + graph ok / ledger ok / last brief hit rate
281
+ brigade operator checkup --target .
282
+
283
+ # after real work flows through verify/run + capture:
284
+ brigade receipts export miseledger --target . --new-only --import
285
+ brigade outcome rank --target . # surfaces brief_hit as a skill quality signal
286
+ # next brigade run attaches a capped MiseLedger evidence brief automatically
287
+ ```
288
+
289
+ One-release compatibility note: `brigade add evidence`, `brigade add search`, and `brigade add graphtrail` remain available for independent installations. A Brigade-managed install needs only `brigade setup` before these facade commands.
290
+
291
+ That is the differentiated loop: receipts that feed the next run's context, with a measured hit rate (`context_eval.brief_hit_rate`) on whether the pre-run brief named the files the run actually touched.
292
+
293
+ ## Optional: multi-machine pantry (Agent Pantry)
294
+
295
+ When the agent runs on a different machine from your daily browser login, the **pantry** station wires [Agent Pantry](https://brigade.tools/agentpantry) as a process-boundary Go binary. Brigade installs and plans; it does not mint PSKs or start services.
296
+
297
+ ```bash
298
+ brigade extras on # enables pantry and notifications below
299
+ brigade add pantry # go install agentpantry
300
+ brigade pantry setup plan --role sink --peer 127.0.0.1:8787 # agent host
301
+ brigade pantry setup plan --role source --peer <sink>:8787 # daily driver
302
+ # run the printed agentpantry init/keygen/source|sink commands yourself
303
+ brigade pantry doctor
304
+ brigade pantry expiry-alert # preview near-expiry cookies
305
+ # optional notify path:
306
+ brigade add notifications
307
+ brigade pantry expiry-alert --send
308
+ ```
309
+
310
+ `brigade pantry status` and `doctor` always print a `next:` block so the path stays obvious after install.
311
+
312
+ ## Optional: search and tokens stations
313
+
314
+ ```bash
315
+ # GraphTrail is installed by `brigade setup`; use its facade commands.
316
+ brigade code sync . # preferred GraphTrail facade
317
+ brigade code context "auth receipt flow"
318
+ brigade code impact brigade.work.verify.run
319
+ # `brigade search sync|context|impact` remain compatibility aliases.
320
+ brigade search sync plan # review-only; does not run GraphTrail
321
+ brigade search doctor
322
+
323
+ # Token Glace (output compaction; TokenJuice was the old name) + optional usage export
324
+ brigade add tokens
325
+ brigade tokens wire plan
326
+ brigade tokens doctor
327
+ ```
328
+
329
+ ## Optional: discover external station catalogs
330
+
331
+ Sidecars can ship a `station.json` (`schema: brigade.station.v1`). Discover them locally without folding them into the core:
332
+
333
+ ```bash
334
+ brigade stations list
335
+ brigade stations discover --root ~/repos
336
+ brigade stations verify /path/to/sidecar # read-only conformance from an explicit local path
337
+ brigade stations verify /path/to/sidecar --json # bounded result; no raw child output
338
+ brigade add /path/to/sidecar --install # runs printed install args after review
339
+ ```
340
+
341
+ `stations verify` never installs the sidecar. On POSIX it runs declared read-only commands or narrowly checked help/version probes with an isolated temporary home, finite positive timeouts, process-group cleanup, and a 64 KiB combined stdout/stderr ceiling. Windows returns `unsupported-platform` before spawning a probe. Use `--check-managed` in coordinated fleet checks to turn matching Brigade catalog drift from an advisory into a failure. Legacy v1 manifests remain discoverable, but missing bounds fail strict verification. Embedded, deprecated, and historical manifests report a lifecycle skip without running external commands.
342
+
343
+ ## Optional: operator notifications (extras)
344
+
345
+ `notifications` and `pantry` are part of the **extras** surface. Enable once with `brigade extras on` (or `BRIGADE_EXTRAS=1` per invocation). Core station CLIs (`evidence`, `search`, `tokens`) always register.
346
+
347
+ ```bash
348
+ brigade extras on
349
+ brigade add notifications
350
+ brigade notifications status
351
+ brigade notifications setup plan --profile operator
352
+ # Brigade never sends from doctor/status; secrets stay in env vars referenced by config.toml
353
+ ```
354
+
355
+ ## Extras honesty
356
+
357
+ `brigade --help` shows the core pitch by default. The wider operator suite (release trains, fleet health, research, pantry, notifications, ...) stays fully functional but only registers when extras are on. That keeps command count honest for new users without deleting capability for operators.
358
+
359
+ ## Next steps
360
+
361
+ - Read [the cookbook](https://github.com/escoffier-labs/solos-cookbook) for the deep version of every concept here.
362
+ - Customize `USER.md` and `TOOLS.md` with your real preferences and runbooks (kept private; do not commit personal details).
363
+ - Wire the ingester on a cron or a manual end-of-day workflow.
364
+ - Add a memory-care staleness scan when your card set starts to matter. See [docs/memory-care.md](docs/memory-care.md).
365
+ - If you use Token Glace (formerly TokenJuice), wire Claude Code and Codex hooks deliberately and tell agents what the wrapper means. See the tokens station in [docs/technical-guide.md](docs/technical-guide.md#managed-stations).
366
+ - Run `brigade work bootstrap` inside active repos that did not use quickstart when you want the dogfood-backed daily work loop, scanner inbox, and local evidence receipts.
367
+ - Wire Grok as a writer harness with `--harnesses ...,grok` so handoffs land in `.grok/memory-handoffs/` (first-class, same as Claude/Codex).