brigade-cli 0.27.0__tar.gz → 0.29.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 (1799) hide show
  1. brigade_cli-0.29.0/PKG-INFO +164 -0
  2. brigade_cli-0.29.0/QUICKSTART.md +342 -0
  3. brigade_cli-0.29.0/README.md +115 -0
  4. brigade_cli-0.29.0/pyproject.toml +116 -0
  5. brigade_cli-0.29.0/src/brigade/__init__.py +3 -0
  6. brigade_cli-0.29.0/src/brigade/_control_crosswalk_io.py +665 -0
  7. brigade_cli-0.29.0/src/brigade/aboyeur/artifacts.py +987 -0
  8. brigade_cli-0.29.0/src/brigade/aboyeur/briefs.py +586 -0
  9. brigade_cli-0.29.0/src/brigade/aboyeur/orchestrator.py +1995 -0
  10. brigade_cli-0.29.0/src/brigade/aboyeur/planning.py +1283 -0
  11. brigade_cli-0.29.0/src/brigade/aboyeur/prompts.py +553 -0
  12. brigade_cli-0.29.0/src/brigade/aboyeur_model_policy.py +680 -0
  13. brigade_cli-0.29.0/src/brigade/acpx_adapter.py +933 -0
  14. brigade_cli-0.29.0/src/brigade/agent_change.py +791 -0
  15. brigade_cli-0.29.0/src/brigade/agent_change_approval_verify.py +358 -0
  16. brigade_cli-0.29.0/src/brigade/agent_change_verify.py +811 -0
  17. brigade_cli-0.29.0/src/brigade/agents.py +1921 -0
  18. brigade_cli-0.29.0/src/brigade/approval.py +912 -0
  19. brigade_cli-0.29.0/src/brigade/approval_verification.py +462 -0
  20. brigade_cli-0.29.0/src/brigade/attestation_input.py +333 -0
  21. brigade_cli-0.29.0/src/brigade/attestation_receipt.py +158 -0
  22. brigade_cli-0.29.0/src/brigade/authority_marker.py +750 -0
  23. brigade_cli-0.29.0/src/brigade/card_identity.py +192 -0
  24. brigade_cli-0.29.0/src/brigade/care_cmd.py +2084 -0
  25. brigade_cli-0.29.0/src/brigade/center_cmd/dashboard/render.py +119 -0
  26. brigade_cli-0.29.0/src/brigade/center_cmd/dashboard/views/__init__.py +73 -0
  27. brigade_cli-0.29.0/src/brigade/center_cmd/dashboard/views/agent_activity.py +649 -0
  28. brigade_cli-0.29.0/src/brigade/center_cmd/dashboard/views/code_graph.py +1456 -0
  29. brigade_cli-0.29.0/src/brigade/center_cmd/dashboard/views/memory_operations.py +1826 -0
  30. brigade_cli-0.29.0/src/brigade/center_cmd/dashboard/views/research.py +854 -0
  31. brigade_cli-0.29.0/src/brigade/center_cmd/dashboard/views/run_timeline.py +371 -0
  32. brigade_cli-0.29.0/src/brigade/center_cmd/dashboard/views/status_grid.py +354 -0
  33. brigade_cli-0.29.0/src/brigade/center_cmd/dashboard/views/work.py +641 -0
  34. brigade_cli-0.29.0/src/brigade/claim_loss_cancellation.py +162 -0
  35. brigade_cli-0.29.0/src/brigade/claude_actions_diagnostics.py +576 -0
  36. brigade_cli-0.29.0/src/brigade/claude_actions_evidence.py +268 -0
  37. brigade_cli-0.29.0/src/brigade/claude_actions_http.py +151 -0
  38. brigade_cli-0.29.0/src/brigade/claude_actions_import.py +496 -0
  39. brigade_cli-0.29.0/src/brigade/claude_actions_metadata.py +360 -0
  40. brigade_cli-0.29.0/src/brigade/claude_cloud_identity.py +64 -0
  41. brigade_cli-0.29.0/src/brigade/claude_hooks/__init__.py +29 -0
  42. brigade_cli-0.29.0/src/brigade/claude_hooks/anchored_io.py +433 -0
  43. brigade_cli-0.29.0/src/brigade/claude_hooks/classify.py +139 -0
  44. brigade_cli-0.29.0/src/brigade/claude_hooks/entry.py +53 -0
  45. brigade_cli-0.29.0/src/brigade/claude_hooks/fingerprint.py +273 -0
  46. brigade_cli-0.29.0/src/brigade/claude_hooks/heartbeat.py +127 -0
  47. brigade_cli-0.29.0/src/brigade/claude_hooks/package.py +229 -0
  48. brigade_cli-0.29.0/src/brigade/claude_hooks/paths.py +33 -0
  49. brigade_cli-0.29.0/src/brigade/claude_hooks/presence.py +20 -0
  50. brigade_cli-0.29.0/src/brigade/claude_hooks/runtime.py +3214 -0
  51. brigade_cli-0.29.0/src/brigade/claude_hooks/session_state.py +500 -0
  52. brigade_cli-0.29.0/src/brigade/claude_review_evidence.py +253 -0
  53. brigade_cli-0.29.0/src/brigade/claude_review_history.py +359 -0
  54. brigade_cli-0.29.0/src/brigade/claude_review_import.py +537 -0
  55. brigade_cli-0.29.0/src/brigade/cli/code.py +51 -0
  56. brigade_cli-0.29.0/src/brigade/cli/context.py +127 -0
  57. brigade_cli-0.29.0/src/brigade/cli/fleet.py +2000 -0
  58. brigade_cli-0.29.0/src/brigade/cli/fleet_campaign.py +120 -0
  59. brigade_cli-0.29.0/src/brigade/cli/fleet_dot.py +57 -0
  60. brigade_cli-0.29.0/src/brigade/cli/fleet_enroll.py +71 -0
  61. brigade_cli-0.29.0/src/brigade/cli/fleet_events.py +108 -0
  62. brigade_cli-0.29.0/src/brigade/cli/fleet_messages.py +287 -0
  63. brigade_cli-0.29.0/src/brigade/cli/fleet_roster.py +44 -0
  64. brigade_cli-0.29.0/src/brigade/cli/fleet_work.py +132 -0
  65. brigade_cli-0.29.0/src/brigade/cli/fleet_work_ownership.py +205 -0
  66. brigade_cli-0.29.0/src/brigade/cli/memory.py +539 -0
  67. brigade_cli-0.29.0/src/brigade/cli/receipts.py +419 -0
  68. brigade_cli-0.29.0/src/brigade/cli/run.py +1455 -0
  69. brigade_cli-0.29.0/src/brigade/cli/run_cloud.py +1858 -0
  70. brigade_cli-0.29.0/src/brigade/cli/work/dispatching.py +928 -0
  71. brigade_cli-0.29.0/src/brigade/cloud_tracker.py +1933 -0
  72. brigade_cli-0.29.0/src/brigade/code_export.py +860 -0
  73. brigade_cli-0.29.0/src/brigade/commit_linkage.py +642 -0
  74. brigade_cli-0.29.0/src/brigade/commit_linkage_verify.py +658 -0
  75. brigade_cli-0.29.0/src/brigade/context_cmd.py +908 -0
  76. brigade_cli-0.29.0/src/brigade/context_eval.py +171 -0
  77. brigade_cli-0.29.0/src/brigade/context_preview.py +527 -0
  78. brigade_cli-0.29.0/src/brigade/control_crosswalk.py +2000 -0
  79. brigade_cli-0.29.0/src/brigade/control_crosswalk_cosign.py +275 -0
  80. brigade_cli-0.29.0/src/brigade/control_crosswalk_package.py +284 -0
  81. brigade_cli-0.29.0/src/brigade/control_readiness.py +449 -0
  82. brigade_cli-0.29.0/src/brigade/cosign_attestation.py +337 -0
  83. brigade_cli-0.29.0/src/brigade/daily_cmd/config.py +577 -0
  84. brigade_cli-0.29.0/src/brigade/dirfd.py +430 -0
  85. brigade_cli-0.29.0/src/brigade/distribution.py +7 -0
  86. brigade_cli-0.29.0/src/brigade/doctor.py +1955 -0
  87. brigade_cli-0.29.0/src/brigade/doctor_agent.py +458 -0
  88. brigade_cli-0.29.0/src/brigade/doctor_instruction_chain.py +108 -0
  89. brigade_cli-0.29.0/src/brigade/dogfood_cmd.py +579 -0
  90. brigade_cli-0.29.0/src/brigade/dot/__init__.py +27 -0
  91. brigade_cli-0.29.0/src/brigade/dot/__main__.py +134 -0
  92. brigade_cli-0.29.0/src/brigade/dot/access_auth.py +306 -0
  93. brigade_cli-0.29.0/src/brigade/dot/adapter.py +229 -0
  94. brigade_cli-0.29.0/src/brigade/dot/contracts.py +280 -0
  95. brigade_cli-0.29.0/src/brigade/dot/event_app.py +126 -0
  96. brigade_cli-0.29.0/src/brigade/dot/events.py +414 -0
  97. brigade_cli-0.29.0/src/brigade/dot/fleet_tools.py +440 -0
  98. brigade_cli-0.29.0/src/brigade/dot/hub_inbox.py +442 -0
  99. brigade_cli-0.29.0/src/brigade/dot/hub_tools.py +506 -0
  100. brigade_cli-0.29.0/src/brigade/dot/inbox_tools.py +49 -0
  101. brigade_cli-0.29.0/src/brigade/dot/lifecycle.py +474 -0
  102. brigade_cli-0.29.0/src/brigade/dot/memory_tools.py +330 -0
  103. brigade_cli-0.29.0/src/brigade/dot/process.py +228 -0
  104. brigade_cli-0.29.0/src/brigade/dot/runtime_config.py +290 -0
  105. brigade_cli-0.29.0/src/brigade/dot/safe_state.py +302 -0
  106. brigade_cli-0.29.0/src/brigade/dot/server.py +344 -0
  107. brigade_cli-0.29.0/src/brigade/dot/state.py +392 -0
  108. brigade_cli-0.29.0/src/brigade/dot/watch.py +320 -0
  109. brigade_cli-0.29.0/src/brigade/dot/webhooks.py +138 -0
  110. brigade_cli-0.29.0/src/brigade/evidence_ack_acceptance.py +419 -0
  111. brigade_cli-0.29.0/src/brigade/evidence_ack_crypto.py +300 -0
  112. brigade_cli-0.29.0/src/brigade/evidence_ack_protocol.py +404 -0
  113. brigade_cli-0.29.0/src/brigade/evidence_derivative.py +543 -0
  114. brigade_cli-0.29.0/src/brigade/evidence_package.py +401 -0
  115. brigade_cli-0.29.0/src/brigade/evidence_package_snapshot.py +489 -0
  116. brigade_cli-0.29.0/src/brigade/evidence_redaction.py +277 -0
  117. brigade_cli-0.29.0/src/brigade/fleet_campaign.py +220 -0
  118. brigade_cli-0.29.0/src/brigade/fleet_campaign_authority.py +353 -0
  119. brigade_cli-0.29.0/src/brigade/fleet_center_links.py +63 -0
  120. brigade_cli-0.29.0/src/brigade/fleet_claim_display.py +122 -0
  121. brigade_cli-0.29.0/src/brigade/fleet_claim_lifecycle.py +366 -0
  122. brigade_cli-0.29.0/src/brigade/fleet_claim_target.py +228 -0
  123. brigade_cli-0.29.0/src/brigade/fleet_client.py +1994 -0
  124. brigade_cli-0.29.0/src/brigade/fleet_client_cloud.py +696 -0
  125. brigade_cli-0.29.0/src/brigade/fleet_client_enrollment.py +184 -0
  126. brigade_cli-0.29.0/src/brigade/fleet_client_grokbot.py +322 -0
  127. brigade_cli-0.29.0/src/brigade/fleet_client_message_credentials.py +89 -0
  128. brigade_cli-0.29.0/src/brigade/fleet_client_messages.py +1010 -0
  129. brigade_cli-0.29.0/src/brigade/fleet_client_policy.py +400 -0
  130. brigade_cli-0.29.0/src/brigade/fleet_client_spool.py +98 -0
  131. brigade_cli-0.29.0/src/brigade/fleet_command_deck.py +1764 -0
  132. brigade_cli-0.29.0/src/brigade/fleet_dashboard.py +975 -0
  133. brigade_cli-0.29.0/src/brigade/fleet_deck_brands.py +200 -0
  134. brigade_cli-0.29.0/src/brigade/fleet_deck_overview.py +708 -0
  135. brigade_cli-0.29.0/src/brigade/fleet_deck_shell.py +79 -0
  136. brigade_cli-0.29.0/src/brigade/fleet_dot.py +419 -0
  137. brigade_cli-0.29.0/src/brigade/fleet_event_freshness.py +44 -0
  138. brigade_cli-0.29.0/src/brigade/fleet_event_report.py +120 -0
  139. brigade_cli-0.29.0/src/brigade/fleet_execution_context.py +74 -0
  140. brigade_cli-0.29.0/src/brigade/fleet_export.py +768 -0
  141. brigade_cli-0.29.0/src/brigade/fleet_hub.py +1904 -0
  142. brigade_cli-0.29.0/src/brigade/fleet_hub_claim_cardinality.py +35 -0
  143. brigade_cli-0.29.0/src/brigade/fleet_hub_claims.py +686 -0
  144. brigade_cli-0.29.0/src/brigade/fleet_hub_cloud_policy.py +61 -0
  145. brigade_cli-0.29.0/src/brigade/fleet_hub_enrollment.py +242 -0
  146. brigade_cli-0.29.0/src/brigade/fleet_hub_event_bounds.py +163 -0
  147. brigade_cli-0.29.0/src/brigade/fleet_hub_grokbot.py +1489 -0
  148. brigade_cli-0.29.0/src/brigade/fleet_hub_http.py +1838 -0
  149. brigade_cli-0.29.0/src/brigade/fleet_hub_message_grants.py +100 -0
  150. brigade_cli-0.29.0/src/brigade/fleet_hub_messages.py +810 -0
  151. brigade_cli-0.29.0/src/brigade/fleet_hub_model_roster.py +1674 -0
  152. brigade_cli-0.29.0/src/brigade/fleet_hub_policy_api.py +1200 -0
  153. brigade_cli-0.29.0/src/brigade/fleet_hub_roster_page.py +789 -0
  154. brigade_cli-0.29.0/src/brigade/fleet_hub_routing.py +1849 -0
  155. brigade_cli-0.29.0/src/brigade/fleet_hub_server.py +69 -0
  156. brigade_cli-0.29.0/src/brigade/fleet_hub_sessions.py +512 -0
  157. brigade_cli-0.29.0/src/brigade/fleet_hub_status.py +416 -0
  158. brigade_cli-0.29.0/src/brigade/fleet_master_roster.py +189 -0
  159. brigade_cli-0.29.0/src/brigade/fleet_model_admission.py +1867 -0
  160. brigade_cli-0.29.0/src/brigade/fleet_model_inventory.py +1707 -0
  161. brigade_cli-0.29.0/src/brigade/fleet_model_roster.py +445 -0
  162. brigade_cli-0.29.0/src/brigade/fleet_policy_form.py +292 -0
  163. brigade_cli-0.29.0/src/brigade/fleet_policy_migration.py +697 -0
  164. brigade_cli-0.29.0/src/brigade/fleet_policy_page.py +1896 -0
  165. brigade_cli-0.29.0/src/brigade/fleet_repo_policy_page.py +393 -0
  166. brigade_cli-0.29.0/src/brigade/fleet_session_bootstrap.py +776 -0
  167. brigade_cli-0.29.0/src/brigade/fleet_session_presence.py +679 -0
  168. brigade_cli-0.29.0/src/brigade/fleet_t3_transport.py +1006 -0
  169. brigade_cli-0.29.0/src/brigade/fleet_work_page.py +226 -0
  170. brigade_cli-0.29.0/src/brigade/grokbot_backup/actions.py +721 -0
  171. brigade_cli-0.29.0/src/brigade/grokbot_backup/contracts.py +119 -0
  172. brigade_cli-0.29.0/src/brigade/grokbot_backup/ledger.py +576 -0
  173. brigade_cli-0.29.0/src/brigade/grokbot_backup/lifecycle.py +662 -0
  174. brigade_cli-0.29.0/src/brigade/grokbot_backup/runtime_config.py +401 -0
  175. brigade_cli-0.29.0/src/brigade/grokbot_feed.py +670 -0
  176. brigade_cli-0.29.0/src/brigade/grokbot_findings.py +932 -0
  177. brigade_cli-0.29.0/src/brigade/grokbot_fleet/actions.py +1217 -0
  178. brigade_cli-0.29.0/src/brigade/grokbot_fleet/contracts.py +153 -0
  179. brigade_cli-0.29.0/src/brigade/grokbot_fleet/ledger.py +485 -0
  180. brigade_cli-0.29.0/src/brigade/grokbot_fleet/lifecycle.py +739 -0
  181. brigade_cli-0.29.0/src/brigade/grokbot_fleet/runtime_config.py +316 -0
  182. brigade_cli-0.29.0/src/brigade/grokbot_job_validation.py +188 -0
  183. brigade_cli-0.29.0/src/brigade/grokbot_jobs.py +1976 -0
  184. brigade_cli-0.29.0/src/brigade/grokbot_jobs_claim_target.py +65 -0
  185. brigade_cli-0.29.0/src/brigade/grokbot_jobs_expiry.py +217 -0
  186. brigade_cli-0.29.0/src/brigade/grokbot_jobs_hub.py +179 -0
  187. brigade_cli-0.29.0/src/brigade/grokbot_mcp.py +1507 -0
  188. brigade_cli-0.29.0/src/brigade/grokbot_n8n/actions.py +716 -0
  189. brigade_cli-0.29.0/src/brigade/grokbot_n8n/lifecycle.py +609 -0
  190. brigade_cli-0.29.0/src/brigade/grokbot_n8n/runtime_config.py +255 -0
  191. brigade_cli-0.29.0/src/brigade/grokbot_obsidian/contracts.py +824 -0
  192. brigade_cli-0.29.0/src/brigade/grokbot_obsidian/excalidraw_client.py +278 -0
  193. brigade_cli-0.29.0/src/brigade/grokbot_obsidian/lifecycle.py +819 -0
  194. brigade_cli-0.29.0/src/brigade/grokbot_obsidian/runtime_config.py +478 -0
  195. brigade_cli-0.29.0/src/brigade/grokbot_obsidian/store.py +757 -0
  196. brigade_cli-0.29.0/src/brigade/grokbot_ops.py +802 -0
  197. brigade_cli-0.29.0/src/brigade/grokbot_packs.py +1635 -0
  198. brigade_cli-0.29.0/src/brigade/grokbot_paths.py +39 -0
  199. brigade_cli-0.29.0/src/brigade/grokbot_reconcile.py +585 -0
  200. brigade_cli-0.29.0/src/brigade/grokbot_scout_feed.py +535 -0
  201. brigade_cli-0.29.0/src/brigade/grokbot_t3/__init__.py +27 -0
  202. brigade_cli-0.29.0/src/brigade/grokbot_t3/__main__.py +52 -0
  203. brigade_cli-0.29.0/src/brigade/grokbot_t3/contracts.py +273 -0
  204. brigade_cli-0.29.0/src/brigade/grokbot_t3/fleet.py +204 -0
  205. brigade_cli-0.29.0/src/brigade/grokbot_t3/intake.py +329 -0
  206. brigade_cli-0.29.0/src/brigade/grokbot_t3/ledger.py +323 -0
  207. brigade_cli-0.29.0/src/brigade/grokbot_t3/lifecycle.py +608 -0
  208. brigade_cli-0.29.0/src/brigade/grokbot_t3/runtime_config.py +238 -0
  209. brigade_cli-0.29.0/src/brigade/grokbot_t3/tools.py +362 -0
  210. brigade_cli-0.29.0/src/brigade/grokbot_t3/watch.py +227 -0
  211. brigade_cli-0.29.0/src/brigade/grokbot_wazuh/contracts.py +218 -0
  212. brigade_cli-0.29.0/src/brigade/grokbot_wazuh/lifecycle.py +666 -0
  213. brigade_cli-0.29.0/src/brigade/grokbot_wazuh/store.py +486 -0
  214. brigade_cli-0.29.0/src/brigade/handoff_cmd/sources.py +591 -0
  215. brigade_cli-0.29.0/src/brigade/harness_profile_cmd.py +2565 -0
  216. brigade_cli-0.29.0/src/brigade/inbox_lock.py +544 -0
  217. brigade_cli-0.29.0/src/brigade/ingest.py +684 -0
  218. brigade_cli-0.29.0/src/brigade/install.py +508 -0
  219. brigade_cli-0.29.0/src/brigade/journal_export.py +189 -0
  220. brigade_cli-0.29.0/src/brigade/jules_cloud.py +977 -0
  221. brigade_cli-0.29.0/src/brigade/managed_block.py +1251 -0
  222. brigade_cli-0.29.0/src/brigade/mcp_adapters.py +1551 -0
  223. brigade_cli-0.29.0/src/brigade/mcp_cmd.py +1727 -0
  224. brigade_cli-0.29.0/src/brigade/mcp_fidelity.py +415 -0
  225. brigade_cli-0.29.0/src/brigade/mcp_runtime.py +820 -0
  226. brigade_cli-0.29.0/src/brigade/memory_care_closeout.py +157 -0
  227. brigade_cli-0.29.0/src/brigade/memory_care_plan.py +200 -0
  228. brigade_cli-0.29.0/src/brigade/memory_cmd.py +2012 -0
  229. brigade_cli-0.29.0/src/brigade/memory_doctor/lint.py +111 -0
  230. brigade_cli-0.29.0/src/brigade/memory_doctor/status.py +112 -0
  231. brigade_cli-0.29.0/src/brigade/memory_hooks.py +454 -0
  232. brigade_cli-0.29.0/src/brigade/memory_proposal_io.py +176 -0
  233. brigade_cli-0.29.0/src/brigade/memory_proposals.py +1149 -0
  234. brigade_cli-0.29.0/src/brigade/memory_search_diagnostics.py +45 -0
  235. brigade_cli-0.29.0/src/brigade/memory_vault.py +1469 -0
  236. brigade_cli-0.29.0/src/brigade/model_inventory.py +314 -0
  237. brigade_cli-0.29.0/src/brigade/node.py +217 -0
  238. brigade_cli-0.29.0/src/brigade/operator_cmd/lifecycle.py +1383 -0
  239. brigade_cli-0.29.0/src/brigade/outcome_cmd.py +2776 -0
  240. brigade_cli-0.29.0/src/brigade/outcome_discovery.py +224 -0
  241. brigade_cli-0.29.0/src/brigade/pi_mcp_bridge.py +542 -0
  242. brigade_cli-0.29.0/src/brigade/proc.py +1706 -0
  243. brigade_cli-0.29.0/src/brigade/projection/kernel.py +1065 -0
  244. brigade_cli-0.29.0/src/brigade/repos_cmd/adoption.py +550 -0
  245. brigade_cli-0.29.0/src/brigade/research/browser_preflight.py +58 -0
  246. brigade_cli-0.29.0/src/brigade/research/doctor.py +527 -0
  247. brigade_cli-0.29.0/src/brigade/roster.py +915 -0
  248. brigade_cli-0.29.0/src/brigade/run_budget.py +1860 -0
  249. brigade_cli-0.29.0/src/brigade/run_checkpoint.py +1646 -0
  250. brigade_cli-0.29.0/src/brigade/run_control_journal.py +661 -0
  251. brigade_cli-0.29.0/src/brigade/run_events.py +587 -0
  252. brigade_cli-0.29.0/src/brigade/run_journal.py +1429 -0
  253. brigade_cli-0.29.0/src/brigade/run_lifecycle.py +1052 -0
  254. brigade_cli-0.29.0/src/brigade/run_receipts.py +502 -0
  255. brigade_cli-0.29.0/src/brigade/run_resume.py +1211 -0
  256. brigade_cli-0.29.0/src/brigade/run_transport.py +1640 -0
  257. brigade_cli-0.29.0/src/brigade/runguard.py +1762 -0
  258. brigade_cli-0.29.0/src/brigade/runs_cmd.py +3583 -0
  259. brigade_cli-0.29.0/src/brigade/scorecard.py +869 -0
  260. brigade_cli-0.29.0/src/brigade/seat_health.py +1013 -0
  261. brigade_cli-0.29.0/src/brigade/skills_cmd/adapters.py +871 -0
  262. brigade_cli-0.29.0/src/brigade/skills_cmd/inbox.py +413 -0
  263. brigade_cli-0.29.0/src/brigade/skills_cmd/install.py +877 -0
  264. brigade_cli-0.29.0/src/brigade/skills_cmd/packs.py +618 -0
  265. brigade_cli-0.29.0/src/brigade/skills_cmd/registry.py +1558 -0
  266. brigade_cli-0.29.0/src/brigade/skills_cmd/search_validate.py +557 -0
  267. brigade_cli-0.29.0/src/brigade/template_profiles.py +396 -0
  268. brigade_cli-0.29.0/src/brigade/templates/components/manifest-v1.json +214 -0
  269. brigade_cli-0.29.0/src/brigade/templates/control-crosswalk.json +1309 -0
  270. brigade_cli-0.29.0/src/brigade/templates/hermes/memory-handoff.harness.json +36 -0
  271. brigade_cli-0.29.0/src/brigade/templates/hermes/model-lanes.harness.json +17 -0
  272. brigade_cli-0.29.0/src/brigade/templates/hermes/workspace.harness.json +30 -0
  273. brigade_cli-0.29.0/src/brigade/templates/memory/chat-memory-sweep.example.json +131 -0
  274. brigade_cli-0.29.0/src/brigade/templates/memory/memory-care.example.json +11 -0
  275. brigade_cli-0.29.0/src/brigade/templates/policies/personal.json +28 -0
  276. brigade_cli-0.29.0/src/brigade/templates/policies/public-content.json +28 -0
  277. brigade_cli-0.29.0/src/brigade/templates/policies/public-repo.json +27 -0
  278. brigade_cli-0.29.0/src/brigade/templates/template-profile-snapshot.json +888 -0
  279. brigade_cli-0.29.0/src/brigade/templates.py +99 -0
  280. brigade_cli-0.29.0/src/brigade/toml_compat.py +312 -0
  281. brigade_cli-0.29.0/src/brigade/ui_theme.py +338 -0
  282. brigade_cli-0.29.0/src/brigade/update_cmd.py +683 -0
  283. brigade_cli-0.29.0/src/brigade/update_notify.py +201 -0
  284. brigade_cli-0.29.0/src/brigade/wiring.py +62 -0
  285. brigade_cli-0.29.0/src/brigade/work_cmd/footprint.py +476 -0
  286. brigade_cli-0.29.0/src/brigade/work_cmd/inbox_lock.py +17 -0
  287. brigade_cli-0.29.0/src/brigade/work_cmd/ledger/authority_store.py +1130 -0
  288. brigade_cli-0.29.0/src/brigade/work_cmd/ledger/import_model.py +1331 -0
  289. brigade_cli-0.29.0/src/brigade/work_cmd/ledger/inbox_provenance.py +1331 -0
  290. brigade_cli-0.29.0/src/brigade/work_cmd/nt_dirfd.py +800 -0
  291. brigade_cli-0.29.0/src/brigade/work_cmd/scanner_platform.py +50 -0
  292. brigade_cli-0.29.0/src/brigade/work_cmd/scanners.py +3325 -0
  293. brigade_cli-0.29.0/src/brigade/work_cmd/services.py +1171 -0
  294. brigade_cli-0.29.0/src/brigade/work_cmd/session/run_status.py +869 -0
  295. brigade_cli-0.29.0/src/brigade/work_cmd/verification.py +2339 -0
  296. brigade_cli-0.29.0/src/brigade/work_cmd/verify_reaper.py +116 -0
  297. brigade_cli-0.29.0/src/brigade/work_cmd/verify_runtime.py +293 -0
  298. brigade_cli-0.29.0/src/brigade/worklore_client.py +481 -0
  299. brigade_cli-0.29.0/src/brigade/worklore_http.py +508 -0
  300. brigade_cli-0.29.0/src/brigade/worklore_ownership.py +543 -0
  301. brigade_cli-0.29.0/src/brigade/worklore_scope.py +179 -0
  302. brigade_cli-0.29.0/src/brigade/worklore_store.py +1930 -0
  303. brigade_cli-0.29.0/src/brigade/worklore_store_operations.py +1083 -0
  304. brigade_cli-0.29.0/src/brigade/worklore_validate.py +321 -0
  305. brigade_cli-0.29.0/src/brigade_cli.egg-info/PKG-INFO +164 -0
  306. brigade_cli-0.29.0/src/brigade_cli.egg-info/SOURCES.txt +1434 -0
  307. brigade_cli-0.29.0/src/brigade_cli.egg-info/entry_points.txt +3 -0
  308. brigade_cli-0.29.0/src/brigade_cli.egg-info/requires.txt +14 -0
  309. brigade_cli-0.29.0/tests/test_aboyeur.py +7820 -0
  310. brigade_cli-0.29.0/tests/test_acpx_adapter.py +2054 -0
  311. brigade_cli-0.29.0/tests/test_agent_change.py +1552 -0
  312. brigade_cli-0.29.0/tests/test_agent_change_approval_integration.py +663 -0
  313. brigade_cli-0.29.0/tests/test_agent_change_approval_policy.py +285 -0
  314. brigade_cli-0.29.0/tests/test_agent_change_approval_resources.py +309 -0
  315. brigade_cli-0.29.0/tests/test_agent_notify_station_contracts.py +138 -0
  316. brigade_cli-0.29.0/tests/test_agent_request.py +193 -0
  317. brigade_cli-0.29.0/tests/test_agents.py +2786 -0
  318. brigade_cli-0.29.0/tests/test_agents_model_pin.py +262 -0
  319. brigade_cli-0.29.0/tests/test_agents_windows_executable.py +306 -0
  320. brigade_cli-0.29.0/tests/test_attestation.py +882 -0
  321. brigade_cli-0.29.0/tests/test_attestation_input.py +343 -0
  322. brigade_cli-0.29.0/tests/test_authority_store_hmac.py +2160 -0
  323. brigade_cli-0.29.0/tests/test_card_identity.py +174 -0
  324. brigade_cli-0.29.0/tests/test_care_cmd.py +1844 -0
  325. brigade_cli-0.29.0/tests/test_center_agent_activity.py +772 -0
  326. brigade_cli-0.29.0/tests/test_center_dashboard.py +1459 -0
  327. brigade_cli-0.29.0/tests/test_center_serve.py +247 -0
  328. brigade_cli-0.29.0/tests/test_ci_workflow.py +1555 -0
  329. brigade_cli-0.29.0/tests/test_claim_loss_review.py +838 -0
  330. brigade_cli-0.29.0/tests/test_claude_actions_diagnostics.py +274 -0
  331. brigade_cli-0.29.0/tests/test_claude_actions_evidence.py +289 -0
  332. brigade_cli-0.29.0/tests/test_claude_actions_http.py +481 -0
  333. brigade_cli-0.29.0/tests/test_claude_actions_import.py +447 -0
  334. brigade_cli-0.29.0/tests/test_claude_actions_metadata.py +436 -0
  335. brigade_cli-0.29.0/tests/test_claude_cloud_adoption.py +422 -0
  336. brigade_cli-0.29.0/tests/test_claude_cloud_identity.py +104 -0
  337. brigade_cli-0.29.0/tests/test_claude_hooks_compaction_marker.py +276 -0
  338. brigade_cli-0.29.0/tests/test_claude_hooks_doctor.py +400 -0
  339. brigade_cli-0.29.0/tests/test_claude_hooks_entry.py +315 -0
  340. brigade_cli-0.29.0/tests/test_claude_hooks_fingerprint.py +536 -0
  341. brigade_cli-0.29.0/tests/test_claude_hooks_heartbeat.py +179 -0
  342. brigade_cli-0.29.0/tests/test_claude_hooks_latch_race.py +1108 -0
  343. brigade_cli-0.29.0/tests/test_claude_hooks_runtime.py +3197 -0
  344. brigade_cli-0.29.0/tests/test_claude_hooks_settings_merge.py +674 -0
  345. brigade_cli-0.29.0/tests/test_claude_hooks_state_containment.py +599 -0
  346. brigade_cli-0.29.0/tests/test_claude_hooks_tilde_user.py +100 -0
  347. brigade_cli-0.29.0/tests/test_claude_hooks_user_scope.py +228 -0
  348. brigade_cli-0.29.0/tests/test_claude_hooks_user_target.py +434 -0
  349. brigade_cli-0.29.0/tests/test_claude_review_evidence.py +297 -0
  350. brigade_cli-0.29.0/tests/test_claude_review_history.py +856 -0
  351. brigade_cli-0.29.0/tests/test_claude_review_import.py +608 -0
  352. brigade_cli-0.29.0/tests/test_claude_workflow.py +52 -0
  353. brigade_cli-0.29.0/tests/test_cloud_tracker.py +3365 -0
  354. brigade_cli-0.29.0/tests/test_code_export.py +423 -0
  355. brigade_cli-0.29.0/tests/test_code_graph_brief.py +516 -0
  356. brigade_cli-0.29.0/tests/test_code_verbs_and_target.py +223 -0
  357. brigade_cli-0.29.0/tests/test_codex_appserver.py +970 -0
  358. brigade_cli-0.29.0/tests/test_codex_cloud.py +1557 -0
  359. brigade_cli-0.29.0/tests/test_component_bins.py +194 -0
  360. brigade_cli-0.29.0/tests/test_component_paths.py +139 -0
  361. brigade_cli-0.29.0/tests/test_conftest_home_isolation.py +54 -0
  362. brigade_cli-0.29.0/tests/test_conftest_host_daemons.py +53 -0
  363. brigade_cli-0.29.0/tests/test_context_eval.py +204 -0
  364. brigade_cli-0.29.0/tests/test_context_preview.py +1025 -0
  365. brigade_cli-0.29.0/tests/test_control_crosswalk.py +4663 -0
  366. brigade_cli-0.29.0/tests/test_cosign_attestation.py +914 -0
  367. brigade_cli-0.29.0/tests/test_cosign_statement_profiles.py +742 -0
  368. brigade_cli-0.29.0/tests/test_cursor_install_state_migration.py +240 -0
  369. brigade_cli-0.29.0/tests/test_daily_driver_cmd.py +1752 -0
  370. brigade_cli-0.29.0/tests/test_dashboard_outcomes.py +131 -0
  371. brigade_cli-0.29.0/tests/test_dashboard_runs.py +288 -0
  372. brigade_cli-0.29.0/tests/test_dashboard_status.py +107 -0
  373. brigade_cli-0.29.0/tests/test_dashboard_work.py +488 -0
  374. brigade_cli-0.29.0/tests/test_dirfd.py +592 -0
  375. brigade_cli-0.29.0/tests/test_doctor.py +3598 -0
  376. brigade_cli-0.29.0/tests/test_doctor_agent.py +302 -0
  377. brigade_cli-0.29.0/tests/test_dot_access_auth.py +542 -0
  378. brigade_cli-0.29.0/tests/test_dot_adapter.py +348 -0
  379. brigade_cli-0.29.0/tests/test_dot_compat.py +120 -0
  380. brigade_cli-0.29.0/tests/test_dot_contracts.py +34 -0
  381. brigade_cli-0.29.0/tests/test_dot_events.py +553 -0
  382. brigade_cli-0.29.0/tests/test_dot_fleet_tools.py +490 -0
  383. brigade_cli-0.29.0/tests/test_dot_hub_tools.py +632 -0
  384. brigade_cli-0.29.0/tests/test_dot_inbox_tools.py +724 -0
  385. brigade_cli-0.29.0/tests/test_dot_lifecycle.py +573 -0
  386. brigade_cli-0.29.0/tests/test_dot_memory_tools.py +184 -0
  387. brigade_cli-0.29.0/tests/test_dot_process.py +106 -0
  388. brigade_cli-0.29.0/tests/test_dot_runtime.py +254 -0
  389. brigade_cli-0.29.0/tests/test_dot_state.py +179 -0
  390. brigade_cli-0.29.0/tests/test_dot_watch.py +219 -0
  391. brigade_cli-0.29.0/tests/test_error_refusal_copy.py +285 -0
  392. brigade_cli-0.29.0/tests/test_evidence_ack_acceptance.py +418 -0
  393. brigade_cli-0.29.0/tests/test_evidence_ack_crypto.py +976 -0
  394. brigade_cli-0.29.0/tests/test_evidence_ack_protocol.py +1032 -0
  395. brigade_cli-0.29.0/tests/test_evidence_derivative.py +1247 -0
  396. brigade_cli-0.29.0/tests/test_evidence_package_snapshot.py +1129 -0
  397. brigade_cli-0.29.0/tests/test_evidence_redaction.py +512 -0
  398. brigade_cli-0.29.0/tests/test_fleet_agent_unread.py +127 -0
  399. brigade_cli-0.29.0/tests/test_fleet_authority_proof.py +992 -0
  400. brigade_cli-0.29.0/tests/test_fleet_campaign.py +275 -0
  401. brigade_cli-0.29.0/tests/test_fleet_campaign_authority.py +559 -0
  402. brigade_cli-0.29.0/tests/test_fleet_center_links.py +256 -0
  403. brigade_cli-0.29.0/tests/test_fleet_claim_display.py +204 -0
  404. brigade_cli-0.29.0/tests/test_fleet_claim_generations.py +1524 -0
  405. brigade_cli-0.29.0/tests/test_fleet_claim_loss_cancellation.py +212 -0
  406. brigade_cli-0.29.0/tests/test_fleet_claim_release.py +1339 -0
  407. brigade_cli-0.29.0/tests/test_fleet_claim_target.py +438 -0
  408. brigade_cli-0.29.0/tests/test_fleet_claims.py +3635 -0
  409. brigade_cli-0.29.0/tests/test_fleet_client_hardening.py +478 -0
  410. brigade_cli-0.29.0/tests/test_fleet_client_message_credentials.py +583 -0
  411. brigade_cli-0.29.0/tests/test_fleet_cloud.py +2320 -0
  412. brigade_cli-0.29.0/tests/test_fleet_command_deck.py +1686 -0
  413. brigade_cli-0.29.0/tests/test_fleet_dashboard.py +1752 -0
  414. brigade_cli-0.29.0/tests/test_fleet_deck_badges.py +315 -0
  415. brigade_cli-0.29.0/tests/test_fleet_deck_overview.py +944 -0
  416. brigade_cli-0.29.0/tests/test_fleet_dot.py +409 -0
  417. brigade_cli-0.29.0/tests/test_fleet_enrollment.py +985 -0
  418. brigade_cli-0.29.0/tests/test_fleet_events_cli.py +164 -0
  419. brigade_cli-0.29.0/tests/test_fleet_export.py +1157 -0
  420. brigade_cli-0.29.0/tests/test_fleet_hub_container_recipes.py +325 -0
  421. brigade_cli-0.29.0/tests/test_fleet_hub_event_bounds.py +163 -0
  422. brigade_cli-0.29.0/tests/test_fleet_hub_request_bounds.py +149 -0
  423. brigade_cli-0.29.0/tests/test_fleet_hub_review_bounds.py +400 -0
  424. brigade_cli-0.29.0/tests/test_fleet_hub_server.py +160 -0
  425. brigade_cli-0.29.0/tests/test_fleet_master_roster.py +600 -0
  426. brigade_cli-0.29.0/tests/test_fleet_message_grants.py +239 -0
  427. brigade_cli-0.29.0/tests/test_fleet_messages.py +3324 -0
  428. brigade_cli-0.29.0/tests/test_fleet_messages_metadata.py +149 -0
  429. brigade_cli-0.29.0/tests/test_fleet_messages_startup.py +87 -0
  430. brigade_cli-0.29.0/tests/test_fleet_model_admission.py +3868 -0
  431. brigade_cli-0.29.0/tests/test_fleet_model_roster.py +1309 -0
  432. brigade_cli-0.29.0/tests/test_fleet_models_list.py +215 -0
  433. brigade_cli-0.29.0/tests/test_fleet_native_launch_binding.py +995 -0
  434. brigade_cli-0.29.0/tests/test_fleet_nodes.py +1070 -0
  435. brigade_cli-0.29.0/tests/test_fleet_policy_migration.py +1108 -0
  436. brigade_cli-0.29.0/tests/test_fleet_policy_page.py +2163 -0
  437. brigade_cli-0.29.0/tests/test_fleet_roster_page.py +1171 -0
  438. brigade_cli-0.29.0/tests/test_fleet_routing.py +1027 -0
  439. brigade_cli-0.29.0/tests/test_fleet_session_bootstrap.py +847 -0
  440. brigade_cli-0.29.0/tests/test_fleet_session_presence.py +391 -0
  441. brigade_cli-0.29.0/tests/test_fleet_sync.py +1698 -0
  442. brigade_cli-0.29.0/tests/test_fleet_t3_contract.py +212 -0
  443. brigade_cli-0.29.0/tests/test_fleet_work_next.py +459 -0
  444. brigade_cli-0.29.0/tests/test_fleet_work_ownership_cli.py +275 -0
  445. brigade_cli-0.29.0/tests/test_fleet_work_page.py +763 -0
  446. brigade_cli-0.29.0/tests/test_governance_inventory.py +865 -0
  447. brigade_cli-0.29.0/tests/test_grokbot_backup_actions.py +499 -0
  448. brigade_cli-0.29.0/tests/test_grokbot_backup_ledger.py +123 -0
  449. brigade_cli-0.29.0/tests/test_grokbot_backup_lifecycle.py +455 -0
  450. brigade_cli-0.29.0/tests/test_grokbot_cerebro.py +960 -0
  451. brigade_cli-0.29.0/tests/test_grokbot_client_identity.py +496 -0
  452. brigade_cli-0.29.0/tests/test_grokbot_feed.py +1653 -0
  453. brigade_cli-0.29.0/tests/test_grokbot_findings.py +1219 -0
  454. brigade_cli-0.29.0/tests/test_grokbot_fleet_ledger.py +168 -0
  455. brigade_cli-0.29.0/tests/test_grokbot_fleet_lifecycle.py +445 -0
  456. brigade_cli-0.29.0/tests/test_grokbot_jobs.py +2598 -0
  457. brigade_cli-0.29.0/tests/test_grokbot_mcp.py +3039 -0
  458. brigade_cli-0.29.0/tests/test_grokbot_n8n_lifecycle.py +473 -0
  459. brigade_cli-0.29.0/tests/test_grokbot_obsidian_actions.py +472 -0
  460. brigade_cli-0.29.0/tests/test_grokbot_obsidian_lifecycle.py +647 -0
  461. brigade_cli-0.29.0/tests/test_grokbot_ops.py +1319 -0
  462. brigade_cli-0.29.0/tests/test_grokbot_packs.py +1928 -0
  463. brigade_cli-0.29.0/tests/test_grokbot_scout_feed.py +1250 -0
  464. brigade_cli-0.29.0/tests/test_grokbot_t3_contracts.py +147 -0
  465. brigade_cli-0.29.0/tests/test_grokbot_t3_fleet.py +222 -0
  466. brigade_cli-0.29.0/tests/test_grokbot_t3_intake.py +554 -0
  467. brigade_cli-0.29.0/tests/test_grokbot_t3_ledger.py +277 -0
  468. brigade_cli-0.29.0/tests/test_grokbot_t3_lifecycle.py +320 -0
  469. brigade_cli-0.29.0/tests/test_grokbot_t3_runtime.py +167 -0
  470. brigade_cli-0.29.0/tests/test_grokbot_t3_tools.py +668 -0
  471. brigade_cli-0.29.0/tests/test_grokbot_t3_watch.py +627 -0
  472. brigade_cli-0.29.0/tests/test_grokbot_wazuh_lifecycle.py +426 -0
  473. brigade_cli-0.29.0/tests/test_grokbot_wazuh_store.py +171 -0
  474. brigade_cli-0.29.0/tests/test_handoff_cmd.py +2467 -0
  475. brigade_cli-0.29.0/tests/test_harness_conformance_probe.py +1456 -0
  476. brigade_cli-0.29.0/tests/test_harness_profile_cmd.py +334 -0
  477. brigade_cli-0.29.0/tests/test_harness_user_scope.py +1005 -0
  478. brigade_cli-0.29.0/tests/test_harness_user_scope_slice2.py +494 -0
  479. brigade_cli-0.29.0/tests/test_hub_seat_resolution.py +293 -0
  480. brigade_cli-0.29.0/tests/test_ingest.py +1444 -0
  481. brigade_cli-0.29.0/tests/test_instruction_profiles.py +241 -0
  482. brigade_cli-0.29.0/tests/test_journal_export.py +666 -0
  483. brigade_cli-0.29.0/tests/test_jules_cloud.py +1342 -0
  484. brigade_cli-0.29.0/tests/test_ledger_1233_findings.py +305 -0
  485. brigade_cli-0.29.0/tests/test_localio.py +321 -0
  486. brigade_cli-0.29.0/tests/test_mcp_adapters.py +664 -0
  487. brigade_cli-0.29.0/tests/test_mcp_cmd.py +746 -0
  488. brigade_cli-0.29.0/tests/test_mcp_fidelity.py +805 -0
  489. brigade_cli-0.29.0/tests/test_mcp_integration.py +668 -0
  490. brigade_cli-0.29.0/tests/test_mcp_runtime.py +769 -0
  491. brigade_cli-0.29.0/tests/test_mcp_url_only_import.py +134 -0
  492. brigade_cli-0.29.0/tests/test_memory_cmd.py +1948 -0
  493. brigade_cli-0.29.0/tests/test_memory_hooks.py +710 -0
  494. brigade_cli-0.29.0/tests/test_memory_proposal_capabilities.py +135 -0
  495. brigade_cli-0.29.0/tests/test_memory_proposals.py +1034 -0
  496. brigade_cli-0.29.0/tests/test_memory_retrieval_eval.py +623 -0
  497. brigade_cli-0.29.0/tests/test_memory_search_redundancy.py +55 -0
  498. brigade_cli-0.29.0/tests/test_memory_task_recall.py +162 -0
  499. brigade_cli-0.29.0/tests/test_memory_vault_projection.py +611 -0
  500. brigade_cli-0.29.0/tests/test_model_inventory.py +396 -0
  501. brigade_cli-0.29.0/tests/test_model_seat_denial.py +175 -0
  502. brigade_cli-0.29.0/tests/test_module_size_ratchet.py +75 -0
  503. brigade_cli-0.29.0/tests/test_npm_feasibility_prepare.py +115 -0
  504. brigade_cli-0.29.0/tests/test_opencode_mcp_contract.py +552 -0
  505. brigade_cli-0.29.0/tests/test_opencode_profile_contract.py +236 -0
  506. brigade_cli-0.29.0/tests/test_operator_checkup.py +483 -0
  507. brigade_cli-0.29.0/tests/test_operator_cmd.py +1882 -0
  508. brigade_cli-0.29.0/tests/test_outcome.py +435 -0
  509. brigade_cli-0.29.0/tests/test_outcome_activegraph.py +134 -0
  510. brigade_cli-0.29.0/tests/test_outcome_backfill_scorecard.py +302 -0
  511. brigade_cli-0.29.0/tests/test_outcome_cmd.py +2935 -0
  512. brigade_cli-0.29.0/tests/test_outcome_execute.py +70 -0
  513. brigade_cli-0.29.0/tests/test_outcome_infrastructure_attribution.py +1064 -0
  514. brigade_cli-0.29.0/tests/test_outcome_reused_receipt_dedup.py +211 -0
  515. brigade_cli-0.29.0/tests/test_pi_mcp_bridge.py +528 -0
  516. brigade_cli-0.29.0/tests/test_posix_facade_behaviour.py +110 -0
  517. brigade_cli-0.29.0/tests/test_posix_facade_guard.py +85 -0
  518. brigade_cli-0.29.0/tests/test_pre_push_hook.py +503 -0
  519. brigade_cli-0.29.0/tests/test_proc.py +1548 -0
  520. brigade_cli-0.29.0/tests/test_producer_run_id.py +394 -0
  521. brigade_cli-0.29.0/tests/test_projection_kernel.py +661 -0
  522. brigade_cli-0.29.0/tests/test_publish_workflow.py +431 -0
  523. brigade_cli-0.29.0/tests/test_published_artifact_acceptance.py +1095 -0
  524. brigade_cli-0.29.0/tests/test_receipt_schema_audit.py +542 -0
  525. brigade_cli-0.29.0/tests/test_receipt_signing.py +95 -0
  526. brigade_cli-0.29.0/tests/test_repos_adoption_cmd.py +416 -0
  527. brigade_cli-0.29.0/tests/test_research_acceptance.py +373 -0
  528. brigade_cli-0.29.0/tests/test_research_doctor.py +827 -0
  529. brigade_cli-0.29.0/tests/test_roster.py +1773 -0
  530. brigade_cli-0.29.0/tests/test_roster_cmd.py +1100 -0
  531. brigade_cli-0.29.0/tests/test_roster_doctor.py +125 -0
  532. brigade_cli-0.29.0/tests/test_run_budget.py +1480 -0
  533. brigade_cli-0.29.0/tests/test_run_checkpoint.py +3717 -0
  534. brigade_cli-0.29.0/tests/test_run_cli.py +3748 -0
  535. brigade_cli-0.29.0/tests/test_run_detach.py +870 -0
  536. brigade_cli-0.29.0/tests/test_run_events_cursor_control.py +1193 -0
  537. brigade_cli-0.29.0/tests/test_run_journal.py +2617 -0
  538. brigade_cli-0.29.0/tests/test_run_journal_process_qualification.py +481 -0
  539. brigade_cli-0.29.0/tests/test_run_journal_qualification.py +1978 -0
  540. brigade_cli-0.29.0/tests/test_run_lifecycle.py +3104 -0
  541. brigade_cli-0.29.0/tests/test_run_preference.py +261 -0
  542. brigade_cli-0.29.0/tests/test_run_receipts.py +603 -0
  543. brigade_cli-0.29.0/tests/test_run_resume.py +2111 -0
  544. brigade_cli-0.29.0/tests/test_run_transport.py +1534 -0
  545. brigade_cli-0.29.0/tests/test_runguard.py +2534 -0
  546. brigade_cli-0.29.0/tests/test_runs_serve.py +793 -0
  547. brigade_cli-0.29.0/tests/test_scanner_runs_dir_adoption.py +412 -0
  548. brigade_cli-0.29.0/tests/test_scorecard.py +823 -0
  549. brigade_cli-0.29.0/tests/test_seat_health.py +447 -0
  550. brigade_cli-0.29.0/tests/test_skills_cmd.py +3819 -0
  551. brigade_cli-0.29.0/tests/test_skills_state_windows.py +836 -0
  552. brigade_cli-0.29.0/tests/test_status.py +200 -0
  553. brigade_cli-0.29.0/tests/test_template_profiles.py +299 -0
  554. brigade_cli-0.29.0/tests/test_toml_compat.py +169 -0
  555. brigade_cli-0.29.0/tests/test_ui_theme.py +175 -0
  556. brigade_cli-0.29.0/tests/test_ui_theme_integration.py +425 -0
  557. brigade_cli-0.29.0/tests/test_update_cmd.py +1101 -0
  558. brigade_cli-0.29.0/tests/test_update_notify.py +419 -0
  559. brigade_cli-0.29.0/tests/test_verify_brigade_skill.py +722 -0
  560. brigade_cli-0.29.0/tests/test_verify_parallel.py +149 -0
  561. brigade_cli-0.29.0/tests/test_verify_reaper.py +102 -0
  562. brigade_cli-0.29.0/tests/test_verify_script.py +369 -0
  563. brigade_cli-0.29.0/tests/test_windows_job.py +1381 -0
  564. brigade_cli-0.29.0/tests/test_windows_pytest.py +2098 -0
  565. brigade_cli-0.29.0/tests/test_windows_read_security.py +155 -0
  566. brigade_cli-0.29.0/tests/test_wiring_resolve_target.py +80 -0
  567. brigade_cli-0.29.0/tests/test_work_cmd_footprint.py +303 -0
  568. brigade_cli-0.29.0/tests/test_work_cmd_imports.py +5001 -0
  569. brigade_cli-0.29.0/tests/test_work_cmd_scanners.py +5747 -0
  570. brigade_cli-0.29.0/tests/test_work_cmd_services.py +4421 -0
  571. brigade_cli-0.29.0/tests/test_work_cmd_session.py +2351 -0
  572. brigade_cli-0.29.0/tests/test_work_cmd_sweeps.py +806 -0
  573. brigade_cli-0.29.0/tests/test_work_cmd_verification.py +5169 -0
  574. brigade_cli-0.29.0/tests/test_work_import_inbox_windows.py +510 -0
  575. brigade_cli-0.29.0/tests/test_work_import_provenance_stamp.py +2803 -0
  576. brigade_cli-0.29.0/tests/test_worklore_client.py +881 -0
  577. brigade_cli-0.29.0/tests/test_worklore_ownership.py +1170 -0
  578. brigade_cli-0.29.0/tests/test_worklore_scope.py +791 -0
  579. brigade_cli-0.29.0/tests/test_worklore_store.py +2795 -0
  580. brigade_cli-0.29.0/tests/test_worklore_validate.py +176 -0
  581. brigade_cli-0.27.0/PKG-INFO +0 -163
  582. brigade_cli-0.27.0/QUICKSTART.md +0 -310
  583. brigade_cli-0.27.0/README.md +0 -115
  584. brigade_cli-0.27.0/pyproject.toml +0 -113
  585. brigade_cli-0.27.0/src/brigade/__init__.py +0 -3
  586. brigade_cli-0.27.0/src/brigade/aboyeur/artifacts.py +0 -988
  587. brigade_cli-0.27.0/src/brigade/aboyeur/briefs.py +0 -469
  588. brigade_cli-0.27.0/src/brigade/aboyeur/orchestrator.py +0 -1974
  589. brigade_cli-0.27.0/src/brigade/aboyeur/planning.py +0 -1280
  590. brigade_cli-0.27.0/src/brigade/aboyeur/prompts.py +0 -534
  591. brigade_cli-0.27.0/src/brigade/aboyeur_model_policy.py +0 -565
  592. brigade_cli-0.27.0/src/brigade/acpx_adapter.py +0 -667
  593. brigade_cli-0.27.0/src/brigade/agent_change.py +0 -725
  594. brigade_cli-0.27.0/src/brigade/agent_change_verify.py +0 -780
  595. brigade_cli-0.27.0/src/brigade/agents.py +0 -1868
  596. brigade_cli-0.27.0/src/brigade/approval.py +0 -1123
  597. brigade_cli-0.27.0/src/brigade/attestation_input.py +0 -324
  598. brigade_cli-0.27.0/src/brigade/attestation_receipt.py +0 -154
  599. brigade_cli-0.27.0/src/brigade/authority_marker.py +0 -616
  600. brigade_cli-0.27.0/src/brigade/card_identity.py +0 -171
  601. brigade_cli-0.27.0/src/brigade/care_cmd.py +0 -2083
  602. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/render.py +0 -188
  603. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/__init__.py +0 -76
  604. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/agent_activity.py +0 -646
  605. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/code_graph.py +0 -1456
  606. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/memory_operations.py +0 -1822
  607. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/research.py +0 -854
  608. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/run_timeline.py +0 -369
  609. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/status_grid.py +0 -354
  610. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/work.py +0 -641
  611. brigade_cli-0.27.0/src/brigade/claude_hooks/__init__.py +0 -6
  612. brigade_cli-0.27.0/src/brigade/claude_hooks/classify.py +0 -129
  613. brigade_cli-0.27.0/src/brigade/claude_hooks/package.py +0 -206
  614. brigade_cli-0.27.0/src/brigade/claude_hooks/paths.py +0 -31
  615. brigade_cli-0.27.0/src/brigade/claude_hooks/presence.py +0 -15
  616. brigade_cli-0.27.0/src/brigade/claude_hooks/runtime.py +0 -3351
  617. brigade_cli-0.27.0/src/brigade/claude_hooks/session_state.py +0 -545
  618. brigade_cli-0.27.0/src/brigade/cli/code.py +0 -50
  619. brigade_cli-0.27.0/src/brigade/cli/context.py +0 -93
  620. brigade_cli-0.27.0/src/brigade/cli/fleet.py +0 -1906
  621. brigade_cli-0.27.0/src/brigade/cli/memory.py +0 -484
  622. brigade_cli-0.27.0/src/brigade/cli/receipts.py +0 -364
  623. brigade_cli-0.27.0/src/brigade/cli/run.py +0 -1387
  624. brigade_cli-0.27.0/src/brigade/cli/run_cloud.py +0 -1697
  625. brigade_cli-0.27.0/src/brigade/cli/work/dispatching.py +0 -922
  626. brigade_cli-0.27.0/src/brigade/cloud_tracker.py +0 -1484
  627. brigade_cli-0.27.0/src/brigade/code_export.py +0 -847
  628. brigade_cli-0.27.0/src/brigade/commit_linkage.py +0 -609
  629. brigade_cli-0.27.0/src/brigade/commit_linkage_verify.py +0 -654
  630. brigade_cli-0.27.0/src/brigade/context_cmd.py +0 -870
  631. brigade_cli-0.27.0/src/brigade/context_eval.py +0 -133
  632. brigade_cli-0.27.0/src/brigade/control_crosswalk.py +0 -565
  633. brigade_cli-0.27.0/src/brigade/cosign_attestation.py +0 -291
  634. brigade_cli-0.27.0/src/brigade/daily_cmd/config.py +0 -541
  635. brigade_cli-0.27.0/src/brigade/dirfd.py +0 -221
  636. brigade_cli-0.27.0/src/brigade/doctor.py +0 -1906
  637. brigade_cli-0.27.0/src/brigade/doctor_agent.py +0 -452
  638. brigade_cli-0.27.0/src/brigade/dogfood_cmd.py +0 -576
  639. brigade_cli-0.27.0/src/brigade/evidence_package.py +0 -400
  640. brigade_cli-0.27.0/src/brigade/evidence_redaction.py +0 -277
  641. brigade_cli-0.27.0/src/brigade/fleet_client.py +0 -1999
  642. brigade_cli-0.27.0/src/brigade/fleet_client_cloud.py +0 -623
  643. brigade_cli-0.27.0/src/brigade/fleet_client_grokbot.py +0 -305
  644. brigade_cli-0.27.0/src/brigade/fleet_client_policy.py +0 -392
  645. brigade_cli-0.27.0/src/brigade/fleet_command_deck.py +0 -1690
  646. brigade_cli-0.27.0/src/brigade/fleet_dashboard.py +0 -903
  647. brigade_cli-0.27.0/src/brigade/fleet_export.py +0 -671
  648. brigade_cli-0.27.0/src/brigade/fleet_hub.py +0 -1998
  649. brigade_cli-0.27.0/src/brigade/fleet_hub_grokbot.py +0 -1480
  650. brigade_cli-0.27.0/src/brigade/fleet_hub_http.py +0 -1325
  651. brigade_cli-0.27.0/src/brigade/fleet_hub_model_roster.py +0 -1563
  652. brigade_cli-0.27.0/src/brigade/fleet_hub_policy_api.py +0 -1185
  653. brigade_cli-0.27.0/src/brigade/fleet_hub_roster_page.py +0 -714
  654. brigade_cli-0.27.0/src/brigade/fleet_hub_routing.py +0 -1693
  655. brigade_cli-0.27.0/src/brigade/fleet_hub_sessions.py +0 -372
  656. brigade_cli-0.27.0/src/brigade/fleet_hub_status.py +0 -235
  657. brigade_cli-0.27.0/src/brigade/fleet_model_admission.py +0 -1864
  658. brigade_cli-0.27.0/src/brigade/fleet_model_inventory.py +0 -1706
  659. brigade_cli-0.27.0/src/brigade/fleet_model_roster.py +0 -432
  660. brigade_cli-0.27.0/src/brigade/fleet_policy_form.py +0 -284
  661. brigade_cli-0.27.0/src/brigade/fleet_policy_migration.py +0 -680
  662. brigade_cli-0.27.0/src/brigade/fleet_policy_page.py +0 -1834
  663. brigade_cli-0.27.0/src/brigade/fleet_repo_policy_page.py +0 -394
  664. brigade_cli-0.27.0/src/brigade/fleet_session_bootstrap.py +0 -774
  665. brigade_cli-0.27.0/src/brigade/fleet_session_presence.py +0 -671
  666. brigade_cli-0.27.0/src/brigade/fleet_t3_transport.py +0 -939
  667. brigade_cli-0.27.0/src/brigade/grokbot_backup/actions.py +0 -682
  668. brigade_cli-0.27.0/src/brigade/grokbot_backup/contracts.py +0 -118
  669. brigade_cli-0.27.0/src/brigade/grokbot_backup/ledger.py +0 -552
  670. brigade_cli-0.27.0/src/brigade/grokbot_backup/lifecycle.py +0 -651
  671. brigade_cli-0.27.0/src/brigade/grokbot_backup/runtime_config.py +0 -374
  672. brigade_cli-0.27.0/src/brigade/grokbot_feed.py +0 -585
  673. brigade_cli-0.27.0/src/brigade/grokbot_findings.py +0 -918
  674. brigade_cli-0.27.0/src/brigade/grokbot_fleet/actions.py +0 -1187
  675. brigade_cli-0.27.0/src/brigade/grokbot_fleet/contracts.py +0 -152
  676. brigade_cli-0.27.0/src/brigade/grokbot_fleet/ledger.py +0 -461
  677. brigade_cli-0.27.0/src/brigade/grokbot_fleet/lifecycle.py +0 -728
  678. brigade_cli-0.27.0/src/brigade/grokbot_fleet/runtime_config.py +0 -289
  679. brigade_cli-0.27.0/src/brigade/grokbot_job_validation.py +0 -181
  680. brigade_cli-0.27.0/src/brigade/grokbot_jobs.py +0 -1849
  681. brigade_cli-0.27.0/src/brigade/grokbot_jobs_expiry.py +0 -213
  682. brigade_cli-0.27.0/src/brigade/grokbot_jobs_hub.py +0 -161
  683. brigade_cli-0.27.0/src/brigade/grokbot_mcp.py +0 -1353
  684. brigade_cli-0.27.0/src/brigade/grokbot_n8n/actions.py +0 -709
  685. brigade_cli-0.27.0/src/brigade/grokbot_n8n/lifecycle.py +0 -598
  686. brigade_cli-0.27.0/src/brigade/grokbot_n8n/runtime_config.py +0 -229
  687. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/contracts.py +0 -823
  688. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/excalidraw_client.py +0 -269
  689. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/lifecycle.py +0 -808
  690. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/runtime_config.py +0 -457
  691. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/store.py +0 -732
  692. brigade_cli-0.27.0/src/brigade/grokbot_ops.py +0 -694
  693. brigade_cli-0.27.0/src/brigade/grokbot_packs.py +0 -1496
  694. brigade_cli-0.27.0/src/brigade/grokbot_reconcile.py +0 -581
  695. brigade_cli-0.27.0/src/brigade/grokbot_scout_feed.py +0 -520
  696. brigade_cli-0.27.0/src/brigade/grokbot_wazuh/contracts.py +0 -217
  697. brigade_cli-0.27.0/src/brigade/grokbot_wazuh/lifecycle.py +0 -645
  698. brigade_cli-0.27.0/src/brigade/grokbot_wazuh/store.py +0 -464
  699. brigade_cli-0.27.0/src/brigade/handoff_cmd/sources.py +0 -580
  700. brigade_cli-0.27.0/src/brigade/harness_profile_cmd.py +0 -2488
  701. brigade_cli-0.27.0/src/brigade/ingest.py +0 -561
  702. brigade_cli-0.27.0/src/brigade/install.py +0 -508
  703. brigade_cli-0.27.0/src/brigade/jules_cloud.py +0 -931
  704. brigade_cli-0.27.0/src/brigade/managed_block.py +0 -1252
  705. brigade_cli-0.27.0/src/brigade/mcp_adapters.py +0 -1101
  706. brigade_cli-0.27.0/src/brigade/mcp_cmd.py +0 -1278
  707. brigade_cli-0.27.0/src/brigade/mcp_runtime.py +0 -772
  708. brigade_cli-0.27.0/src/brigade/memory_cmd.py +0 -2189
  709. brigade_cli-0.27.0/src/brigade/memory_doctor/lint.py +0 -94
  710. brigade_cli-0.27.0/src/brigade/memory_doctor/status.py +0 -111
  711. brigade_cli-0.27.0/src/brigade/memory_hooks.py +0 -351
  712. brigade_cli-0.27.0/src/brigade/memory_vault.py +0 -1465
  713. brigade_cli-0.27.0/src/brigade/model_inventory.py +0 -298
  714. brigade_cli-0.27.0/src/brigade/node.py +0 -200
  715. brigade_cli-0.27.0/src/brigade/operator_cmd/lifecycle.py +0 -1357
  716. brigade_cli-0.27.0/src/brigade/outcome_cmd.py +0 -2763
  717. brigade_cli-0.27.0/src/brigade/outcome_discovery.py +0 -224
  718. brigade_cli-0.27.0/src/brigade/pi_mcp_bridge.py +0 -539
  719. brigade_cli-0.27.0/src/brigade/proc.py +0 -1462
  720. brigade_cli-0.27.0/src/brigade/projection/kernel.py +0 -1059
  721. brigade_cli-0.27.0/src/brigade/repos_cmd/adoption.py +0 -540
  722. brigade_cli-0.27.0/src/brigade/research/doctor.py +0 -457
  723. brigade_cli-0.27.0/src/brigade/roster.py +0 -915
  724. brigade_cli-0.27.0/src/brigade/run_budget.py +0 -1853
  725. brigade_cli-0.27.0/src/brigade/run_checkpoint.py +0 -1365
  726. brigade_cli-0.27.0/src/brigade/run_control_journal.py +0 -542
  727. brigade_cli-0.27.0/src/brigade/run_events.py +0 -582
  728. brigade_cli-0.27.0/src/brigade/run_journal.py +0 -1292
  729. brigade_cli-0.27.0/src/brigade/run_lifecycle.py +0 -1019
  730. brigade_cli-0.27.0/src/brigade/run_receipts.py +0 -304
  731. brigade_cli-0.27.0/src/brigade/run_resume.py +0 -1069
  732. brigade_cli-0.27.0/src/brigade/run_transport.py +0 -1513
  733. brigade_cli-0.27.0/src/brigade/runguard.py +0 -1734
  734. brigade_cli-0.27.0/src/brigade/runs_cmd.py +0 -3578
  735. brigade_cli-0.27.0/src/brigade/scorecard.py +0 -866
  736. brigade_cli-0.27.0/src/brigade/seat_health.py +0 -1008
  737. brigade_cli-0.27.0/src/brigade/skills_cmd/adapters.py +0 -854
  738. brigade_cli-0.27.0/src/brigade/skills_cmd/inbox.py +0 -452
  739. brigade_cli-0.27.0/src/brigade/skills_cmd/install.py +0 -860
  740. brigade_cli-0.27.0/src/brigade/skills_cmd/packs.py +0 -627
  741. brigade_cli-0.27.0/src/brigade/skills_cmd/registry.py +0 -1674
  742. brigade_cli-0.27.0/src/brigade/skills_cmd/search_validate.py +0 -519
  743. brigade_cli-0.27.0/src/brigade/template_profiles.py +0 -396
  744. brigade_cli-0.27.0/src/brigade/templates/components/manifest-v1.json +0 -214
  745. brigade_cli-0.27.0/src/brigade/templates/control-crosswalk.json +0 -1171
  746. brigade_cli-0.27.0/src/brigade/templates/hermes/memory-handoff.harness.json +0 -36
  747. brigade_cli-0.27.0/src/brigade/templates/hermes/model-lanes.harness.json +0 -17
  748. brigade_cli-0.27.0/src/brigade/templates/hermes/workspace.harness.json +0 -30
  749. brigade_cli-0.27.0/src/brigade/templates/memory/chat-memory-sweep.example.json +0 -131
  750. brigade_cli-0.27.0/src/brigade/templates/memory/memory-care.example.json +0 -11
  751. brigade_cli-0.27.0/src/brigade/templates/policies/personal.json +0 -28
  752. brigade_cli-0.27.0/src/brigade/templates/policies/public-content.json +0 -28
  753. brigade_cli-0.27.0/src/brigade/templates/policies/public-repo.json +0 -27
  754. brigade_cli-0.27.0/src/brigade/templates/template-profile-snapshot.json +0 -888
  755. brigade_cli-0.27.0/src/brigade/templates.py +0 -89
  756. brigade_cli-0.27.0/src/brigade/toml_compat.py +0 -301
  757. brigade_cli-0.27.0/src/brigade/update_cmd.py +0 -676
  758. brigade_cli-0.27.0/src/brigade/update_notify.py +0 -198
  759. brigade_cli-0.27.0/src/brigade/wiring.py +0 -49
  760. brigade_cli-0.27.0/src/brigade/work_cmd/footprint.py +0 -459
  761. brigade_cli-0.27.0/src/brigade/work_cmd/inbox_lock.py +0 -542
  762. brigade_cli-0.27.0/src/brigade/work_cmd/ledger/authority_store.py +0 -1032
  763. brigade_cli-0.27.0/src/brigade/work_cmd/ledger/import_model.py +0 -1222
  764. brigade_cli-0.27.0/src/brigade/work_cmd/ledger/inbox_provenance.py +0 -1126
  765. brigade_cli-0.27.0/src/brigade/work_cmd/nt_dirfd.py +0 -586
  766. brigade_cli-0.27.0/src/brigade/work_cmd/scanners.py +0 -3332
  767. brigade_cli-0.27.0/src/brigade/work_cmd/services.py +0 -1168
  768. brigade_cli-0.27.0/src/brigade/work_cmd/session/run_status.py +0 -866
  769. brigade_cli-0.27.0/src/brigade/work_cmd/verification.py +0 -2331
  770. brigade_cli-0.27.0/src/brigade/work_cmd/verify_reaper.py +0 -77
  771. brigade_cli-0.27.0/src/brigade/worklore_client.py +0 -393
  772. brigade_cli-0.27.0/src/brigade/worklore_http.py +0 -475
  773. brigade_cli-0.27.0/src/brigade/worklore_store.py +0 -1929
  774. brigade_cli-0.27.0/src/brigade/worklore_store_operations.py +0 -1081
  775. brigade_cli-0.27.0/src/brigade/worklore_validate.py +0 -320
  776. brigade_cli-0.27.0/src/brigade_cli.egg-info/PKG-INFO +0 -163
  777. brigade_cli-0.27.0/src/brigade_cli.egg-info/SOURCES.txt +0 -1217
  778. brigade_cli-0.27.0/src/brigade_cli.egg-info/entry_points.txt +0 -2
  779. brigade_cli-0.27.0/src/brigade_cli.egg-info/requires.txt +0 -13
  780. brigade_cli-0.27.0/tests/test_aboyeur.py +0 -7659
  781. brigade_cli-0.27.0/tests/test_acpx_adapter.py +0 -1057
  782. brigade_cli-0.27.0/tests/test_agent_change.py +0 -1455
  783. brigade_cli-0.27.0/tests/test_agent_notify_station_contracts.py +0 -138
  784. brigade_cli-0.27.0/tests/test_agent_request.py +0 -192
  785. brigade_cli-0.27.0/tests/test_agents.py +0 -2690
  786. brigade_cli-0.27.0/tests/test_agents_model_pin.py +0 -240
  787. brigade_cli-0.27.0/tests/test_agents_windows_executable.py +0 -241
  788. brigade_cli-0.27.0/tests/test_attestation.py +0 -875
  789. brigade_cli-0.27.0/tests/test_attestation_input.py +0 -289
  790. brigade_cli-0.27.0/tests/test_authority_store_hmac.py +0 -1598
  791. brigade_cli-0.27.0/tests/test_card_identity.py +0 -110
  792. brigade_cli-0.27.0/tests/test_care_cmd.py +0 -1839
  793. brigade_cli-0.27.0/tests/test_center_agent_activity.py +0 -771
  794. brigade_cli-0.27.0/tests/test_center_dashboard.py +0 -1430
  795. brigade_cli-0.27.0/tests/test_center_serve.py +0 -247
  796. brigade_cli-0.27.0/tests/test_ci_workflow.py +0 -1029
  797. brigade_cli-0.27.0/tests/test_claude_hooks_compaction_marker.py +0 -258
  798. brigade_cli-0.27.0/tests/test_claude_hooks_doctor.py +0 -389
  799. brigade_cli-0.27.0/tests/test_claude_hooks_latch_race.py +0 -1022
  800. brigade_cli-0.27.0/tests/test_claude_hooks_runtime.py +0 -3117
  801. brigade_cli-0.27.0/tests/test_claude_hooks_settings_merge.py +0 -648
  802. brigade_cli-0.27.0/tests/test_claude_hooks_user_scope.py +0 -227
  803. brigade_cli-0.27.0/tests/test_claude_hooks_user_target.py +0 -433
  804. brigade_cli-0.27.0/tests/test_cloud_tracker.py +0 -2659
  805. brigade_cli-0.27.0/tests/test_code_export.py +0 -293
  806. brigade_cli-0.27.0/tests/test_code_verbs_and_target.py +0 -213
  807. brigade_cli-0.27.0/tests/test_codex_appserver.py +0 -969
  808. brigade_cli-0.27.0/tests/test_codex_cloud.py +0 -1553
  809. brigade_cli-0.27.0/tests/test_component_bins.py +0 -187
  810. brigade_cli-0.27.0/tests/test_component_paths.py +0 -134
  811. brigade_cli-0.27.0/tests/test_control_crosswalk.py +0 -306
  812. brigade_cli-0.27.0/tests/test_cosign_attestation.py +0 -826
  813. brigade_cli-0.27.0/tests/test_cursor_install_state_migration.py +0 -239
  814. brigade_cli-0.27.0/tests/test_daily_driver_cmd.py +0 -1720
  815. brigade_cli-0.27.0/tests/test_dashboard_outcomes.py +0 -137
  816. brigade_cli-0.27.0/tests/test_dashboard_runs.py +0 -294
  817. brigade_cli-0.27.0/tests/test_dashboard_status.py +0 -114
  818. brigade_cli-0.27.0/tests/test_dashboard_work.py +0 -491
  819. brigade_cli-0.27.0/tests/test_dirfd.py +0 -171
  820. brigade_cli-0.27.0/tests/test_doctor.py +0 -3083
  821. brigade_cli-0.27.0/tests/test_doctor_agent.py +0 -295
  822. brigade_cli-0.27.0/tests/test_error_refusal_copy.py +0 -284
  823. brigade_cli-0.27.0/tests/test_evidence_redaction.py +0 -437
  824. brigade_cli-0.27.0/tests/test_fleet_authority_proof.py +0 -798
  825. brigade_cli-0.27.0/tests/test_fleet_claim_release.py +0 -1279
  826. brigade_cli-0.27.0/tests/test_fleet_claims.py +0 -2380
  827. brigade_cli-0.27.0/tests/test_fleet_client_hardening.py +0 -314
  828. brigade_cli-0.27.0/tests/test_fleet_cloud.py +0 -2030
  829. brigade_cli-0.27.0/tests/test_fleet_command_deck.py +0 -1523
  830. brigade_cli-0.27.0/tests/test_fleet_dashboard.py +0 -924
  831. brigade_cli-0.27.0/tests/test_fleet_export.py +0 -726
  832. brigade_cli-0.27.0/tests/test_fleet_model_admission.py +0 -3808
  833. brigade_cli-0.27.0/tests/test_fleet_model_roster.py +0 -1015
  834. brigade_cli-0.27.0/tests/test_fleet_models_list.py +0 -177
  835. brigade_cli-0.27.0/tests/test_fleet_native_launch_binding.py +0 -539
  836. brigade_cli-0.27.0/tests/test_fleet_nodes.py +0 -874
  837. brigade_cli-0.27.0/tests/test_fleet_policy_migration.py +0 -1032
  838. brigade_cli-0.27.0/tests/test_fleet_policy_page.py +0 -2154
  839. brigade_cli-0.27.0/tests/test_fleet_roster_page.py +0 -735
  840. brigade_cli-0.27.0/tests/test_fleet_routing.py +0 -960
  841. brigade_cli-0.27.0/tests/test_fleet_session_bootstrap.py +0 -762
  842. brigade_cli-0.27.0/tests/test_fleet_session_presence.py +0 -323
  843. brigade_cli-0.27.0/tests/test_fleet_sync.py +0 -1594
  844. brigade_cli-0.27.0/tests/test_governance_inventory.py +0 -864
  845. brigade_cli-0.27.0/tests/test_grokbot_backup_actions.py +0 -468
  846. brigade_cli-0.27.0/tests/test_grokbot_backup_ledger.py +0 -113
  847. brigade_cli-0.27.0/tests/test_grokbot_backup_lifecycle.py +0 -295
  848. brigade_cli-0.27.0/tests/test_grokbot_cerebro.py +0 -961
  849. brigade_cli-0.27.0/tests/test_grokbot_feed.py +0 -1382
  850. brigade_cli-0.27.0/tests/test_grokbot_findings.py +0 -1204
  851. brigade_cli-0.27.0/tests/test_grokbot_fleet_ledger.py +0 -151
  852. brigade_cli-0.27.0/tests/test_grokbot_fleet_lifecycle.py +0 -199
  853. brigade_cli-0.27.0/tests/test_grokbot_jobs.py +0 -1955
  854. brigade_cli-0.27.0/tests/test_grokbot_mcp.py +0 -2291
  855. brigade_cli-0.27.0/tests/test_grokbot_n8n_lifecycle.py +0 -314
  856. brigade_cli-0.27.0/tests/test_grokbot_obsidian_actions.py +0 -456
  857. brigade_cli-0.27.0/tests/test_grokbot_obsidian_lifecycle.py +0 -476
  858. brigade_cli-0.27.0/tests/test_grokbot_ops.py +0 -1209
  859. brigade_cli-0.27.0/tests/test_grokbot_packs.py +0 -1666
  860. brigade_cli-0.27.0/tests/test_grokbot_scout_feed.py +0 -1147
  861. brigade_cli-0.27.0/tests/test_grokbot_wazuh_lifecycle.py +0 -274
  862. brigade_cli-0.27.0/tests/test_grokbot_wazuh_store.py +0 -161
  863. brigade_cli-0.27.0/tests/test_handoff_cmd.py +0 -2453
  864. brigade_cli-0.27.0/tests/test_harness_conformance_probe.py +0 -1455
  865. brigade_cli-0.27.0/tests/test_harness_profile_cmd.py +0 -133
  866. brigade_cli-0.27.0/tests/test_harness_user_scope.py +0 -1004
  867. brigade_cli-0.27.0/tests/test_harness_user_scope_slice2.py +0 -493
  868. brigade_cli-0.27.0/tests/test_ingest.py +0 -1282
  869. brigade_cli-0.27.0/tests/test_instruction_profiles.py +0 -240
  870. brigade_cli-0.27.0/tests/test_jules_cloud.py +0 -1064
  871. brigade_cli-0.27.0/tests/test_ledger_1233_findings.py +0 -305
  872. brigade_cli-0.27.0/tests/test_localio.py +0 -267
  873. brigade_cli-0.27.0/tests/test_mcp_adapters.py +0 -391
  874. brigade_cli-0.27.0/tests/test_mcp_cmd.py +0 -339
  875. brigade_cli-0.27.0/tests/test_mcp_integration.py +0 -667
  876. brigade_cli-0.27.0/tests/test_mcp_runtime.py +0 -687
  877. brigade_cli-0.27.0/tests/test_mcp_url_only_import.py +0 -133
  878. brigade_cli-0.27.0/tests/test_memory_cmd.py +0 -1785
  879. brigade_cli-0.27.0/tests/test_memory_hooks.py +0 -281
  880. brigade_cli-0.27.0/tests/test_memory_retrieval_eval.py +0 -546
  881. brigade_cli-0.27.0/tests/test_memory_vault_projection.py +0 -556
  882. brigade_cli-0.27.0/tests/test_model_inventory.py +0 -392
  883. brigade_cli-0.27.0/tests/test_module_size_ratchet.py +0 -75
  884. brigade_cli-0.27.0/tests/test_operator_checkup.py +0 -457
  885. brigade_cli-0.27.0/tests/test_operator_cmd.py +0 -1862
  886. brigade_cli-0.27.0/tests/test_outcome.py +0 -434
  887. brigade_cli-0.27.0/tests/test_outcome_activegraph.py +0 -107
  888. brigade_cli-0.27.0/tests/test_outcome_backfill_scorecard.py +0 -328
  889. brigade_cli-0.27.0/tests/test_outcome_cmd.py +0 -3144
  890. brigade_cli-0.27.0/tests/test_outcome_execute.py +0 -77
  891. brigade_cli-0.27.0/tests/test_outcome_infrastructure_attribution.py +0 -1092
  892. brigade_cli-0.27.0/tests/test_outcome_reused_receipt_dedup.py +0 -229
  893. brigade_cli-0.27.0/tests/test_pi_mcp_bridge.py +0 -486
  894. brigade_cli-0.27.0/tests/test_pre_push_hook.py +0 -502
  895. brigade_cli-0.27.0/tests/test_proc.py +0 -1128
  896. brigade_cli-0.27.0/tests/test_producer_run_id.py +0 -391
  897. brigade_cli-0.27.0/tests/test_projection_kernel.py +0 -660
  898. brigade_cli-0.27.0/tests/test_publish_workflow.py +0 -431
  899. brigade_cli-0.27.0/tests/test_published_artifact_acceptance.py +0 -832
  900. brigade_cli-0.27.0/tests/test_receipt_schema_audit.py +0 -467
  901. brigade_cli-0.27.0/tests/test_receipt_signing.py +0 -94
  902. brigade_cli-0.27.0/tests/test_repos_adoption_cmd.py +0 -395
  903. brigade_cli-0.27.0/tests/test_research_acceptance.py +0 -369
  904. brigade_cli-0.27.0/tests/test_research_doctor.py +0 -562
  905. brigade_cli-0.27.0/tests/test_roster.py +0 -1718
  906. brigade_cli-0.27.0/tests/test_roster_cmd.py +0 -1099
  907. brigade_cli-0.27.0/tests/test_run_budget.py +0 -1331
  908. brigade_cli-0.27.0/tests/test_run_checkpoint.py +0 -3410
  909. brigade_cli-0.27.0/tests/test_run_cli.py +0 -3742
  910. brigade_cli-0.27.0/tests/test_run_detach.py +0 -867
  911. brigade_cli-0.27.0/tests/test_run_events_cursor_control.py +0 -942
  912. brigade_cli-0.27.0/tests/test_run_journal.py +0 -2416
  913. brigade_cli-0.27.0/tests/test_run_lifecycle.py +0 -3067
  914. brigade_cli-0.27.0/tests/test_run_preference.py +0 -261
  915. brigade_cli-0.27.0/tests/test_run_receipts.py +0 -181
  916. brigade_cli-0.27.0/tests/test_run_resume.py +0 -1748
  917. brigade_cli-0.27.0/tests/test_run_transport.py +0 -1382
  918. brigade_cli-0.27.0/tests/test_runguard.py +0 -2509
  919. brigade_cli-0.27.0/tests/test_runs_serve.py +0 -793
  920. brigade_cli-0.27.0/tests/test_scanner_runs_dir_adoption.py +0 -410
  921. brigade_cli-0.27.0/tests/test_scorecard.py +0 -753
  922. brigade_cli-0.27.0/tests/test_seat_health.py +0 -379
  923. brigade_cli-0.27.0/tests/test_skills_cmd.py +0 -3765
  924. brigade_cli-0.27.0/tests/test_status.py +0 -195
  925. brigade_cli-0.27.0/tests/test_template_profiles.py +0 -283
  926. brigade_cli-0.27.0/tests/test_toml_compat.py +0 -137
  927. brigade_cli-0.27.0/tests/test_update_cmd.py +0 -1030
  928. brigade_cli-0.27.0/tests/test_update_notify.py +0 -363
  929. brigade_cli-0.27.0/tests/test_verify_brigade_skill.py +0 -619
  930. brigade_cli-0.27.0/tests/test_verify_script.py +0 -298
  931. brigade_cli-0.27.0/tests/test_wiring_resolve_target.py +0 -79
  932. brigade_cli-0.27.0/tests/test_work_cmd_footprint.py +0 -247
  933. brigade_cli-0.27.0/tests/test_work_cmd_imports.py +0 -4930
  934. brigade_cli-0.27.0/tests/test_work_cmd_scanners.py +0 -5537
  935. brigade_cli-0.27.0/tests/test_work_cmd_services.py +0 -3772
  936. brigade_cli-0.27.0/tests/test_work_cmd_session.py +0 -2320
  937. brigade_cli-0.27.0/tests/test_work_cmd_sweeps.py +0 -805
  938. brigade_cli-0.27.0/tests/test_work_cmd_verification.py +0 -3765
  939. brigade_cli-0.27.0/tests/test_work_import_inbox_windows.py +0 -341
  940. brigade_cli-0.27.0/tests/test_work_import_provenance_stamp.py +0 -2779
  941. brigade_cli-0.27.0/tests/test_worklore_client.py +0 -658
  942. brigade_cli-0.27.0/tests/test_worklore_store.py +0 -2729
  943. brigade_cli-0.27.0/tests/test_worklore_validate.py +0 -175
  944. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/LICENSE +0 -0
  945. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/MANIFEST.in +0 -0
  946. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/THIRD_PARTY_NOTICES.md +0 -0
  947. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/setup.cfg +0 -0
  948. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/__main__.py +0 -0
  949. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/aboyeur/__init__.py +0 -0
  950. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/aboyeur/direct_worker_finish.py +0 -0
  951. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/aboyeur/model_admission.py +0 -0
  952. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/aboyeur/run_io.py +0 -0
  953. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/aboyeur_artifacts.py +0 -0
  954. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/actionqueue.py +0 -0
  955. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/add.py +0 -0
  956. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/agent_change_refs.py +0 -0
  957. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/agent_request.py +0 -0
  958. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/agent_skill_format.py +0 -0
  959. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/approval_v2.py +0 -0
  960. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/assets/fleet_hub/apple-touch-icon.png +0 -0
  961. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/assets/fleet_hub/favicon-32x32.png +0 -0
  962. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/assets/fleet_hub/favicon.ico +0 -0
  963. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/assets/fleet_hub/icon-192.png +0 -0
  964. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/assets/fleet_hub/icon-512.png +0 -0
  965. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/assets/fleet_hub/site.webmanifest +0 -0
  966. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/attestation.py +0 -0
  967. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/attestation_cmd.py +0 -0
  968. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/authority_broker.py +0 -0
  969. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/authority_key.py +0 -0
  970. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/brief_sections.py +0 -0
  971. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/budgets.py +0 -0
  972. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/budgets_cmd.py +0 -0
  973. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/candidate_set.py +0 -0
  974. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/card_fingerprint.py +0 -0
  975. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/care_schedules.py +0 -0
  976. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/causal_receipt.py +0 -0
  977. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/center_cmd/__init__.py +0 -0
  978. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/center_cmd/actions.py +0 -0
  979. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/center_cmd/agent_activity.py +0 -0
  980. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/center_cmd/core.py +0 -0
  981. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/center_cmd/dashboard/__init__.py +0 -0
  982. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/center_cmd/dashboard/data.py +0 -0
  983. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/center_cmd/dashboard/snapshot.py +0 -0
  984. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/center_cmd/dashboard/timing.py +0 -0
  985. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/center_cmd/dashboard/views/handoff_inbox.py +0 -0
  986. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/center_cmd/dashboard/views/outcome_rank.py +0 -0
  987. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/center_cmd/dashboard/work_graph.py +0 -0
  988. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/center_cmd/readiness.py +0 -0
  989. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/center_cmd/report_review_ops.py +0 -0
  990. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/center_cmd/reports.py +0 -0
  991. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/center_cmd/schema_ops.py +0 -0
  992. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/center_cmd/serve.py +0 -0
  993. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/chat_cmd.py +0 -0
  994. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/claude_cloud.py +0 -0
  995. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/claude_hooks/compaction_marker.py +0 -0
  996. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/claude_hooks/envelope.py +0 -0
  997. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/claude_hooks/install_cmd.py +0 -0
  998. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/__init__.py +0 -0
  999. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/_common.py +0 -0
  1000. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/add.py +0 -0
  1001. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/budgets.py +0 -0
  1002. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/care.py +0 -0
  1003. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/center.py +0 -0
  1004. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/chat.py +0 -0
  1005. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/completions.py +0 -0
  1006. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/daily.py +0 -0
  1007. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/doctor.py +0 -0
  1008. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/dogfood.py +0 -0
  1009. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/evidence.py +0 -0
  1010. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/extras.py +0 -0
  1011. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/fleet_policy.py +0 -0
  1012. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/friction.py +0 -0
  1013. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/governance.py +0 -0
  1014. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/guard.py +0 -0
  1015. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/handoff.py +0 -0
  1016. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/handoff_template.py +0 -0
  1017. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/harness.py +0 -0
  1018. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/hermes_fragments.py +0 -0
  1019. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/ingest.py +0 -0
  1020. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/init.py +0 -0
  1021. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/learn.py +0 -0
  1022. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/mcp.py +0 -0
  1023. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/model.py +0 -0
  1024. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/node.py +0 -0
  1025. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/notifications.py +0 -0
  1026. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/openclaw_fragments.py +0 -0
  1027. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/operator.py +0 -0
  1028. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/outcome.py +0 -0
  1029. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/pantry.py +0 -0
  1030. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/profiles.py +0 -0
  1031. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/projection.py +0 -0
  1032. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/projects.py +0 -0
  1033. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/reconfigure.py +0 -0
  1034. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/release.py +0 -0
  1035. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/repos.py +0 -0
  1036. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/research.py +0 -0
  1037. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/roadmap.py +0 -0
  1038. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/roster.py +0 -0
  1039. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/route.py +0 -0
  1040. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/run_cloud_build_feed.py +0 -0
  1041. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/runbook.py +0 -0
  1042. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/runs.py +0 -0
  1043. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/scrub.py +0 -0
  1044. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/search.py +0 -0
  1045. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/security.py +0 -0
  1046. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/setup.py +0 -0
  1047. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/skills.py +0 -0
  1048. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/stations.py +0 -0
  1049. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/status.py +0 -0
  1050. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/tokens.py +0 -0
  1051. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/tools.py +0 -0
  1052. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/untrusted.py +0 -0
  1053. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/update.py +0 -0
  1054. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/version.py +0 -0
  1055. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/work/__init__.py +0 -0
  1056. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/work/phases.py +0 -0
  1057. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/work/registration.py +0 -0
  1058. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cli/workflow.py +0 -0
  1059. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/code_cmd.py +0 -0
  1060. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/code_references.py +0 -0
  1061. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/codex_appserver.py +0 -0
  1062. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/codex_cloud.py +0 -0
  1063. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/completions.py +0 -0
  1064. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/component_bins.py +0 -0
  1065. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/component_install.py +0 -0
  1066. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/component_manifest.py +0 -0
  1067. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/component_paths.py +0 -0
  1068. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/component_report.py +0 -0
  1069. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/component_state.py +0 -0
  1070. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/config.py +0 -0
  1071. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cursor_cloud.py +0 -0
  1072. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/cursor_user_cmd.py +0 -0
  1073. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/daily_cmd/__init__.py +0 -0
  1074. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/daily_cmd/approvals.py +0 -0
  1075. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/daily_cmd/candidates.py +0 -0
  1076. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/daily_cmd/closeout_ops.py +0 -0
  1077. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/daily_cmd/hardening.py +0 -0
  1078. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/daily_cmd/run_loop.py +0 -0
  1079. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/daily_cmd/status_plan.py +0 -0
  1080. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/daily_cmd/telemetry_ops.py +0 -0
  1081. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/evidence_brief.py +0 -0
  1082. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/evidence_cmd.py +0 -0
  1083. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/evidence_runtime.py +0 -0
  1084. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/extras.py +0 -0
  1085. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/fixtures/causal-receipt.v1.golden.json +0 -0
  1086. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/fixtures/provenance-envelope.v1.golden.json +0 -0
  1087. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/fixtures/trust-policy.v1.json +0 -0
  1088. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/fixtures/worker-events-appserver.v1.golden.json +0 -0
  1089. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/fleet_hub_capacity.py +0 -0
  1090. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/fleet_hub_policy.py +0 -0
  1091. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/fleet_hub_preference.py +0 -0
  1092. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/fleet_policy.py +0 -0
  1093. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/fleet_policy_delegation.py +0 -0
  1094. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/fleet_quota.py +0 -0
  1095. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/fragments.py +0 -0
  1096. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/friction_cmd.py +0 -0
  1097. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/generated_patch_quarantine.py +0 -0
  1098. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/governance_inventory.py +0 -0
  1099. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/graphtrail_delta.py +0 -0
  1100. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_backup/__init__.py +0 -0
  1101. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_backup/adapters.py +0 -0
  1102. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_backup/exec.py +0 -0
  1103. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_backup/normalize.py +0 -0
  1104. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_backup/tools.py +0 -0
  1105. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_build_feed.py +0 -0
  1106. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_cerebro.py +0 -0
  1107. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_findings_relay.py +0 -0
  1108. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_fleet/__init__.py +0 -0
  1109. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_fleet/app.py +0 -0
  1110. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_fleet/exec.py +0 -0
  1111. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_fleet/normalize.py +0 -0
  1112. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_fleet/policy.py +0 -0
  1113. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_fleet/probes.py +0 -0
  1114. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_fleet/registry.py +0 -0
  1115. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_fleet/tools.py +0 -0
  1116. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_job_clock.py +0 -0
  1117. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_n8n/__init__.py +0 -0
  1118. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_n8n/client.py +0 -0
  1119. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_n8n/contracts.py +0 -0
  1120. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_n8n/tools.py +0 -0
  1121. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_obsidian/__init__.py +0 -0
  1122. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_obsidian/actions.py +0 -0
  1123. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_obsidian/adapters.py +0 -0
  1124. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_obsidian/capabilities.py +0 -0
  1125. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_obsidian/catalog.py +0 -0
  1126. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_obsidian/content_policy.py +0 -0
  1127. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_obsidian/native_client.py +0 -0
  1128. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_obsidian/operator_adapter.py +0 -0
  1129. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_obsidian/path_policy.py +0 -0
  1130. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_obsidian/tls.py +0 -0
  1131. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_obsidian/tools.py +0 -0
  1132. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_obsidian/utf8.py +0 -0
  1133. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_operations_relay.py +0 -0
  1134. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_pack_relay.py +0 -0
  1135. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_wazuh/__init__.py +0 -0
  1136. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_wazuh/normalize.py +0 -0
  1137. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_wazuh/policy.py +0 -0
  1138. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/grokbot_wazuh/tools.py +0 -0
  1139. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/__init__.py +0 -0
  1140. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/__main__.py +0 -0
  1141. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/allowlist.py +0 -0
  1142. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/audit.py +0 -0
  1143. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/baseline.py +0 -0
  1144. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/cli.py +0 -0
  1145. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/detectors/__init__.py +0 -0
  1146. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/detectors/opf.py +0 -0
  1147. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/engine.py +0 -0
  1148. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/examples/n8n-validation/blocked-local-service.json +0 -0
  1149. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/examples/n8n-validation/blocked-secret-token.json +0 -0
  1150. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/examples/n8n-validation/clean-blog-post.json +0 -0
  1151. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/examples/n8n-validation/clean-social-post.json +0 -0
  1152. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/examples/n8n-validation/warn-review-email.json +0 -0
  1153. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/git_commits.py +0 -0
  1154. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/git_scan.py +0 -0
  1155. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/n8n_advisory.py +0 -0
  1156. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/n8n_validate.py +0 -0
  1157. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/policies/in-house-repo.json +0 -0
  1158. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/policies/openclaw-message.json +0 -0
  1159. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/policies/pr-draft.json +0 -0
  1160. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/policies/public-content.json +0 -0
  1161. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/policies/public-repo.json +0 -0
  1162. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/policy.py +0 -0
  1163. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/pr_draft.py +0 -0
  1164. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/pr_prepare.py +0 -0
  1165. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/publish_check.py +0 -0
  1166. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/report.py +0 -0
  1167. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/rev_range.py +0 -0
  1168. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/rules.py +0 -0
  1169. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/guard/types.py +0 -0
  1170. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/handoff.py +0 -0
  1171. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/handoff_cmd/__init__.py +0 -0
  1172. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/handoff_cmd/drafts.py +0 -0
  1173. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/handoff_cmd/inspect_ops.py +0 -0
  1174. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/handoff_cmd/issue_ops.py +0 -0
  1175. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/handoff_cmd/linting.py +0 -0
  1176. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/handoff_cmd/migrate_ops.py +0 -0
  1177. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/handoff_cmd/models.py +0 -0
  1178. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/handoff_cmd/readability.py +0 -0
  1179. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/handoff_cmd/receipts.py +0 -0
  1180. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/handoff_content.py +0 -0
  1181. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/harness_profile_doctor.py +0 -0
  1182. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/harness_profiles.py +0 -0
  1183. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/hermes_adapter.py +0 -0
  1184. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/learn_cmd.py +0 -0
  1185. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/localio.py +0 -0
  1186. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/managed.py +0 -0
  1187. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/managed_snapshot.py +0 -0
  1188. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/mcp_server.py +0 -0
  1189. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_doctor/__init__.py +0 -0
  1190. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_doctor/__main__.py +0 -0
  1191. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_doctor/cli.py +0 -0
  1192. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_doctor/compact.py +0 -0
  1193. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_doctor/git.py +0 -0
  1194. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_doctor/init_git.py +0 -0
  1195. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_doctor/parsing.py +0 -0
  1196. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_doctor/paths.py +0 -0
  1197. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_doctor/safety.py +0 -0
  1198. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_doctor_cmd.py +0 -0
  1199. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_identity_audit.py +0 -0
  1200. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_operations.py +0 -0
  1201. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_retrieval_eval/__init__.py +0 -0
  1202. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_retrieval_eval/__main__.py +0 -0
  1203. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_retrieval_eval/adapters.py +0 -0
  1204. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_retrieval_eval/corpus.py +0 -0
  1205. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_retrieval_eval/harness.py +0 -0
  1206. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_retrieval_eval/metrics.py +0 -0
  1207. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_retrieval_eval/projection.py +0 -0
  1208. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_retrieval_eval/quality.py +0 -0
  1209. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/memory_retrieval_eval/report.py +0 -0
  1210. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/message_envelope.py +0 -0
  1211. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/model_scorecard.py +0 -0
  1212. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/model_trials.py +0 -0
  1213. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/notifications_cmd.py +0 -0
  1214. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/obsidian_vault.py +0 -0
  1215. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/operator_cmd/__init__.py +0 -0
  1216. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/operator_cmd/adoption.py +0 -0
  1217. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/operator_cmd/guide.py +0 -0
  1218. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/operator_cmd/health.py +0 -0
  1219. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/operator_cmd/migration.py +0 -0
  1220. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/operator_cmd/surfaces.py +0 -0
  1221. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/outcome.py +0 -0
  1222. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/outcome_repair.py +0 -0
  1223. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/pantry_cmd.py +0 -0
  1224. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/pantry_compat.py +0 -0
  1225. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/phases_cmd/__init__.py +0 -0
  1226. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/phases_cmd/checks_actions.py +0 -0
  1227. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/phases_cmd/constants.py +0 -0
  1228. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/phases_cmd/session_lifecycle.py +0 -0
  1229. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/phases_cmd/session_ops.py +0 -0
  1230. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/pi_mcp_cmd.py +0 -0
  1231. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/profiles.py +0 -0
  1232. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/profiles_cmd.py +0 -0
  1233. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/projection/__init__.py +0 -0
  1234. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/projection/fixture.py +0 -0
  1235. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/projection_cmd.py +0 -0
  1236. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/projects_cmd.py +0 -0
  1237. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/prompt.py +0 -0
  1238. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/provenance.py +0 -0
  1239. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/py.typed +0 -0
  1240. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/receipt_schema.py +0 -0
  1241. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/receipt_signing.py +0 -0
  1242. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/receipts_cmd.py +0 -0
  1243. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/receipts_trailer.py +0 -0
  1244. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/reconfigure.py +0 -0
  1245. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/registry.py +0 -0
  1246. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/release_cmd/__init__.py +0 -0
  1247. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/release_cmd/candidate.py +0 -0
  1248. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/release_cmd/candidate_audit_ops.py +0 -0
  1249. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/release_cmd/ci.py +0 -0
  1250. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/release_cmd/commands.py +0 -0
  1251. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/release_cmd/evidence.py +0 -0
  1252. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/release_cmd/install_smoke.py +0 -0
  1253. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/release_cmd/paths.py +0 -0
  1254. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/release_cmd/schema_ops.py +0 -0
  1255. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/release_cmd/version_guard.py +0 -0
  1256. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/release_version_sync.py +0 -0
  1257. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/render.py +0 -0
  1258. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/reportstore.py +0 -0
  1259. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/repos_cmd/__init__.py +0 -0
  1260. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/repos_cmd/actions_dispatch.py +0 -0
  1261. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/repos_cmd/constants.py +0 -0
  1262. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/repos_cmd/fleet.py +0 -0
  1263. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/repos_cmd/fleet_health.py +0 -0
  1264. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/repos_cmd/friction_fleet.py +0 -0
  1265. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/repos_cmd/release_ops.py +0 -0
  1266. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/repos_cmd/release_train.py +0 -0
  1267. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/repos_cmd/sweeps.py +0 -0
  1268. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/research/__init__.py +0 -0
  1269. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/research/claim_audit.py +0 -0
  1270. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/research/config.py +0 -0
  1271. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/research/engine.py +0 -0
  1272. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/research/extract.py +0 -0
  1273. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/research/handoff.py +0 -0
  1274. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/research/llm.py +0 -0
  1275. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/research/provenance.py +0 -0
  1276. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/research/registry.py +0 -0
  1277. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/research/report.py +0 -0
  1278. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/research/sources/__init__.py +0 -0
  1279. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/research/sources/browser_ai.py +0 -0
  1280. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/research/sources/cli.py +0 -0
  1281. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/research/sources/local.py +0 -0
  1282. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/research/sources/web.py +0 -0
  1283. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/research/types.py +0 -0
  1284. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/research_cmd.py +0 -0
  1285. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/result_integrity.py +0 -0
  1286. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/roadmap_cmd.py +0 -0
  1287. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/roster_cmd.py +0 -0
  1288. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/route_catalog.py +0 -0
  1289. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/route_policy.py +0 -0
  1290. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/route_receipts.py +0 -0
  1291. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/router.py +0 -0
  1292. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/run_audit.py +0 -0
  1293. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/run_control.py +0 -0
  1294. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/run_dirfd.py +0 -0
  1295. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/run_event_cursor.py +0 -0
  1296. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/run_id.py +0 -0
  1297. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/run_preference.py +0 -0
  1298. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/run_projector.py +0 -0
  1299. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/run_reap.py +0 -0
  1300. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/run_redaction.py +0 -0
  1301. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/run_seat.py +0 -0
  1302. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/run_shadow.py +0 -0
  1303. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/runbook_cmd.py +0 -0
  1304. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/runs_cmd_worktrees.py +0 -0
  1305. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/runs_diff.py +0 -0
  1306. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/runs_serve.py +0 -0
  1307. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/runs_view.html +0 -0
  1308. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/scanner_isolation.py +0 -0
  1309. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/scrub.py +0 -0
  1310. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/search_cmd.py +0 -0
  1311. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/seat_health_policy.py +0 -0
  1312. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/security_cmd/__init__.py +0 -0
  1313. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/security_cmd/commands.py +0 -0
  1314. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/security_cmd/config.py +0 -0
  1315. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/security_cmd/enrichment.py +0 -0
  1316. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/security_cmd/models.py +0 -0
  1317. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/security_cmd/reports.py +0 -0
  1318. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/security_cmd/scan_detectors.py +0 -0
  1319. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/security_cmd/scan_engine.py +0 -0
  1320. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/security_cmd/suppression.py +0 -0
  1321. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/security_cmd/template_audit_ops.py +0 -0
  1322. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/selection.py +0 -0
  1323. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/skill_obligations.py +0 -0
  1324. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/skills_cmd/__init__.py +0 -0
  1325. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/skills_cmd/sync_history.py +0 -0
  1326. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/station.py +0 -0
  1327. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/station_health.py +0 -0
  1328. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/station_manifest.py +0 -0
  1329. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/stations_cmd.py +0 -0
  1330. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/status.py +0 -0
  1331. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/telemetry_export.py +0 -0
  1332. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/adal/memory-handoffs/TEMPLATE.md +0 -0
  1333. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/aider/memory-handoffs/TEMPLATE.md +0 -0
  1334. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/amp/memory-handoffs/TEMPLATE.md +0 -0
  1335. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/antigravity/memory-handoffs/TEMPLATE.md +0 -0
  1336. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/claude/memory-handoffs/TEMPLATE.md +0 -0
  1337. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/codex/memory-handoffs/TEMPLATE.md +0 -0
  1338. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/continue/memory-handoffs/TEMPLATE.md +0 -0
  1339. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/copilot/memory-handoffs/TEMPLATE.md +0 -0
  1340. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/crush/memory-handoffs/TEMPLATE.md +0 -0
  1341. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/cursor/memory-handoffs/TEMPLATE.md +0 -0
  1342. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/depth/repo.json +0 -0
  1343. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/depth/workspace.json +0 -0
  1344. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/evals/adversarial/failed-verification/cases/acknowledge-broken-receipt.prompt.md +0 -0
  1345. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/evals/adversarial/failed-verification/cases/report-failing-tests.prompt.md +0 -0
  1346. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/evals/adversarial/failed-verification/manifest.json +0 -0
  1347. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/evals/adversarial/prompt-injection/cases/disregard-system-prompt.prompt.md +0 -0
  1348. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/evals/adversarial/prompt-injection/cases/fake-system-block.prompt.md +0 -0
  1349. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/evals/adversarial/prompt-injection/cases/handoff-lint-regression.prompt.md +0 -0
  1350. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/evals/adversarial/prompt-injection/fixtures/handoff-lint-regression.md +0 -0
  1351. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/evals/adversarial/prompt-injection/manifest.json +0 -0
  1352. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/evals/adversarial/unsafe-command/cases/refuse-destructive-shell.prompt.md +0 -0
  1353. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/evals/adversarial/unsafe-command/cases/refuse-force-push.prompt.md +0 -0
  1354. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/evals/adversarial/unsafe-command/manifest.json +0 -0
  1355. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/evals/adversarial/untrusted-evidence/cases/benign-quoted-payload.prompt.md +0 -0
  1356. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/evals/adversarial/untrusted-evidence/cases/hostile-tool-output.prompt.md +0 -0
  1357. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/evals/adversarial/untrusted-evidence/manifest.json +0 -0
  1358. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/generic/harness-adapter-checklist.md +0 -0
  1359. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/generic/memory-contract.md +0 -0
  1360. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/goose/memory-handoffs/TEMPLATE.md +0 -0
  1361. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/grok/hooks/brigade-work.json +0 -0
  1362. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/grok/hooks/brigade-work.sh +0 -0
  1363. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/grok/memory-handoffs/TEMPLATE.md +0 -0
  1364. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/handoff/handoff-sources.example.json +0 -0
  1365. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/handoff/openclaw-ingest-receipt.example.json +0 -0
  1366. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/adal.json +0 -0
  1367. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/aider.json +0 -0
  1368. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/amp.json +0 -0
  1369. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/antigravity.json +0 -0
  1370. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/claude.json +0 -0
  1371. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/codex.json +0 -0
  1372. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/continue.json +0 -0
  1373. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/copilot.json +0 -0
  1374. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/crush.json +0 -0
  1375. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/cursor.json +0 -0
  1376. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/goose.json +0 -0
  1377. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/grok.json +0 -0
  1378. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/hermes.json +0 -0
  1379. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/kimi.json +0 -0
  1380. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/openclaw.json +0 -0
  1381. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/opencode.json +0 -0
  1382. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/openhands.json +0 -0
  1383. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/pi.json +0 -0
  1384. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/harnesses/qwen.json +0 -0
  1385. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/hermes/README.md +0 -0
  1386. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/hermes/memory-handoffs/TEMPLATE.md +0 -0
  1387. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/hooks/pre-push +0 -0
  1388. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/includes/publisher.json +0 -0
  1389. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/includes/repo-extras.json +0 -0
  1390. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/kimi/memory-handoffs/TEMPLATE.md +0 -0
  1391. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/memory/cards/backup-restic.md +0 -0
  1392. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/memory/cards/chat-surface-crawlers.md +0 -0
  1393. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/memory/cards/content-safety.md +0 -0
  1394. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/memory/cards/handoff-flow.md +0 -0
  1395. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/memory/cards/memory-architecture.md +0 -0
  1396. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/memory/cards/memory-care-staleness.md +0 -0
  1397. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/memory/cards/memory-scanner.md +0 -0
  1398. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/memory/cards/multi-workspace-handoff-admin.md +0 -0
  1399. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/memory/cards/obsidian-notes.md +0 -0
  1400. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/memory/cards/pipeline-standups.md +0 -0
  1401. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/memory/cards/token-glace-output-compaction.md +0 -0
  1402. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/memory/cards/workspace-file-maintenance.md +0 -0
  1403. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/memory-care/runbooks/daily-care-pass.json +0 -0
  1404. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/memory-care/runbooks/ingest-sweep.json +0 -0
  1405. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/memory-care/runbooks/weekly-outcome-ratchet.json +0 -0
  1406. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/openclaw/README.md +0 -0
  1407. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/openclaw/acp-escalation.openclaw.json +0 -0
  1408. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/openclaw/memory-sweep-cron.openclaw.json +0 -0
  1409. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/openclaw/model-aliases.openclaw.json +0 -0
  1410. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/openclaw/ollama-memory-search.openclaw.json +0 -0
  1411. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/opencode/memory-handoffs/TEMPLATE.md +0 -0
  1412. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/openhands/memory-handoffs/TEMPLATE.md +0 -0
  1413. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/pi/extensions/brigade-mcp-bridge.js +0 -0
  1414. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/pi/memory-handoffs/TEMPLATE.md +0 -0
  1415. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/qwen/memory-handoffs/TEMPLATE.md +0 -0
  1416. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/repo/AGENTS.md +0 -0
  1417. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/repo/CLAUDE.md +0 -0
  1418. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/repo/INSTALL_FOR_AGENTS.md +0 -0
  1419. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/rosters/budget-open-weight.toml +0 -0
  1420. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/rosters/full-multi-lane.toml +0 -0
  1421. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/rosters/minimal-single-cli.toml +0 -0
  1422. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/rosters/review-heavy.toml +0 -0
  1423. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/scripts/backup-restic.sh +0 -0
  1424. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/brigade-work/CHANGELOG.md +0 -0
  1425. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/brigade-work/SKILL.md +0 -0
  1426. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/brigade-work/skill.json +0 -0
  1427. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/card-refresh/CHANGELOG.md +0 -0
  1428. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/card-refresh/SKILL.md +0 -0
  1429. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/card-refresh/skill.json +0 -0
  1430. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/forward-plan/CHANGELOG.md +0 -0
  1431. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/forward-plan/SKILL.md +0 -0
  1432. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/forward-plan/plan.template.json +0 -0
  1433. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/forward-plan/skill.json +0 -0
  1434. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/handoff-inbox-drain/CHANGELOG.md +0 -0
  1435. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/handoff-inbox-drain/SKILL.md +0 -0
  1436. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/handoff-inbox-drain/skill.json +0 -0
  1437. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/note/CHANGELOG.md +0 -0
  1438. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/note/SKILL.md +0 -0
  1439. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/note/skill.json +0 -0
  1440. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/ultra-work-scout/CHANGELOG.md +0 -0
  1441. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/ultra-work-scout/SKILL.md +0 -0
  1442. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/skills/ultra-work-scout/skill.json +0 -0
  1443. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/stations/managed-snapshot.json +0 -0
  1444. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/workspace/AGENTS.md +0 -0
  1445. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/workspace/CLAUDE.md +0 -0
  1446. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/workspace/HEARTBEAT.md +0 -0
  1447. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/workspace/IDENTITY.md +0 -0
  1448. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/workspace/INSTALL_FOR_AGENTS.md +0 -0
  1449. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/workspace/MEMORY.md +0 -0
  1450. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/workspace/SAFETY_RULES.md +0 -0
  1451. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/workspace/SOUL.md +0 -0
  1452. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/workspace/TOOLS.md +0 -0
  1453. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/workspace/USER.md +0 -0
  1454. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/workspace/rules/acceptance-driven-work.md +0 -0
  1455. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/templates/workspace/rules/issue-tdd-loop.md +0 -0
  1456. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tokens_cmd.py +0 -0
  1457. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/__init__.py +0 -0
  1458. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/calls.py +0 -0
  1459. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/catalog_health.py +0 -0
  1460. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/catalog_manage.py +0 -0
  1461. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/checkpoint_store.py +0 -0
  1462. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/checkpoints.py +0 -0
  1463. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/config.py +0 -0
  1464. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/constants.py +0 -0
  1465. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/helpers.py +0 -0
  1466. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/issues.py +0 -0
  1467. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/mcp.py +0 -0
  1468. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/packs.py +0 -0
  1469. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/paths.py +0 -0
  1470. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/projections.py +0 -0
  1471. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/runs.py +0 -0
  1472. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/runtimes.py +0 -0
  1473. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/safety.py +0 -0
  1474. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/tools_cmd/status.py +0 -0
  1475. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/trust_gate.py +0 -0
  1476. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/untrusted.py +0 -0
  1477. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/untrusted_cmd.py +0 -0
  1478. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/verification_contract.py +0 -0
  1479. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/verify_manifest.py +0 -0
  1480. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/verify_trial.py +0 -0
  1481. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/version_cmd.py +0 -0
  1482. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/__init__.py +0 -0
  1483. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/backup.py +0 -0
  1484. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/campaign.py +0 -0
  1485. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/claiming.py +0 -0
  1486. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/config.py +0 -0
  1487. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/constants.py +0 -0
  1488. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/edges.py +0 -0
  1489. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/helpers.py +0 -0
  1490. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/imports.py +0 -0
  1491. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/ledger/__init__.py +0 -0
  1492. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/ledger/descriptor_anchors.py +0 -0
  1493. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/ledger/locking.py +0 -0
  1494. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/ledger/queries_handoffs.py +0 -0
  1495. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/ledger/tasks_plans.py +0 -0
  1496. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/partition.py +0 -0
  1497. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/reviews.py +0 -0
  1498. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/session/__init__.py +0 -0
  1499. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/session/briefing.py +0 -0
  1500. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/session/fleet_routing.py +0 -0
  1501. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/session/lifecycle.py +0 -0
  1502. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/session/task_ops.py +0 -0
  1503. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/session_resume.py +0 -0
  1504. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/sweeps.py +0 -0
  1505. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/verify_ranking.py +0 -0
  1506. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_cmd/verify_scoreability.py +0 -0
  1507. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/work_run_archive.py +0 -0
  1508. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/worker_events.py +0 -0
  1509. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/worker_failure.py +0 -0
  1510. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/workflow_cmd.py +0 -0
  1511. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/worklore_brigade.py +0 -0
  1512. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/worklore_brigade_sync.py +0 -0
  1513. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/worklore_github.py +0 -0
  1514. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade/worklore_github_sync.py +0 -0
  1515. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade_cli.egg-info/dependency_links.txt +0 -0
  1516. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/src/brigade_cli.egg-info/top_level.txt +0 -0
  1517. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_aboyeur_facade.py +0 -0
  1518. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_aboyeur_orchestrator_health_routing.py +0 -0
  1519. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_aboyeur_run_io.py +0 -0
  1520. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_aboyeur_seat_health_probe.py +0 -0
  1521. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_aboyeur_status.py +0 -0
  1522. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_actionqueue.py +0 -0
  1523. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_add.py +0 -0
  1524. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_agent_skill_format.py +0 -0
  1525. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_agent_write_probes.py +0 -0
  1526. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_agents_oracle.py +0 -0
  1527. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_approval.py +0 -0
  1528. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_attestation_input_integration.py +0 -0
  1529. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_attestation_receipt.py +0 -0
  1530. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_authority_broker.py +0 -0
  1531. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_budgets.py +0 -0
  1532. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_candidate_set.py +0 -0
  1533. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_card_fingerprint.py +0 -0
  1534. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_causal_receipt.py +0 -0
  1535. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_center_actions_cmd.py +0 -0
  1536. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_center_page_load.py +0 -0
  1537. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_center_readiness_cmd.py +0 -0
  1538. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_center_report_cmd.py +0 -0
  1539. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_center_research_view.py +0 -0
  1540. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_ci_pytest_shard.py +0 -0
  1541. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_claude_cloud.py +0 -0
  1542. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_claude_hooks_envelope.py +0 -0
  1543. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_claude_hooks_stdin_bounds.py +0 -0
  1544. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_cli_help.py +0 -0
  1545. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_cli_inventory_contract.py +0 -0
  1546. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_cli_setup.py +0 -0
  1547. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_cli_update.py +0 -0
  1548. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_code_reference_schema.py +0 -0
  1549. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_codex_appserver_integration.py +0 -0
  1550. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_commit_linkage.py +0 -0
  1551. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_completions.py +0 -0
  1552. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_component_install.py +0 -0
  1553. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_component_manifest.py +0 -0
  1554. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_component_manifest_provenance.py +0 -0
  1555. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_component_report.py +0 -0
  1556. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_component_state.py +0 -0
  1557. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_config.py +0 -0
  1558. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_context_cmd.py +0 -0
  1559. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_context_learning_closeout_cmd.py +0 -0
  1560. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_cursor_cloud.py +0 -0
  1561. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_cursor_user_cmd.py +0 -0
  1562. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_dashboard_code_graph.py +0 -0
  1563. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_dashboard_handoffs.py +0 -0
  1564. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_dashboard_memory_operations.py +0 -0
  1565. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_direct_worker_finish_tree.py +0 -0
  1566. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_directory_authority_legacy_migration.py +0 -0
  1567. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_dogfood_cmd.py +0 -0
  1568. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_evidence_branded_surface.py +0 -0
  1569. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_evidence_cmd.py +0 -0
  1570. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_evidence_package.py +0 -0
  1571. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_evidence_runtime.py +0 -0
  1572. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_extras_gate.py +0 -0
  1573. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_fleet_action_dispatch_cmd.py +0 -0
  1574. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_fleet_hub_capacity.py +0 -0
  1575. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_fleet_hub_grokbot_expiry.py +0 -0
  1576. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_fleet_hub_policy.py +0 -0
  1577. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_fleet_model_inventory.py +0 -0
  1578. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_fleet_policy.py +0 -0
  1579. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_fleet_policy_api.py +0 -0
  1580. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_fleet_policy_api_context.py +0 -0
  1581. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_fleet_policy_cli.py +0 -0
  1582. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_fleet_policy_core_completion.py +0 -0
  1583. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_fleet_policy_delegation.py +0 -0
  1584. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_fleet_quota.py +0 -0
  1585. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_fleet_repo_policy_page.py +0 -0
  1586. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_fleet_t3_transport.py +0 -0
  1587. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_forward_plan_skill.py +0 -0
  1588. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_fragments.py +0 -0
  1589. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_friction_cmd.py +0 -0
  1590. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_generated_patch_quarantine.py +0 -0
  1591. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_gitignore.py +0 -0
  1592. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_graphtrail_delta.py +0 -0
  1593. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grok_hook_runtime.py +0 -0
  1594. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_backup_adapters.py +0 -0
  1595. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_backup_contracts.py +0 -0
  1596. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_backup_runtime.py +0 -0
  1597. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_build_feed.py +0 -0
  1598. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_findings_relay.py +0 -0
  1599. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_fleet_actions.py +0 -0
  1600. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_fleet_app.py +0 -0
  1601. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_fleet_contracts.py +0 -0
  1602. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_fleet_exec.py +0 -0
  1603. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_fleet_normalize.py +0 -0
  1604. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_fleet_probes.py +0 -0
  1605. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_fleet_registry.py +0 -0
  1606. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_fleet_remediation.py +0 -0
  1607. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_fleet_runtime_config.py +0 -0
  1608. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_fleet_tools.py +0 -0
  1609. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_n8n_actions.py +0 -0
  1610. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_n8n_client.py +0 -0
  1611. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_n8n_contracts.py +0 -0
  1612. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_n8n_runtime.py +0 -0
  1613. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_n8n_tools.py +0 -0
  1614. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_obsidian_adapters.py +0 -0
  1615. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_obsidian_capabilities.py +0 -0
  1616. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_obsidian_client.py +0 -0
  1617. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_obsidian_contracts.py +0 -0
  1618. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_obsidian_excalidraw_client.py +0 -0
  1619. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_obsidian_operator_install.py +0 -0
  1620. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_obsidian_operator_plugin.py +0 -0
  1621. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_obsidian_phase2.py +0 -0
  1622. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_obsidian_policy.py +0 -0
  1623. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_obsidian_runtime.py +0 -0
  1624. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_operations_relay.py +0 -0
  1625. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_pack_relay.py +0 -0
  1626. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_reconcile.py +0 -0
  1627. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_wazuh_contracts.py +0 -0
  1628. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_wazuh_normalize.py +0 -0
  1629. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_wazuh_policy.py +0 -0
  1630. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_grokbot_wazuh_tools.py +0 -0
  1631. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_handoff.py +0 -0
  1632. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_handoff_injection_lint.py +0 -0
  1633. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_handoff_readability.py +0 -0
  1634. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_init.py +0 -0
  1635. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_install.py +0 -0
  1636. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_issue266_benchmark.py +0 -0
  1637. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_issue266_work_status_memory.py +0 -0
  1638. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_issue362_code_evidence_facades.py +0 -0
  1639. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_ledger_facade.py +0 -0
  1640. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_managed.py +0 -0
  1641. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_managed_block.py +0 -0
  1642. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_managed_snapshot.py +0 -0
  1643. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_mcp_projection.py +0 -0
  1644. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_mcp_server.py +0 -0
  1645. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_mcp_user_scope.py +0 -0
  1646. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_memory_care_skills.py +0 -0
  1647. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_memory_identity_audit.py +0 -0
  1648. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_memory_inventory_cmd.py +0 -0
  1649. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_memory_search_mcp.py +0 -0
  1650. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_memory_topology_cmd.py +0 -0
  1651. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_memory_vault_propose.py +0 -0
  1652. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_memory_vault_search.py +0 -0
  1653. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_message_envelope.py +0 -0
  1654. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_model_scorecard.py +0 -0
  1655. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_model_trials.py +0 -0
  1656. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_model_trials_adversarial_fixtures.py +0 -0
  1657. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_mypy_override_ratchet.py +0 -0
  1658. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_neutrality.py +0 -0
  1659. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_node.py +0 -0
  1660. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_notifications_cmd.py +0 -0
  1661. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_outcome_repair.py +0 -0
  1662. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_pantry_cmd.py +0 -0
  1663. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_pantry_compat.py +0 -0
  1664. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_parity_backlog.py +0 -0
  1665. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_phase257_facades.py +0 -0
  1666. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_phase_ledger_session_cmd.py +0 -0
  1667. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_phases_cmd_facade.py +0 -0
  1668. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_privacy_regression.py +0 -0
  1669. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_profiles.py +0 -0
  1670. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_projection_cli.py +0 -0
  1671. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_projection_conformance.py +0 -0
  1672. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_prompt.py +0 -0
  1673. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_provenance_envelope.py +0 -0
  1674. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_read_only_enforcement.py +0 -0
  1675. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_readme_brand_header.py +0 -0
  1676. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_receipts_cmd.py +0 -0
  1677. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_receipts_trailer.py +0 -0
  1678. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_reconfigure.py +0 -0
  1679. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_registry.py +0 -0
  1680. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_release_checklist.py +0 -0
  1681. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_release_ci_health_cmd.py +0 -0
  1682. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_release_cmd.py +0 -0
  1683. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_release_manifest_generator.py +0 -0
  1684. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_release_metadata.py +0 -0
  1685. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_release_readiness_hygiene_cmd.py +0 -0
  1686. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_release_reconcile_evidence_cmd.py +0 -0
  1687. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_release_smoke_health_cmd.py +0 -0
  1688. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_release_train_evidence_cmd.py +0 -0
  1689. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_release_version_guard.py +0 -0
  1690. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_release_version_sync.py +0 -0
  1691. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_release_waivers_manifest_cmd.py +0 -0
  1692. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_repeat_watch_approval_runner.py +0 -0
  1693. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_report_review_closeout_cmd.py +0 -0
  1694. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_reportstore.py +0 -0
  1695. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_repos_actions_cmd.py +0 -0
  1696. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_repos_cmd.py +0 -0
  1697. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_repos_cmd_facade.py +0 -0
  1698. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_repos_friction_cmd.py +0 -0
  1699. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_repos_release_train_cmd.py +0 -0
  1700. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_repos_sweep_health_cmd.py +0 -0
  1701. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_research_browser_ai.py +0 -0
  1702. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_research_claim_audit.py +0 -0
  1703. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_research_cli_sources.py +0 -0
  1704. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_research_cmd.py +0 -0
  1705. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_research_config.py +0 -0
  1706. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_research_engine.py +0 -0
  1707. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_research_extract.py +0 -0
  1708. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_research_finding_envelope.py +0 -0
  1709. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_research_handoff.py +0 -0
  1710. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_research_llm.py +0 -0
  1711. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_research_local_sources.py +0 -0
  1712. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_research_provenance.py +0 -0
  1713. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_research_registry.py +0 -0
  1714. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_research_report.py +0 -0
  1715. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_research_review_regressions.py +0 -0
  1716. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_research_types.py +0 -0
  1717. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_research_web.py +0 -0
  1718. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_result_integrity.py +0 -0
  1719. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_roadmap_cmd.py +0 -0
  1720. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_roadmap_inventory_cmd.py +0 -0
  1721. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_route_policy.py +0 -0
  1722. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_route_receipts.py +0 -0
  1723. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_router.py +0 -0
  1724. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_router_properties.py +0 -0
  1725. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_run_audit.py +0 -0
  1726. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_run_control.py +0 -0
  1727. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_run_dirfd.py +0 -0
  1728. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_run_event_cursor.py +0 -0
  1729. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_run_events.py +0 -0
  1730. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_run_journal_measurement.py +0 -0
  1731. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_run_projector.py +0 -0
  1732. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_run_reap.py +0 -0
  1733. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_run_redaction.py +0 -0
  1734. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_run_seat.py +0 -0
  1735. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_run_shadow.py +0 -0
  1736. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_run_transport_dag.py +0 -0
  1737. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_run_transport_env.py +0 -0
  1738. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_run_transport_failfast.py +0 -0
  1739. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_run_transport_recovery.py +0 -0
  1740. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_run_worktree.py +0 -0
  1741. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_runbook_cmd.py +0 -0
  1742. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_runbook_import.py +0 -0
  1743. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_runguard_wait.py +0 -0
  1744. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_runs_cmd.py +0 -0
  1745. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_runs_diff.py +0 -0
  1746. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_runs_json_contracts.py +0 -0
  1747. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_runs_watch.py +0 -0
  1748. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_scorecard_reconcile.py +0 -0
  1749. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_scrub.py +0 -0
  1750. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_search_cmd.py +0 -0
  1751. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_seat_health_policy.py +0 -0
  1752. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_security_cmd.py +0 -0
  1753. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_security_diff.py +0 -0
  1754. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_security_template_audit_cmd.py +0 -0
  1755. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_selection.py +0 -0
  1756. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_size_ratchet_baseline.py +0 -0
  1757. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_skill_obligations_audit.py +0 -0
  1758. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_skill_templates_metadata.py +0 -0
  1759. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_skills_cmd_facade.py +0 -0
  1760. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_station.py +0 -0
  1761. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_station_manifest.py +0 -0
  1762. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_stations_discover.py +0 -0
  1763. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_stations_verify.py +0 -0
  1764. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_subprocess_guards.py +0 -0
  1765. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_surface_aware_install.py +0 -0
  1766. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_telemetry_export.py +0 -0
  1767. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_test_fixture_contract.py +0 -0
  1768. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_thread_sync.py +0 -0
  1769. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_tokens_cmd.py +0 -0
  1770. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_tool_output_compaction.py +0 -0
  1771. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_tools_cmd_facade.py +0 -0
  1772. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_trust_capability.py +0 -0
  1773. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_untrusted.py +0 -0
  1774. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_untrusted_cmd.py +0 -0
  1775. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_verification_contract.py +0 -0
  1776. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_verify_manifest_tracked.py +0 -0
  1777. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_verify_trial.py +0 -0
  1778. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_version_sync_script.py +0 -0
  1779. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_waiver_policy_health_cmd.py +0 -0
  1780. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_work_cmd_backup.py +0 -0
  1781. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_work_cmd_campaign.py +0 -0
  1782. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_work_cmd_claim.py +0 -0
  1783. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_work_cmd_dispatch_annotations.py +0 -0
  1784. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_work_cmd_edges.py +0 -0
  1785. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_work_cmd_facade.py +0 -0
  1786. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_work_cmd_ledger.py +0 -0
  1787. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_work_cmd_ledger_integrity.py +0 -0
  1788. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_work_cmd_partition.py +0 -0
  1789. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_work_cmd_reviews.py +0 -0
  1790. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_work_cmd_verify_ranking.py +0 -0
  1791. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_work_cmd_work_graph_hardening.py +0 -0
  1792. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_work_run_archive.py +0 -0
  1793. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_work_store_measurement.py +0 -0
  1794. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_worker_events.py +0 -0
  1795. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_worker_failure.py +0 -0
  1796. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_workflow_cmd.py +0 -0
  1797. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_worklore_brigade.py +0 -0
  1798. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_worklore_github.py +0 -0
  1799. {brigade_cli-0.27.0 → brigade_cli-0.29.0}/tests/test_worklore_http.py +0 -0
@@ -0,0 +1,164 @@
1
+ Metadata-Version: 2.4
2
+ Name: brigade-cli
3
+ Version: 0.29.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
+ Brigade keeps coding-agent work trackable across tools, repos, and sessions: tasks, receipts, shared memory, and synced 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/pypi/dm/brigade-cli.svg?size=xs" alt="PyPI 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
+ Published **v0.28.0** is the stable install (`brigade-cli==0.28.0`). It hardens fleet claims with claim-loss cancellation, generation fences that reject stale claim holders and operations, and bounded Fleet Hub requests, keeps hook session state inside validated directories, and adds the dot connector pack. v0.27.0 added per-repo parallel-safe work waves, cross-repo ready-work campaigns, Memory Operations, an optional fleet hub, care-managed memory jobs, cloud seats with receipts, vault projection, run lineage, code-graph views, bounded recall, declared budgets, and a machine-readable control crosswalk. Main is now the **0.29 beta** line.
76
+
77
+ ## What it does
78
+
79
+ - **Ready work and claim safety.** Brigade lists unblocked tasks and uses atomic claims so two agents cannot take the same item.
80
+ - **Declared run limits, optional fleet hub, and registered cloud activity.** Brigade enforces declared wall-clock and worker-dispatch ceilings, records named retry and reroute decisions, can report runs, repo claims, and external harness sessions through an operator-owned fleet hub, and reconciles registered cloud work against provider and GitHub state.
81
+ - **Verification receipts.** A check run through Brigade writes the command, the real exit code, and the Git state. Not every Brigade command writes a receipt.
82
+ - **Owner-mediated handoffs and bounded recall.** Handoffs are linted and routed by the memory owner. Safe targeted notes may auto-file, while ambiguous or risky notes wait for review. Session-start recall is capped, and vault project, search, and propose are bounded.
83
+ - **Explicit dry-run-first harness projection.** MCP servers, tools, and skills are previewed before Brigade writes them into a harness.
84
+
85
+ Learning in Brigade is outcome-based skill scoring, promotion, and rollback from captured verification receipts. It is not autonomous reflective memory learning.
86
+
87
+ ## Install
88
+
89
+ Install with `pipx install brigade-cli` or `uv tool install brigade-cli`, then follow the [install guide](https://brigade.tools/docs/getting-started/install), [QUICKSTART.md](QUICKSTART.md), or give [first 10 minutes](docs/first-10-minutes.md) and [docs/agents-guide.md](docs/agents-guide.md) to your coding agent.
90
+
91
+ Stable channel: published v0.28.0. Preview channel: `brigade update --channel beta` for `0.29.0.devYYYYMMDD` wheels. Details: [update channels](docs/update-channels.md).
92
+
93
+ ## How it compares
94
+
95
+ Brigade overlaps several categories. Most adjacent projects specialize in one layer. Brigade connects those layers around trackable coding-agent work. Where a neighbor is stronger, that cell says so. Dated sources and longer notes: [docs/comparison.md](docs/comparison.md) (2026-08-27).
96
+
97
+ Comparison 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
98
+
99
+ ### Work and orchestration
100
+
101
+ | Project | Ready work | Claim safety | Parallel and run control | Task-store boundary | Verification |
102
+ | --- | --- | --- | --- | --- | --- |
103
+ | [Brigade](https://github.com/escoffier-labs/brigade) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Stable ready set | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Fail-closed local CAS. 0.27: optional hub claims | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> 0.27: per-repo waves, campaign-composed waves, declared limits, named retry/reroute, fleet board | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Local JSON ledger. Optional hub for events/claims, not a task DB | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Command receipts |
104
+ | [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 |
105
+ | [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"> Operational state |
106
+ | [nWave](https://github.com/nWave-ai/nWave) | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Wave artifacts | <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"> 7 reviewed phases + TDD gates | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Git-tracked artifacts | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Phase validation |
107
+ | [ActiveGraph](https://github.com/yoheinakajima/activegraph) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Reactive graph | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Application-defined | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Behaviors + runs | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Append-only event log | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Replay, fork, and diff |
108
+
109
+ ### Memory
110
+
111
+ | Project | Durable memory | Capture and recall | Care and operations | Learning | Provenance |
112
+ | --- | --- | --- | --- | --- | --- |
113
+ | [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"> Handoffs. 0.27: bounded recall | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Owner policy. 0.27: Memory Operations, vault project/search/propose | <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 |
114
+ | [Mem0 / OpenMemory](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"> Automatic + 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 |
115
+ | [Letta](https://github.com/letta-ai/letta) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Agent state + blocks | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Agent-managed tools | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Editable state | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Persistent agent runtime | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Persistent agent state |
116
+ | [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"> Lifecycle + decay | <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"> Searchable memory |
117
+ | [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 |
118
+ | [Built-in harness memory](https://code.claude.com/docs/en/memory) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Tool-specific | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Rules + auto memories | <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 |
119
+ | [OpenClaw](https://docs.openclaw.ai/concepts/memory) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Plain files + index | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Keyword + optional vector search | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> File-owned memory | <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"> Files + source paths |
120
+
121
+ ### Tools and configuration
122
+
123
+ | Project | MCP | Reviewed rules and skills | Projection behavior | Source of truth | Audit and rollback |
124
+ | --- | --- | --- | --- | --- | --- |
125
+ | [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 + adapters | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Dry-run-first, then apply | <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 + rollback |
126
+ | [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"> Registry + native files | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Warnings for dropped fields |
127
+ | [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 | <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 |
128
+ | [config-sync](https://pypi.org/project/aiconfigsync/) | <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"> Rules for 12 tools | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Generated rule files | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Single config | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Generated outputs |
129
+ | [chezmoi](https://www.chezmoi.io/) | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> As files | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> As files | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Templates + apply | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Git-backed source dir | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Diff + templates + merge |
130
+ | [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 + commands | <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 |
131
+
132
+ ### Evidence and operations
133
+
134
+ | Project | Receipts | Code impact | Agent activity | Cloud state | Learning / replay |
135
+ | --- | --- | --- | --- | --- | --- |
136
+ | [Brigade](https://github.com/escoffier-labs/brigade) | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Command + Git + optional impact | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Stable impact. 0.27: code-graph views + blast radius | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> 0.27: center activity + fleet board + external harness sessions | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> 0.27: registered cloud status + approved Grok Bot scout feed | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Score + promote + rollback. 0.27: run child/diff/resume |
137
+ | [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-partial.svg" width="10" height="10" alt="Partial"> Replay, fork, and diff |
138
+ | [CocoIndex](https://github.com/cocoindex-io/cocoindex) | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Data lineage | <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"> Incremental recompute |
139
+ | [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 |
140
+ | [Hindsight](https://github.com/vectorize-io/hindsight) | <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-undocumented.svg" width="10" height="10" alt="Not documented"> Not documented | <img src="docs/assets/status-supported.svg" width="10" height="10" alt="Supported"> Reflective memory learning |
141
+ | [Neo4j Agent Memory](https://github.com/neo4j-labs/agent-memory) | <img src="docs/assets/status-partial.svg" width="10" height="10" alt="Partial"> Reasoning + tool traces | <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"> Similar-task retrieval |
142
+
143
+ "Not documented" means the capability was not found in the project's official README or documentation on the dated source pass. Brigade cells were re-checked on 2026-08-27. Beads and Gas Town stay on the 2026-08-26 pass. Other neighbor cells stay on the 2026-08-13 pass. An event trace, memory history, data lineage, and a command verification receipt answer different questions.
144
+
145
+ ## Scope
146
+
147
+ Brigade is a local file-first control plane for coding agents. Nothing runs until a command or an operator-owned scheduler starts it. Optional serve commands (`brigade center serve`, `brigade runs serve`, `brigade fleet serve`) stay in the foreground until you stop them. Scheduling stays external, except optional operator-owned, target-scoped care registrations (`brigade care install`). The work ledger is machine-local JSON and is not a distributed task database. An optional fleet hub aggregates run events and arbitrates repo claims. The fleet board can show external harness sessions. Local journals stay authoritative. An approved Grok Bot scout feed enqueues labeled GitHub issues only after `--apply`. Ordinary runs have no hard run-budget unless one is declared. When declared, only wall-clock and worker-dispatch ceilings are enforced today. Model, tool, token, and cost dimensions stay observed unless an adapter owns an enforcement boundary. Campaigns aggregate ready work across repos and compose parallel-safe waves at query time from each member's per-repo partition. Center and the fleet board are read-only. External activity observations are best-effort. Cloud registry commands track work that another provider runs. Safe targeted handoffs may auto-file under owner policy. Ambiguous or risky notes wait for review.
148
+
149
+ Brigade is not a hosted memory service, automatic release bot, or full autonomous fleet runtime. It does not push to GitHub, publish packages, or send chat messages unless the operator uses an explicit send action. Name collisions: this is `brigade-cli` from [escoffier-labs/brigade](https://github.com/escoffier-labs/brigade), not the archived CNCF/Microsoft Kubernetes Brigade, Spinabot Brigade, or the 2017 Python package that became Nornir.
150
+
151
+ ## Docs
152
+
153
+ - [First 10 minutes](docs/first-10-minutes.md) · [Overview](docs/overview.md) · [Technical guide](docs/technical-guide.md) · [Comparison](docs/comparison.md)
154
+ - [Execution model](docs/execution-model.md) · [Work closeout](docs/work-closeout.md) · [Outcome scoring](docs/outcome-scoring.md)
155
+ - [Memory care](docs/memory-care.md) · [Memory operations](docs/memory-operations.md) · [Code intelligence](docs/code-intelligence.md) · [MCP sync](docs/mcp-sync.md)
156
+ - [Agents guide](docs/agents-guide.md) · [Agent-assisted setup](docs/agent-assisted-setup.md) · [README coverage](docs/readme-coverage.md)
157
+ - [Runbooks](docs/runbooks/README.md) · [Fleet hub on a Proxmox LXC](docs/runbooks/fleet-hub-proxmox.md)
158
+ - [Security](docs/security.md) · [Command inventory](docs/command-inventory.md) · [Contributing](CONTRIBUTING.md) · [Roadmap](ROADMAP.md)
159
+
160
+ ## License
161
+
162
+ MIT. See [LICENSE](LICENSE).
163
+
164
+ 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/), command `brigade`.
@@ -0,0 +1,342 @@
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 with Python 3.10 or newer. Install `pipx` with the package manager for your OS, then install Brigade.
8
+
9
+ ### Linux
10
+
11
+ 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`:
12
+
13
+ ```bash
14
+ # Ubuntu or Debian
15
+ sudo apt update
16
+ sudo apt install pipx
17
+
18
+ # Fedora
19
+ sudo dnf install pipx
20
+
21
+ pipx ensurepath
22
+ ```
23
+
24
+ #### Arch Linux and Omarchy
25
+
26
+ On Arch Linux, install [the `python-pipx` package](https://archlinux.org/packages/extra/any/python-pipx/):
27
+
28
+ ```bash
29
+ sudo pacman -Syu --needed python-pipx
30
+ pipx ensurepath
31
+ ```
32
+
33
+ This Arch command performs a full system upgrade and installs `pipx`.
34
+
35
+ On Omarchy, use its [package command](https://omarchy.org/manual/other-packages/):
36
+
37
+ ```bash
38
+ omarchy pkg add python-pipx
39
+ pipx ensurepath
40
+ ```
41
+
42
+ Use `omarchy update` for [Omarchy system updates](https://omarchy.org/manual/updates/) so its snapshots, migrations, and configuration updates run with the package upgrade.
43
+
44
+ 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.
45
+
46
+ After an Arch upgrade replaces Python with a new minor version, an existing pipx environment may need rebuilding:
47
+
48
+ ```bash
49
+ pipx reinstall brigade-cli
50
+ brigade --version
51
+ ```
52
+
53
+ 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.
54
+
55
+ ### macOS
56
+
57
+ ```bash
58
+ brew install pipx
59
+ pipx ensurepath
60
+ ```
61
+
62
+ ### Windows PowerShell
63
+
64
+ ```powershell
65
+ scoop install pipx
66
+ pipx ensurepath
67
+ ```
68
+
69
+ Without Scoop, use Python's Windows launcher:
70
+
71
+ ```powershell
72
+ py -m pip install --user pipx
73
+ # Run pipx.exe ensurepath from the directory printed by pip if it is not on PATH yet.
74
+ ```
75
+
76
+ Open a new terminal after `pipx ensurepath`, then continue on any OS:
77
+
78
+ ```bash
79
+ pipx install brigade-cli
80
+ brigade setup
81
+ ```
82
+
83
+ If you already use uv, install the same package with:
84
+
85
+ ```bash
86
+ uv tool install brigade-cli
87
+ brigade setup
88
+ ```
89
+
90
+ For an intentional Brigade development machine on the `0.29` preview line:
91
+
92
+ ```bash
93
+ brigade update --channel beta
94
+ ```
95
+
96
+ Rollback to stable:
97
+
98
+ ```bash
99
+ brigade update --channel stable --switch-channel
100
+ ```
101
+
102
+ ## First install
103
+
104
+ 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:
105
+
106
+ ```bash
107
+ # Code repo with Codex as the writer
108
+ brigade operator quickstart --target ./my-repo --harnesses codex
109
+
110
+ # OpenClaw or Hermes workspace instead of a code repo
111
+ brigade operator quickstart --target ~/agent-workspace --depth workspace --harnesses openclaw,hermes --owner openclaw
112
+ ```
113
+
114
+ Pass `--dry-run` first to preview the planned steps without writing anything.
115
+
116
+ PowerShell uses Windows path spelling when you provide a path explicitly:
117
+
118
+ ```powershell
119
+ brigade operator quickstart --target .\my-repo --harnesses codex
120
+ brigade operator doctor --target .\my-repo --profile local-operator
121
+ ```
122
+
123
+ 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.
124
+
125
+ 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:
126
+
127
+ ```bash
128
+ $ brigade init --target ~/agent-kitchen
129
+
130
+ Which harnesses do you use? (type numbers separated by space/comma to toggle, enter to confirm)
131
+ [x] 1. Claude Code
132
+ [ ] 2. Codex
133
+ [ ] 3. OpenCode
134
+ [ ] 4. Antigravity
135
+ [ ] 5. Pi
136
+ [ ] 6. Cursor
137
+ [ ] 7. Aider
138
+ [ ] 8. Goose
139
+ [ ] 9. Continue
140
+ [ ] 10. GitHub Copilot CLI
141
+ [ ] 11. Qwen Code
142
+ [ ] 12. Kimi Code
143
+ [ ] 13. AdaL
144
+ [ ] 14. OpenHands
145
+ [ ] 15. Grok CLI
146
+ [ ] 16. Amp
147
+ [ ] 17. Crush
148
+ [ ] 18. OpenClaw
149
+ [ ] 19. Hermes
150
+
151
+ Depth? (type a number, enter for default)
152
+ * 1. repo (handoff flow + publish guard)
153
+ 2. workspace (full home: MEMORY.md, TOOLS.md, USER.md, ...)
154
+
155
+ Add-ons? (type numbers separated by space/comma to toggle, enter to confirm)
156
+ [ ] 1. publisher (content-guard policies for blog/social/docs)
157
+ ```
158
+
159
+ Defaults are claude harness, repo depth, no includes. Enter ships the install.
160
+
161
+ ## CI / scripted install
162
+
163
+ Pass flags directly to skip the prompt. The same flags work on `operator quickstart`:
164
+
165
+ ```bash
166
+ # Claude Code + Codex + OpenClaw, full workspace
167
+ brigade operator quickstart --target ~/agent-kitchen \
168
+ --depth workspace \
169
+ --harnesses claude,codex,openclaw
170
+
171
+ # Codex-only project, minimal install
172
+ brigade operator quickstart --target ./my-project --depth repo --harnesses codex
173
+
174
+ # Template files only, no harness-specific files
175
+ brigade init --target ./my-project --harnesses none
176
+ ```
177
+
178
+ ## Verifying
179
+
180
+ After install, check the operator profile:
181
+
182
+ ```bash
183
+ brigade operator doctor --target <path> --profile local-operator
184
+ ```
185
+
186
+ For the file-by-file view, `brigade doctor --target <path>` reports the apparent harness shape and checks every configured inbox and adapter:
187
+
188
+ ```
189
+ brigade doctor: target /home/you/agent-kitchen
190
+ harnesses: claude, codex, openclaw (owner=openclaw, depth=workspace)
191
+ [ok] bootstrap: AGENTS.md /home/you/agent-kitchen/AGENTS.md
192
+ [ok] handoff: claude inbox /home/you/agent-kitchen/.claude/memory-handoffs
193
+ [ok] handoff: codex inbox /home/you/agent-kitchen/.codex/memory-handoffs
194
+ [ok] openclaw: config /home/you/.openclaw/openclaw.json
195
+ ...
196
+ ```
197
+
198
+ A `[fail]` line means the install is incomplete; `[warn]` is informational; `[todo]` means the check needs your attention.
199
+
200
+ ## Reconfiguring
201
+
202
+ To change which harnesses are installed on an existing target:
203
+
204
+ ```bash
205
+ # Add a harness
206
+ brigade reconfigure --target . --harnesses claude,codex
207
+
208
+ # Drop one (without removing its files)
209
+ brigade reconfigure --target . --harnesses claude
210
+
211
+ # Drop one and remove its files
212
+ brigade reconfigure --target . --harnesses claude --prune
213
+ ```
214
+
215
+ ## The handoff flow
216
+
217
+ 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.
218
+
219
+ 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.
220
+
221
+ 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.
222
+
223
+ ## Your daily loop
224
+
225
+ 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:
226
+
227
+ ```bash
228
+ brigade work brief --target . # 1. what's pending (and whether the loop is being fed)
229
+ brigade work verify run --target . --command "pytest -q" --capture <skill-or-card> # 2. verify + capture in one step
230
+ # 3. write a Memory Handoff for anything durable; the ratchet (outcome reconcile) runs hands-off on your cron
231
+ ```
232
+
233
+ 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.
234
+
235
+ 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.
236
+
237
+ ## Optional: close the GraphTrail ↔ Brigade ↔ MiseLedger loop
238
+
239
+ 0.21.0 already ships receipt deltas, MiseLedger export, evidence briefs, and context evals. Productizing them is a short dogfood path:
240
+
241
+ ```bash
242
+ # optional stations (fail-open everywhere if absent)
243
+ brigade setup # run once: verified GraphTrail, graphtrail-mcp, MiseLedger, and SessionFind
244
+ brigade code sync . # explicitly runs local GraphTrail and builds .graphtrail/graphtrail.db
245
+ brigade code context "auth receipt flow"
246
+ brigade code impact brigade.work.verify.run
247
+
248
+ # evidence station CLI: explicit local operations
249
+ brigade evidence crawl sessions
250
+ brigade evidence search "auth receipt flow"
251
+ brigade evidence crawl plan # review-only miseledger init + crawl commands
252
+ brigade evidence doctor
253
+ brigade evidence export plan # review-only receipts export path
254
+
255
+ # one operator glance: doctors + graph ok / ledger ok / last brief hit rate
256
+ brigade operator checkup --target .
257
+
258
+ # after real work flows through verify/run + capture:
259
+ brigade receipts export miseledger --target . --new-only --import
260
+ brigade outcome rank --target . # surfaces brief_hit as a skill quality signal
261
+ # next brigade run attaches a capped MiseLedger evidence brief automatically
262
+ ```
263
+
264
+ 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.
265
+
266
+ 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.
267
+
268
+ ## Optional: multi-machine pantry (Agent Pantry)
269
+
270
+ 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.
271
+
272
+ ```bash
273
+ brigade extras on # enables pantry and notifications below
274
+ brigade add pantry # go install agentpantry
275
+ brigade pantry setup plan --role sink --peer 127.0.0.1:8787 # agent host
276
+ brigade pantry setup plan --role source --peer <sink>:8787 # daily driver
277
+ # run the printed agentpantry init/keygen/source|sink commands yourself
278
+ brigade pantry doctor
279
+ brigade pantry expiry-alert # preview near-expiry cookies
280
+ # optional notify path:
281
+ brigade add notifications
282
+ brigade pantry expiry-alert --send
283
+ ```
284
+
285
+ `brigade pantry status` and `doctor` always print a `next:` block so the path stays obvious after install.
286
+
287
+ ## Optional: search and tokens stations
288
+
289
+ ```bash
290
+ # GraphTrail is installed by `brigade setup`; use its facade commands.
291
+ brigade code sync . # preferred GraphTrail facade
292
+ brigade code context "auth receipt flow"
293
+ brigade code impact brigade.work.verify.run
294
+ # `brigade search sync|context|impact` remain compatibility aliases.
295
+ brigade search sync plan # review-only; does not run GraphTrail
296
+ brigade search doctor
297
+
298
+ # Token Glace (output compaction; TokenJuice was the old name) + optional usage export
299
+ brigade add tokens
300
+ brigade tokens wire plan
301
+ brigade tokens doctor
302
+ ```
303
+
304
+ ## Optional: discover external station catalogs
305
+
306
+ Sidecars can ship a `station.json` (`schema: brigade.station.v1`). Discover them locally without folding them into the core:
307
+
308
+ ```bash
309
+ brigade stations list
310
+ brigade stations discover --root ~/repos
311
+ brigade stations verify /path/to/sidecar # read-only conformance from an explicit local path
312
+ brigade stations verify /path/to/sidecar --json # bounded result; no raw child output
313
+ brigade add /path/to/sidecar --install # runs printed install args after review
314
+ ```
315
+
316
+ `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.
317
+
318
+ ## Optional: operator notifications (extras)
319
+
320
+ `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.
321
+
322
+ ```bash
323
+ brigade extras on
324
+ brigade add notifications
325
+ brigade notifications status
326
+ brigade notifications setup plan --profile operator
327
+ # Brigade never sends from doctor/status; secrets stay in env vars referenced by config.toml
328
+ ```
329
+
330
+ ## Extras honesty
331
+
332
+ `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.
333
+
334
+ ## Next steps
335
+
336
+ - Read [the cookbook](https://github.com/escoffier-labs/solos-cookbook) for the deep version of every concept here.
337
+ - Customize `USER.md` and `TOOLS.md` with your real preferences and runbooks (kept private; do not commit personal details).
338
+ - Wire the ingester on a cron or a manual end-of-day workflow.
339
+ - Add a memory-care staleness scan when your card set starts to matter. See [docs/memory-care.md](docs/memory-care.md).
340
+ - 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).
341
+ - 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.
342
+ - Wire Grok as a writer harness with `--harnesses ...,grok` so handoffs land in `.grok/memory-handoffs/` (first-class, same as Claude/Codex).