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