brigade-cli 0.26.1__tar.gz → 0.27.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 (1566) hide show
  1. brigade_cli-0.27.0/PKG-INFO +163 -0
  2. brigade_cli-0.27.0/QUICKSTART.md +310 -0
  3. brigade_cli-0.27.0/README.md +115 -0
  4. brigade_cli-0.27.0/THIRD_PARTY_NOTICES.md +98 -0
  5. brigade_cli-0.27.0/pyproject.toml +113 -0
  6. brigade_cli-0.27.0/src/brigade/__init__.py +3 -0
  7. brigade_cli-0.27.0/src/brigade/aboyeur/__init__.py +433 -0
  8. brigade_cli-0.27.0/src/brigade/aboyeur/artifacts.py +988 -0
  9. brigade_cli-0.27.0/src/brigade/aboyeur/briefs.py +469 -0
  10. brigade_cli-0.27.0/src/brigade/aboyeur/direct_worker_finish.py +253 -0
  11. brigade_cli-0.27.0/src/brigade/aboyeur/model_admission.py +127 -0
  12. brigade_cli-0.27.0/src/brigade/aboyeur/orchestrator.py +1974 -0
  13. brigade_cli-0.27.0/src/brigade/aboyeur/planning.py +1280 -0
  14. brigade_cli-0.27.0/src/brigade/aboyeur/prompts.py +534 -0
  15. brigade_cli-0.27.0/src/brigade/aboyeur/run_io.py +708 -0
  16. brigade_cli-0.27.0/src/brigade/aboyeur_artifacts.py +238 -0
  17. brigade_cli-0.27.0/src/brigade/aboyeur_model_policy.py +565 -0
  18. brigade_cli-0.27.0/src/brigade/acpx_adapter.py +667 -0
  19. brigade_cli-0.27.0/src/brigade/agent_change.py +725 -0
  20. brigade_cli-0.27.0/src/brigade/agent_change_refs.py +302 -0
  21. brigade_cli-0.27.0/src/brigade/agent_change_verify.py +780 -0
  22. brigade_cli-0.27.0/src/brigade/agent_request.py +178 -0
  23. brigade_cli-0.27.0/src/brigade/agents.py +1868 -0
  24. brigade_cli-0.27.0/src/brigade/approval.py +1123 -0
  25. brigade_cli-0.27.0/src/brigade/approval_v2.py +663 -0
  26. brigade_cli-0.27.0/src/brigade/assets/fleet_hub/apple-touch-icon.png +0 -0
  27. brigade_cli-0.27.0/src/brigade/assets/fleet_hub/favicon-32x32.png +0 -0
  28. brigade_cli-0.27.0/src/brigade/assets/fleet_hub/favicon.ico +0 -0
  29. brigade_cli-0.27.0/src/brigade/assets/fleet_hub/icon-192.png +0 -0
  30. brigade_cli-0.27.0/src/brigade/assets/fleet_hub/icon-512.png +0 -0
  31. brigade_cli-0.27.0/src/brigade/assets/fleet_hub/site.webmanifest +22 -0
  32. brigade_cli-0.27.0/src/brigade/attestation.py +868 -0
  33. brigade_cli-0.27.0/src/brigade/attestation_cmd.py +161 -0
  34. brigade_cli-0.27.0/src/brigade/attestation_input.py +324 -0
  35. brigade_cli-0.27.0/src/brigade/attestation_receipt.py +154 -0
  36. brigade_cli-0.27.0/src/brigade/authority_broker.py +259 -0
  37. brigade_cli-0.27.0/src/brigade/authority_key.py +422 -0
  38. brigade_cli-0.27.0/src/brigade/authority_marker.py +616 -0
  39. brigade_cli-0.27.0/src/brigade/brief_sections.py +183 -0
  40. brigade_cli-0.27.0/src/brigade/candidate_set.py +406 -0
  41. brigade_cli-0.27.0/src/brigade/card_fingerprint.py +516 -0
  42. brigade_cli-0.27.0/src/brigade/card_identity.py +171 -0
  43. brigade_cli-0.27.0/src/brigade/care_cmd.py +2083 -0
  44. brigade_cli-0.27.0/src/brigade/care_schedules.py +325 -0
  45. brigade_cli-0.27.0/src/brigade/causal_receipt.py +752 -0
  46. brigade_cli-0.27.0/src/brigade/center_cmd/actions.py +544 -0
  47. brigade_cli-0.27.0/src/brigade/center_cmd/agent_activity.py +694 -0
  48. brigade_cli-0.27.0/src/brigade/center_cmd/core.py +1019 -0
  49. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/__init__.py +1 -0
  50. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/data.py +112 -0
  51. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/render.py +188 -0
  52. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/snapshot.py +116 -0
  53. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/timing.py +88 -0
  54. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/__init__.py +76 -0
  55. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/agent_activity.py +646 -0
  56. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/code_graph.py +1456 -0
  57. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/handoff_inbox.py +107 -0
  58. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/memory_operations.py +1822 -0
  59. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/outcome_rank.py +92 -0
  60. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/research.py +854 -0
  61. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/run_timeline.py +369 -0
  62. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/status_grid.py +354 -0
  63. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/views/work.py +641 -0
  64. brigade_cli-0.27.0/src/brigade/center_cmd/dashboard/work_graph.py +277 -0
  65. brigade_cli-0.27.0/src/brigade/center_cmd/readiness.py +544 -0
  66. brigade_cli-0.27.0/src/brigade/center_cmd/report_review_ops.py +411 -0
  67. brigade_cli-0.27.0/src/brigade/center_cmd/reports.py +887 -0
  68. brigade_cli-0.27.0/src/brigade/center_cmd/schema_ops.py +601 -0
  69. brigade_cli-0.27.0/src/brigade/center_cmd/serve.py +373 -0
  70. brigade_cli-0.27.0/src/brigade/chat_cmd.py +809 -0
  71. brigade_cli-0.27.0/src/brigade/claude_cloud.py +88 -0
  72. brigade_cli-0.27.0/src/brigade/claude_hooks/classify.py +129 -0
  73. brigade_cli-0.27.0/src/brigade/claude_hooks/compaction_marker.py +358 -0
  74. brigade_cli-0.27.0/src/brigade/claude_hooks/envelope.py +356 -0
  75. brigade_cli-0.27.0/src/brigade/claude_hooks/install_cmd.py +528 -0
  76. brigade_cli-0.27.0/src/brigade/claude_hooks/package.py +206 -0
  77. brigade_cli-0.27.0/src/brigade/claude_hooks/paths.py +31 -0
  78. brigade_cli-0.27.0/src/brigade/claude_hooks/presence.py +15 -0
  79. brigade_cli-0.27.0/src/brigade/claude_hooks/runtime.py +3351 -0
  80. brigade_cli-0.27.0/src/brigade/claude_hooks/session_state.py +545 -0
  81. brigade_cli-0.27.0/src/brigade/cli/__init__.py +265 -0
  82. brigade_cli-0.27.0/src/brigade/cli/_common.py +146 -0
  83. brigade_cli-0.27.0/src/brigade/cli/care.py +127 -0
  84. brigade_cli-0.27.0/src/brigade/cli/center.py +356 -0
  85. brigade_cli-0.27.0/src/brigade/cli/code.py +50 -0
  86. brigade_cli-0.27.0/src/brigade/cli/context.py +93 -0
  87. brigade_cli-0.27.0/src/brigade/cli/dogfood.py +109 -0
  88. brigade_cli-0.27.0/src/brigade/cli/evidence.py +176 -0
  89. brigade_cli-0.27.0/src/brigade/cli/fleet.py +1906 -0
  90. brigade_cli-0.27.0/src/brigade/cli/fleet_policy.py +495 -0
  91. brigade_cli-0.27.0/src/brigade/cli/governance.py +62 -0
  92. brigade_cli-0.27.0/src/brigade/cli/handoff.py +404 -0
  93. brigade_cli-0.27.0/src/brigade/cli/harness.py +226 -0
  94. brigade_cli-0.27.0/src/brigade/cli/init.py +190 -0
  95. brigade_cli-0.27.0/src/brigade/cli/mcp.py +240 -0
  96. brigade_cli-0.27.0/src/brigade/cli/memory.py +484 -0
  97. brigade_cli-0.27.0/src/brigade/cli/model.py +138 -0
  98. brigade_cli-0.27.0/src/brigade/cli/node.py +34 -0
  99. brigade_cli-0.27.0/src/brigade/cli/operator.py +489 -0
  100. brigade_cli-0.27.0/src/brigade/cli/projection.py +40 -0
  101. brigade_cli-0.27.0/src/brigade/cli/receipts.py +364 -0
  102. brigade_cli-0.27.0/src/brigade/cli/repos.py +975 -0
  103. brigade_cli-0.27.0/src/brigade/cli/research.py +272 -0
  104. brigade_cli-0.27.0/src/brigade/cli/roadmap.py +68 -0
  105. brigade_cli-0.27.0/src/brigade/cli/run.py +1387 -0
  106. brigade_cli-0.27.0/src/brigade/cli/run_cloud.py +1697 -0
  107. brigade_cli-0.27.0/src/brigade/cli/run_cloud_build_feed.py +68 -0
  108. brigade_cli-0.27.0/src/brigade/cli/runs.py +682 -0
  109. brigade_cli-0.27.0/src/brigade/cli/security.py +254 -0
  110. brigade_cli-0.27.0/src/brigade/cli/skills.py +366 -0
  111. brigade_cli-0.27.0/src/brigade/cli/work/dispatching.py +922 -0
  112. brigade_cli-0.27.0/src/brigade/cli/work/phases.py +700 -0
  113. brigade_cli-0.27.0/src/brigade/cli/work/registration.py +1099 -0
  114. brigade_cli-0.27.0/src/brigade/cloud_tracker.py +1484 -0
  115. brigade_cli-0.27.0/src/brigade/code_cmd.py +126 -0
  116. brigade_cli-0.27.0/src/brigade/code_export.py +847 -0
  117. brigade_cli-0.27.0/src/brigade/codex_appserver.py +765 -0
  118. brigade_cli-0.27.0/src/brigade/codex_cloud.py +829 -0
  119. brigade_cli-0.27.0/src/brigade/commit_linkage.py +609 -0
  120. brigade_cli-0.27.0/src/brigade/commit_linkage_verify.py +654 -0
  121. brigade_cli-0.27.0/src/brigade/component_paths.py +162 -0
  122. brigade_cli-0.27.0/src/brigade/config.py +221 -0
  123. brigade_cli-0.27.0/src/brigade/context_cmd.py +870 -0
  124. brigade_cli-0.27.0/src/brigade/control_crosswalk.py +565 -0
  125. brigade_cli-0.27.0/src/brigade/cosign_attestation.py +291 -0
  126. brigade_cli-0.27.0/src/brigade/cursor_cloud.py +571 -0
  127. brigade_cli-0.27.0/src/brigade/cursor_user_cmd.py +653 -0
  128. brigade_cli-0.27.0/src/brigade/daily_cmd/approvals.py +593 -0
  129. brigade_cli-0.27.0/src/brigade/daily_cmd/candidates.py +866 -0
  130. brigade_cli-0.27.0/src/brigade/daily_cmd/closeout_ops.py +214 -0
  131. brigade_cli-0.27.0/src/brigade/daily_cmd/config.py +541 -0
  132. brigade_cli-0.27.0/src/brigade/daily_cmd/hardening.py +798 -0
  133. brigade_cli-0.27.0/src/brigade/daily_cmd/run_loop.py +498 -0
  134. brigade_cli-0.27.0/src/brigade/daily_cmd/status_plan.py +569 -0
  135. brigade_cli-0.27.0/src/brigade/daily_cmd/telemetry_ops.py +788 -0
  136. brigade_cli-0.27.0/src/brigade/dirfd.py +221 -0
  137. brigade_cli-0.27.0/src/brigade/doctor.py +1906 -0
  138. brigade_cli-0.27.0/src/brigade/dogfood_cmd.py +576 -0
  139. brigade_cli-0.27.0/src/brigade/evidence_brief.py +439 -0
  140. brigade_cli-0.27.0/src/brigade/evidence_cmd.py +1254 -0
  141. brigade_cli-0.27.0/src/brigade/evidence_package.py +400 -0
  142. brigade_cli-0.27.0/src/brigade/evidence_redaction.py +277 -0
  143. brigade_cli-0.27.0/src/brigade/evidence_runtime.py +916 -0
  144. brigade_cli-0.27.0/src/brigade/fixtures/causal-receipt.v1.golden.json +105 -0
  145. brigade_cli-0.27.0/src/brigade/fixtures/trust-policy.v1.json +12 -0
  146. brigade_cli-0.27.0/src/brigade/fixtures/worker-events-appserver.v1.golden.json +1054 -0
  147. brigade_cli-0.27.0/src/brigade/fleet_client.py +1999 -0
  148. brigade_cli-0.27.0/src/brigade/fleet_client_cloud.py +623 -0
  149. brigade_cli-0.27.0/src/brigade/fleet_client_grokbot.py +305 -0
  150. brigade_cli-0.27.0/src/brigade/fleet_client_policy.py +392 -0
  151. brigade_cli-0.27.0/src/brigade/fleet_command_deck.py +1690 -0
  152. brigade_cli-0.27.0/src/brigade/fleet_dashboard.py +903 -0
  153. brigade_cli-0.27.0/src/brigade/fleet_export.py +671 -0
  154. brigade_cli-0.27.0/src/brigade/fleet_hub.py +1998 -0
  155. brigade_cli-0.27.0/src/brigade/fleet_hub_capacity.py +235 -0
  156. brigade_cli-0.27.0/src/brigade/fleet_hub_grokbot.py +1480 -0
  157. brigade_cli-0.27.0/src/brigade/fleet_hub_http.py +1325 -0
  158. brigade_cli-0.27.0/src/brigade/fleet_hub_model_roster.py +1563 -0
  159. brigade_cli-0.27.0/src/brigade/fleet_hub_policy.py +1595 -0
  160. brigade_cli-0.27.0/src/brigade/fleet_hub_policy_api.py +1185 -0
  161. brigade_cli-0.27.0/src/brigade/fleet_hub_preference.py +112 -0
  162. brigade_cli-0.27.0/src/brigade/fleet_hub_roster_page.py +714 -0
  163. brigade_cli-0.27.0/src/brigade/fleet_hub_routing.py +1693 -0
  164. brigade_cli-0.27.0/src/brigade/fleet_hub_sessions.py +372 -0
  165. brigade_cli-0.27.0/src/brigade/fleet_hub_status.py +235 -0
  166. brigade_cli-0.27.0/src/brigade/fleet_model_admission.py +1864 -0
  167. brigade_cli-0.27.0/src/brigade/fleet_model_inventory.py +1706 -0
  168. brigade_cli-0.27.0/src/brigade/fleet_model_roster.py +432 -0
  169. brigade_cli-0.27.0/src/brigade/fleet_policy.py +1211 -0
  170. brigade_cli-0.27.0/src/brigade/fleet_policy_delegation.py +414 -0
  171. brigade_cli-0.27.0/src/brigade/fleet_policy_form.py +284 -0
  172. brigade_cli-0.27.0/src/brigade/fleet_policy_migration.py +680 -0
  173. brigade_cli-0.27.0/src/brigade/fleet_policy_page.py +1834 -0
  174. brigade_cli-0.27.0/src/brigade/fleet_quota.py +629 -0
  175. brigade_cli-0.27.0/src/brigade/fleet_repo_policy_page.py +394 -0
  176. brigade_cli-0.27.0/src/brigade/fleet_session_bootstrap.py +774 -0
  177. brigade_cli-0.27.0/src/brigade/fleet_session_presence.py +671 -0
  178. brigade_cli-0.27.0/src/brigade/fleet_t3_transport.py +939 -0
  179. brigade_cli-0.27.0/src/brigade/fragments.py +60 -0
  180. brigade_cli-0.27.0/src/brigade/friction_cmd.py +1181 -0
  181. brigade_cli-0.27.0/src/brigade/generated_patch_quarantine.py +223 -0
  182. brigade_cli-0.27.0/src/brigade/governance_inventory.py +944 -0
  183. brigade_cli-0.27.0/src/brigade/graphtrail_delta.py +663 -0
  184. brigade_cli-0.27.0/src/brigade/grokbot_backup/__init__.py +59 -0
  185. brigade_cli-0.27.0/src/brigade/grokbot_backup/actions.py +682 -0
  186. brigade_cli-0.27.0/src/brigade/grokbot_backup/adapters.py +204 -0
  187. brigade_cli-0.27.0/src/brigade/grokbot_backup/contracts.py +118 -0
  188. brigade_cli-0.27.0/src/brigade/grokbot_backup/exec.py +270 -0
  189. brigade_cli-0.27.0/src/brigade/grokbot_backup/ledger.py +552 -0
  190. brigade_cli-0.27.0/src/brigade/grokbot_backup/lifecycle.py +651 -0
  191. brigade_cli-0.27.0/src/brigade/grokbot_backup/normalize.py +233 -0
  192. brigade_cli-0.27.0/src/brigade/grokbot_backup/runtime_config.py +374 -0
  193. brigade_cli-0.27.0/src/brigade/grokbot_backup/tools.py +355 -0
  194. brigade_cli-0.27.0/src/brigade/grokbot_build_feed.py +460 -0
  195. brigade_cli-0.27.0/src/brigade/grokbot_cerebro.py +1285 -0
  196. brigade_cli-0.27.0/src/brigade/grokbot_feed.py +585 -0
  197. brigade_cli-0.27.0/src/brigade/grokbot_findings.py +918 -0
  198. brigade_cli-0.27.0/src/brigade/grokbot_findings_relay.py +318 -0
  199. brigade_cli-0.27.0/src/brigade/grokbot_fleet/__init__.py +65 -0
  200. brigade_cli-0.27.0/src/brigade/grokbot_fleet/actions.py +1187 -0
  201. brigade_cli-0.27.0/src/brigade/grokbot_fleet/app.py +45 -0
  202. brigade_cli-0.27.0/src/brigade/grokbot_fleet/contracts.py +152 -0
  203. brigade_cli-0.27.0/src/brigade/grokbot_fleet/exec.py +247 -0
  204. brigade_cli-0.27.0/src/brigade/grokbot_fleet/ledger.py +461 -0
  205. brigade_cli-0.27.0/src/brigade/grokbot_fleet/lifecycle.py +728 -0
  206. brigade_cli-0.27.0/src/brigade/grokbot_fleet/normalize.py +144 -0
  207. brigade_cli-0.27.0/src/brigade/grokbot_fleet/policy.py +203 -0
  208. brigade_cli-0.27.0/src/brigade/grokbot_fleet/probes.py +656 -0
  209. brigade_cli-0.27.0/src/brigade/grokbot_fleet/registry.py +117 -0
  210. brigade_cli-0.27.0/src/brigade/grokbot_fleet/runtime_config.py +289 -0
  211. brigade_cli-0.27.0/src/brigade/grokbot_fleet/tools.py +1108 -0
  212. brigade_cli-0.27.0/src/brigade/grokbot_job_clock.py +38 -0
  213. brigade_cli-0.27.0/src/brigade/grokbot_job_validation.py +181 -0
  214. brigade_cli-0.27.0/src/brigade/grokbot_jobs.py +1849 -0
  215. brigade_cli-0.27.0/src/brigade/grokbot_jobs_expiry.py +213 -0
  216. brigade_cli-0.27.0/src/brigade/grokbot_jobs_hub.py +161 -0
  217. brigade_cli-0.27.0/src/brigade/grokbot_mcp.py +1353 -0
  218. brigade_cli-0.27.0/src/brigade/grokbot_n8n/__init__.py +63 -0
  219. brigade_cli-0.27.0/src/brigade/grokbot_n8n/actions.py +709 -0
  220. brigade_cli-0.27.0/src/brigade/grokbot_n8n/client.py +208 -0
  221. brigade_cli-0.27.0/src/brigade/grokbot_n8n/contracts.py +160 -0
  222. brigade_cli-0.27.0/src/brigade/grokbot_n8n/lifecycle.py +598 -0
  223. brigade_cli-0.27.0/src/brigade/grokbot_n8n/runtime_config.py +229 -0
  224. brigade_cli-0.27.0/src/brigade/grokbot_n8n/tools.py +244 -0
  225. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/__init__.py +71 -0
  226. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/actions.py +306 -0
  227. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/adapters.py +1000 -0
  228. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/capabilities.py +192 -0
  229. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/catalog.py +212 -0
  230. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/content_policy.py +79 -0
  231. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/contracts.py +823 -0
  232. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/excalidraw_client.py +269 -0
  233. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/lifecycle.py +808 -0
  234. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/native_client.py +252 -0
  235. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/operator_adapter.py +140 -0
  236. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/path_policy.py +260 -0
  237. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/runtime_config.py +457 -0
  238. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/store.py +732 -0
  239. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/tls.py +157 -0
  240. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/tools.py +836 -0
  241. brigade_cli-0.27.0/src/brigade/grokbot_obsidian/utf8.py +37 -0
  242. brigade_cli-0.27.0/src/brigade/grokbot_operations_relay.py +682 -0
  243. brigade_cli-0.27.0/src/brigade/grokbot_ops.py +694 -0
  244. brigade_cli-0.27.0/src/brigade/grokbot_pack_relay.py +513 -0
  245. brigade_cli-0.27.0/src/brigade/grokbot_packs.py +1496 -0
  246. brigade_cli-0.27.0/src/brigade/grokbot_reconcile.py +581 -0
  247. brigade_cli-0.27.0/src/brigade/grokbot_scout_feed.py +520 -0
  248. brigade_cli-0.27.0/src/brigade/grokbot_wazuh/__init__.py +65 -0
  249. brigade_cli-0.27.0/src/brigade/grokbot_wazuh/contracts.py +217 -0
  250. brigade_cli-0.27.0/src/brigade/grokbot_wazuh/lifecycle.py +645 -0
  251. brigade_cli-0.27.0/src/brigade/grokbot_wazuh/normalize.py +236 -0
  252. brigade_cli-0.27.0/src/brigade/grokbot_wazuh/policy.py +100 -0
  253. brigade_cli-0.27.0/src/brigade/grokbot_wazuh/store.py +464 -0
  254. brigade_cli-0.27.0/src/brigade/grokbot_wazuh/tools.py +262 -0
  255. brigade_cli-0.27.0/src/brigade/guard/audit.py +238 -0
  256. brigade_cli-0.27.0/src/brigade/guard/baseline.py +247 -0
  257. brigade_cli-0.27.0/src/brigade/guard/cli.py +379 -0
  258. brigade_cli-0.27.0/src/brigade/guard/engine.py +459 -0
  259. brigade_cli-0.27.0/src/brigade/guard/rules.py +193 -0
  260. brigade_cli-0.27.0/src/brigade/handoff_cmd/drafts.py +1128 -0
  261. brigade_cli-0.27.0/src/brigade/handoff_cmd/inspect_ops.py +342 -0
  262. brigade_cli-0.27.0/src/brigade/handoff_cmd/issue_ops.py +777 -0
  263. brigade_cli-0.27.0/src/brigade/handoff_cmd/linting.py +408 -0
  264. brigade_cli-0.27.0/src/brigade/handoff_cmd/migrate_ops.py +135 -0
  265. brigade_cli-0.27.0/src/brigade/handoff_cmd/models.py +296 -0
  266. brigade_cli-0.27.0/src/brigade/handoff_cmd/receipts.py +380 -0
  267. brigade_cli-0.27.0/src/brigade/handoff_cmd/sources.py +580 -0
  268. brigade_cli-0.27.0/src/brigade/harness_profile_cmd.py +2488 -0
  269. brigade_cli-0.27.0/src/brigade/harness_profile_doctor.py +171 -0
  270. brigade_cli-0.27.0/src/brigade/harness_profiles.py +189 -0
  271. brigade_cli-0.27.0/src/brigade/ingest.py +561 -0
  272. brigade_cli-0.27.0/src/brigade/install.py +508 -0
  273. brigade_cli-0.27.0/src/brigade/jules_cloud.py +931 -0
  274. brigade_cli-0.27.0/src/brigade/learn_cmd.py +1269 -0
  275. brigade_cli-0.27.0/src/brigade/localio.py +312 -0
  276. brigade_cli-0.27.0/src/brigade/managed.py +754 -0
  277. brigade_cli-0.27.0/src/brigade/managed_block.py +1252 -0
  278. brigade_cli-0.27.0/src/brigade/mcp_cmd.py +1278 -0
  279. brigade_cli-0.27.0/src/brigade/memory_cmd.py +2189 -0
  280. brigade_cli-0.27.0/src/brigade/memory_hooks.py +351 -0
  281. brigade_cli-0.27.0/src/brigade/memory_identity_audit.py +257 -0
  282. brigade_cli-0.27.0/src/brigade/memory_operations.py +1825 -0
  283. brigade_cli-0.27.0/src/brigade/memory_retrieval_eval/__init__.py +12 -0
  284. brigade_cli-0.27.0/src/brigade/memory_retrieval_eval/__main__.py +48 -0
  285. brigade_cli-0.27.0/src/brigade/memory_retrieval_eval/adapters.py +154 -0
  286. brigade_cli-0.27.0/src/brigade/memory_retrieval_eval/corpus.py +172 -0
  287. brigade_cli-0.27.0/src/brigade/memory_retrieval_eval/harness.py +109 -0
  288. brigade_cli-0.27.0/src/brigade/memory_retrieval_eval/metrics.py +108 -0
  289. brigade_cli-0.27.0/src/brigade/memory_retrieval_eval/projection.py +600 -0
  290. brigade_cli-0.27.0/src/brigade/memory_retrieval_eval/quality.py +202 -0
  291. brigade_cli-0.27.0/src/brigade/memory_retrieval_eval/report.py +110 -0
  292. brigade_cli-0.27.0/src/brigade/memory_vault.py +1465 -0
  293. brigade_cli-0.27.0/src/brigade/message_envelope.py +602 -0
  294. brigade_cli-0.27.0/src/brigade/model_inventory.py +298 -0
  295. brigade_cli-0.27.0/src/brigade/model_trials.py +840 -0
  296. brigade_cli-0.27.0/src/brigade/node.py +200 -0
  297. brigade_cli-0.27.0/src/brigade/obsidian_vault.py +682 -0
  298. brigade_cli-0.27.0/src/brigade/operator_cmd/adoption.py +422 -0
  299. brigade_cli-0.27.0/src/brigade/operator_cmd/health.py +548 -0
  300. brigade_cli-0.27.0/src/brigade/operator_cmd/lifecycle.py +1357 -0
  301. brigade_cli-0.27.0/src/brigade/operator_cmd/migration.py +595 -0
  302. brigade_cli-0.27.0/src/brigade/operator_cmd/surfaces.py +1050 -0
  303. brigade_cli-0.27.0/src/brigade/outcome.py +609 -0
  304. brigade_cli-0.27.0/src/brigade/outcome_cmd.py +2763 -0
  305. brigade_cli-0.27.0/src/brigade/outcome_discovery.py +224 -0
  306. brigade_cli-0.27.0/src/brigade/phases_cmd/checks_actions.py +1851 -0
  307. brigade_cli-0.27.0/src/brigade/phases_cmd/session_lifecycle.py +1150 -0
  308. brigade_cli-0.27.0/src/brigade/phases_cmd/session_ops.py +1694 -0
  309. brigade_cli-0.27.0/src/brigade/proc.py +1462 -0
  310. brigade_cli-0.27.0/src/brigade/projection/__init__.py +48 -0
  311. brigade_cli-0.27.0/src/brigade/projection/fixture.py +83 -0
  312. brigade_cli-0.27.0/src/brigade/projection/kernel.py +1059 -0
  313. brigade_cli-0.27.0/src/brigade/projection_cmd.py +27 -0
  314. brigade_cli-0.27.0/src/brigade/projects_cmd.py +694 -0
  315. brigade_cli-0.27.0/src/brigade/provenance.py +629 -0
  316. brigade_cli-0.27.0/src/brigade/receipt_schema.py +196 -0
  317. brigade_cli-0.27.0/src/brigade/receipts_cmd.py +2055 -0
  318. brigade_cli-0.27.0/src/brigade/receipts_trailer.py +109 -0
  319. brigade_cli-0.27.0/src/brigade/release_cmd/candidate.py +768 -0
  320. brigade_cli-0.27.0/src/brigade/release_cmd/candidate_audit_ops.py +608 -0
  321. brigade_cli-0.27.0/src/brigade/release_cmd/ci.py +375 -0
  322. brigade_cli-0.27.0/src/brigade/release_cmd/commands.py +92 -0
  323. brigade_cli-0.27.0/src/brigade/release_cmd/evidence.py +752 -0
  324. brigade_cli-0.27.0/src/brigade/release_cmd/install_smoke.py +304 -0
  325. brigade_cli-0.27.0/src/brigade/release_cmd/paths.py +363 -0
  326. brigade_cli-0.27.0/src/brigade/release_cmd/schema_ops.py +198 -0
  327. brigade_cli-0.27.0/src/brigade/repos_cmd/actions_dispatch.py +890 -0
  328. brigade_cli-0.27.0/src/brigade/repos_cmd/fleet.py +1304 -0
  329. brigade_cli-0.27.0/src/brigade/repos_cmd/fleet_health.py +839 -0
  330. brigade_cli-0.27.0/src/brigade/repos_cmd/release_ops.py +1801 -0
  331. brigade_cli-0.27.0/src/brigade/repos_cmd/sweeps.py +1093 -0
  332. brigade_cli-0.27.0/src/brigade/research/claim_audit.py +365 -0
  333. brigade_cli-0.27.0/src/brigade/research/config.py +107 -0
  334. brigade_cli-0.27.0/src/brigade/research/doctor.py +457 -0
  335. brigade_cli-0.27.0/src/brigade/research/engine.py +874 -0
  336. brigade_cli-0.27.0/src/brigade/research/extract.py +94 -0
  337. brigade_cli-0.27.0/src/brigade/research/handoff.py +94 -0
  338. brigade_cli-0.27.0/src/brigade/research/llm.py +162 -0
  339. brigade_cli-0.27.0/src/brigade/research/provenance.py +419 -0
  340. brigade_cli-0.27.0/src/brigade/research/registry.py +884 -0
  341. brigade_cli-0.27.0/src/brigade/research/report.py +153 -0
  342. brigade_cli-0.27.0/src/brigade/research/sources/browser_ai.py +72 -0
  343. brigade_cli-0.27.0/src/brigade/research/sources/web.py +317 -0
  344. brigade_cli-0.27.0/src/brigade/research/types.py +337 -0
  345. brigade_cli-0.27.0/src/brigade/research_cmd.py +3088 -0
  346. brigade_cli-0.27.0/src/brigade/result_integrity.py +298 -0
  347. brigade_cli-0.27.0/src/brigade/roadmap_cmd.py +1162 -0
  348. brigade_cli-0.27.0/src/brigade/roster.py +915 -0
  349. brigade_cli-0.27.0/src/brigade/roster_cmd.py +505 -0
  350. brigade_cli-0.27.0/src/brigade/run_audit.py +1205 -0
  351. brigade_cli-0.27.0/src/brigade/run_budget.py +1853 -0
  352. brigade_cli-0.27.0/src/brigade/run_checkpoint.py +1365 -0
  353. brigade_cli-0.27.0/src/brigade/run_control.py +490 -0
  354. brigade_cli-0.27.0/src/brigade/run_dirfd.py +253 -0
  355. brigade_cli-0.27.0/src/brigade/run_events.py +582 -0
  356. brigade_cli-0.27.0/src/brigade/run_id.py +114 -0
  357. brigade_cli-0.27.0/src/brigade/run_journal.py +1292 -0
  358. brigade_cli-0.27.0/src/brigade/run_lifecycle.py +1019 -0
  359. brigade_cli-0.27.0/src/brigade/run_preference.py +211 -0
  360. brigade_cli-0.27.0/src/brigade/run_projector.py +441 -0
  361. brigade_cli-0.27.0/src/brigade/run_reap.py +678 -0
  362. brigade_cli-0.27.0/src/brigade/run_receipts.py +304 -0
  363. brigade_cli-0.27.0/src/brigade/run_redaction.py +2802 -0
  364. brigade_cli-0.27.0/src/brigade/run_resume.py +1069 -0
  365. brigade_cli-0.27.0/src/brigade/run_seat.py +265 -0
  366. brigade_cli-0.27.0/src/brigade/run_shadow.py +750 -0
  367. brigade_cli-0.27.0/src/brigade/run_transport.py +1513 -0
  368. brigade_cli-0.27.0/src/brigade/runbook_cmd.py +1023 -0
  369. brigade_cli-0.27.0/src/brigade/runguard.py +1734 -0
  370. brigade_cli-0.27.0/src/brigade/runs_cmd.py +3578 -0
  371. brigade_cli-0.27.0/src/brigade/runs_cmd_worktrees.py +150 -0
  372. brigade_cli-0.27.0/src/brigade/runs_diff.py +661 -0
  373. brigade_cli-0.27.0/src/brigade/runs_serve.py +431 -0
  374. brigade_cli-0.27.0/src/brigade/runs_view.html +640 -0
  375. brigade_cli-0.27.0/src/brigade/scanner_isolation.py +225 -0
  376. brigade_cli-0.27.0/src/brigade/seat_health.py +1008 -0
  377. brigade_cli-0.27.0/src/brigade/seat_health_policy.py +290 -0
  378. brigade_cli-0.27.0/src/brigade/security_cmd/commands.py +639 -0
  379. brigade_cli-0.27.0/src/brigade/security_cmd/config.py +589 -0
  380. brigade_cli-0.27.0/src/brigade/security_cmd/enrichment.py +435 -0
  381. brigade_cli-0.27.0/src/brigade/security_cmd/models.py +852 -0
  382. brigade_cli-0.27.0/src/brigade/security_cmd/reports.py +387 -0
  383. brigade_cli-0.27.0/src/brigade/security_cmd/scan_detectors.py +731 -0
  384. brigade_cli-0.27.0/src/brigade/security_cmd/scan_engine.py +1375 -0
  385. brigade_cli-0.27.0/src/brigade/security_cmd/suppression.py +407 -0
  386. brigade_cli-0.27.0/src/brigade/security_cmd/template_audit_ops.py +253 -0
  387. brigade_cli-0.27.0/src/brigade/skill_obligations.py +668 -0
  388. brigade_cli-0.27.0/src/brigade/skills_cmd/__init__.py +524 -0
  389. brigade_cli-0.27.0/src/brigade/skills_cmd/adapters.py +854 -0
  390. brigade_cli-0.27.0/src/brigade/skills_cmd/inbox.py +452 -0
  391. brigade_cli-0.27.0/src/brigade/skills_cmd/install.py +860 -0
  392. brigade_cli-0.27.0/src/brigade/skills_cmd/packs.py +627 -0
  393. brigade_cli-0.27.0/src/brigade/skills_cmd/registry.py +1674 -0
  394. brigade_cli-0.27.0/src/brigade/skills_cmd/search_validate.py +519 -0
  395. brigade_cli-0.27.0/src/brigade/skills_cmd/sync_history.py +861 -0
  396. brigade_cli-0.27.0/src/brigade/telemetry_export.py +549 -0
  397. brigade_cli-0.27.0/src/brigade/template_profiles.py +396 -0
  398. brigade_cli-0.27.0/src/brigade/templates/components/manifest-v1.json +214 -0
  399. brigade_cli-0.27.0/src/brigade/templates/control-crosswalk.json +1171 -0
  400. brigade_cli-0.27.0/src/brigade/templates/depth/workspace.json +40 -0
  401. brigade_cli-0.27.0/src/brigade/templates/grok/hooks/brigade-work.sh +262 -0
  402. brigade_cli-0.27.0/src/brigade/templates/hermes/memory-handoff.harness.json +36 -0
  403. brigade_cli-0.27.0/src/brigade/templates/hermes/model-lanes.harness.json +17 -0
  404. brigade_cli-0.27.0/src/brigade/templates/hermes/workspace.harness.json +30 -0
  405. brigade_cli-0.27.0/src/brigade/templates/memory/cards/workspace-file-maintenance.md +26 -0
  406. brigade_cli-0.27.0/src/brigade/templates/memory/chat-memory-sweep.example.json +131 -0
  407. brigade_cli-0.27.0/src/brigade/templates/memory/memory-care.example.json +11 -0
  408. brigade_cli-0.27.0/src/brigade/templates/policies/personal.json +28 -0
  409. brigade_cli-0.27.0/src/brigade/templates/policies/public-content.json +28 -0
  410. brigade_cli-0.27.0/src/brigade/templates/policies/public-repo.json +27 -0
  411. brigade_cli-0.27.0/src/brigade/templates/rosters/review-heavy.toml +71 -0
  412. brigade_cli-0.27.0/src/brigade/templates/skills/brigade-work/CHANGELOG.md +6 -0
  413. brigade_cli-0.27.0/src/brigade/templates/skills/brigade-work/skill.json +21 -0
  414. brigade_cli-0.27.0/src/brigade/templates/skills/card-refresh/CHANGELOG.md +10 -0
  415. brigade_cli-0.27.0/src/brigade/templates/skills/card-refresh/SKILL.md +68 -0
  416. brigade_cli-0.27.0/src/brigade/templates/skills/card-refresh/skill.json +14 -0
  417. brigade_cli-0.27.0/src/brigade/templates/skills/forward-plan/CHANGELOG.md +18 -0
  418. brigade_cli-0.27.0/src/brigade/templates/skills/forward-plan/SKILL.md +197 -0
  419. brigade_cli-0.27.0/src/brigade/templates/skills/forward-plan/plan.template.json +72 -0
  420. brigade_cli-0.27.0/src/brigade/templates/skills/forward-plan/skill.json +17 -0
  421. brigade_cli-0.27.0/src/brigade/templates/skills/handoff-inbox-drain/CHANGELOG.md +10 -0
  422. brigade_cli-0.27.0/src/brigade/templates/skills/handoff-inbox-drain/SKILL.md +69 -0
  423. brigade_cli-0.27.0/src/brigade/templates/skills/handoff-inbox-drain/skill.json +17 -0
  424. brigade_cli-0.27.0/src/brigade/templates/template-profile-snapshot.json +888 -0
  425. brigade_cli-0.27.0/src/brigade/templates/workspace/AGENTS.md +174 -0
  426. brigade_cli-0.27.0/src/brigade/templates/workspace/MEMORY.md +103 -0
  427. brigade_cli-0.27.0/src/brigade/toml_compat.py +301 -0
  428. brigade_cli-0.27.0/src/brigade/tools_cmd/config.py +262 -0
  429. brigade_cli-0.27.0/src/brigade/tools_cmd/constants.py +462 -0
  430. brigade_cli-0.27.0/src/brigade/tools_cmd/helpers.py +280 -0
  431. brigade_cli-0.27.0/src/brigade/tools_cmd/status.py +205 -0
  432. brigade_cli-0.27.0/src/brigade/trust_gate.py +748 -0
  433. brigade_cli-0.27.0/src/brigade/untrusted.py +317 -0
  434. brigade_cli-0.27.0/src/brigade/update_cmd.py +676 -0
  435. brigade_cli-0.27.0/src/brigade/verification_contract.py +472 -0
  436. brigade_cli-0.27.0/src/brigade/verify_manifest.py +616 -0
  437. brigade_cli-0.27.0/src/brigade/verify_trial.py +665 -0
  438. brigade_cli-0.27.0/src/brigade/work_cmd/__init__.py +465 -0
  439. brigade_cli-0.27.0/src/brigade/work_cmd/backup.py +174 -0
  440. brigade_cli-0.27.0/src/brigade/work_cmd/campaign.py +511 -0
  441. brigade_cli-0.27.0/src/brigade/work_cmd/constants.py +531 -0
  442. brigade_cli-0.27.0/src/brigade/work_cmd/edges.py +897 -0
  443. brigade_cli-0.27.0/src/brigade/work_cmd/footprint.py +459 -0
  444. brigade_cli-0.27.0/src/brigade/work_cmd/helpers.py +359 -0
  445. brigade_cli-0.27.0/src/brigade/work_cmd/imports.py +1132 -0
  446. brigade_cli-0.27.0/src/brigade/work_cmd/inbox_lock.py +542 -0
  447. brigade_cli-0.27.0/src/brigade/work_cmd/ledger/__init__.py +736 -0
  448. brigade_cli-0.27.0/src/brigade/work_cmd/ledger/authority_store.py +1032 -0
  449. brigade_cli-0.27.0/src/brigade/work_cmd/ledger/descriptor_anchors.py +1030 -0
  450. brigade_cli-0.27.0/src/brigade/work_cmd/ledger/import_model.py +1222 -0
  451. brigade_cli-0.27.0/src/brigade/work_cmd/ledger/inbox_provenance.py +1126 -0
  452. brigade_cli-0.27.0/src/brigade/work_cmd/ledger/locking.py +479 -0
  453. brigade_cli-0.27.0/src/brigade/work_cmd/ledger/queries_handoffs.py +873 -0
  454. brigade_cli-0.27.0/src/brigade/work_cmd/ledger/tasks_plans.py +1303 -0
  455. brigade_cli-0.27.0/src/brigade/work_cmd/nt_dirfd.py +586 -0
  456. brigade_cli-0.27.0/src/brigade/work_cmd/partition.py +315 -0
  457. brigade_cli-0.27.0/src/brigade/work_cmd/reviews.py +1335 -0
  458. brigade_cli-0.27.0/src/brigade/work_cmd/scanners.py +3332 -0
  459. brigade_cli-0.27.0/src/brigade/work_cmd/services.py +1168 -0
  460. brigade_cli-0.27.0/src/brigade/work_cmd/session/briefing.py +1304 -0
  461. brigade_cli-0.27.0/src/brigade/work_cmd/session/fleet_routing.py +120 -0
  462. brigade_cli-0.27.0/src/brigade/work_cmd/session/lifecycle.py +711 -0
  463. brigade_cli-0.27.0/src/brigade/work_cmd/session/run_status.py +866 -0
  464. brigade_cli-0.27.0/src/brigade/work_cmd/session/task_ops.py +1213 -0
  465. brigade_cli-0.27.0/src/brigade/work_cmd/session_resume.py +84 -0
  466. brigade_cli-0.27.0/src/brigade/work_cmd/sweeps.py +773 -0
  467. brigade_cli-0.27.0/src/brigade/work_cmd/verification.py +2331 -0
  468. brigade_cli-0.27.0/src/brigade/work_cmd/verify_reaper.py +77 -0
  469. brigade_cli-0.27.0/src/brigade/work_cmd/verify_scoreability.py +89 -0
  470. brigade_cli-0.27.0/src/brigade/work_run_archive.py +987 -0
  471. brigade_cli-0.27.0/src/brigade/worker_events.py +1313 -0
  472. brigade_cli-0.27.0/src/brigade/worker_failure.py +579 -0
  473. brigade_cli-0.27.0/src/brigade/workflow_cmd.py +735 -0
  474. brigade_cli-0.27.0/src/brigade/worklore_brigade.py +235 -0
  475. brigade_cli-0.27.0/src/brigade/worklore_brigade_sync.py +466 -0
  476. brigade_cli-0.27.0/src/brigade/worklore_client.py +393 -0
  477. brigade_cli-0.27.0/src/brigade/worklore_github.py +196 -0
  478. brigade_cli-0.27.0/src/brigade/worklore_github_sync.py +740 -0
  479. brigade_cli-0.27.0/src/brigade/worklore_http.py +475 -0
  480. brigade_cli-0.27.0/src/brigade/worklore_store.py +1929 -0
  481. brigade_cli-0.27.0/src/brigade/worklore_store_operations.py +1081 -0
  482. brigade_cli-0.27.0/src/brigade/worklore_validate.py +320 -0
  483. brigade_cli-0.27.0/src/brigade_cli.egg-info/PKG-INFO +163 -0
  484. brigade_cli-0.27.0/src/brigade_cli.egg-info/SOURCES.txt +1217 -0
  485. brigade_cli-0.27.0/src/brigade_cli.egg-info/requires.txt +13 -0
  486. brigade_cli-0.27.0/tests/test_aboyeur.py +7659 -0
  487. brigade_cli-0.27.0/tests/test_aboyeur_facade.py +123 -0
  488. brigade_cli-0.27.0/tests/test_aboyeur_orchestrator_health_routing.py +542 -0
  489. brigade_cli-0.27.0/tests/test_aboyeur_run_io.py +348 -0
  490. brigade_cli-0.27.0/tests/test_aboyeur_seat_health_probe.py +226 -0
  491. brigade_cli-0.27.0/tests/test_agent_change.py +1455 -0
  492. brigade_cli-0.27.0/tests/test_agent_request.py +192 -0
  493. brigade_cli-0.27.0/tests/test_agents.py +2690 -0
  494. brigade_cli-0.27.0/tests/test_agents_model_pin.py +240 -0
  495. brigade_cli-0.27.0/tests/test_agents_oracle.py +209 -0
  496. brigade_cli-0.27.0/tests/test_agents_windows_executable.py +241 -0
  497. brigade_cli-0.27.0/tests/test_approval.py +1505 -0
  498. brigade_cli-0.27.0/tests/test_attestation.py +875 -0
  499. brigade_cli-0.27.0/tests/test_attestation_input.py +289 -0
  500. brigade_cli-0.27.0/tests/test_attestation_input_integration.py +189 -0
  501. brigade_cli-0.27.0/tests/test_attestation_receipt.py +223 -0
  502. brigade_cli-0.27.0/tests/test_authority_broker.py +111 -0
  503. brigade_cli-0.27.0/tests/test_authority_store_hmac.py +1598 -0
  504. brigade_cli-0.27.0/tests/test_candidate_set.py +632 -0
  505. brigade_cli-0.27.0/tests/test_card_fingerprint.py +296 -0
  506. brigade_cli-0.27.0/tests/test_card_identity.py +110 -0
  507. brigade_cli-0.27.0/tests/test_care_cmd.py +1839 -0
  508. brigade_cli-0.27.0/tests/test_causal_receipt.py +627 -0
  509. brigade_cli-0.27.0/tests/test_center_actions_cmd.py +384 -0
  510. brigade_cli-0.27.0/tests/test_center_agent_activity.py +771 -0
  511. brigade_cli-0.27.0/tests/test_center_dashboard.py +1430 -0
  512. brigade_cli-0.27.0/tests/test_center_page_load.py +206 -0
  513. brigade_cli-0.27.0/tests/test_center_readiness_cmd.py +155 -0
  514. brigade_cli-0.27.0/tests/test_center_report_cmd.py +596 -0
  515. brigade_cli-0.27.0/tests/test_center_research_view.py +547 -0
  516. brigade_cli-0.27.0/tests/test_center_serve.py +247 -0
  517. brigade_cli-0.27.0/tests/test_ci_pytest_shard.py +51 -0
  518. brigade_cli-0.27.0/tests/test_ci_workflow.py +1029 -0
  519. brigade_cli-0.27.0/tests/test_claude_cloud.py +158 -0
  520. brigade_cli-0.27.0/tests/test_claude_hooks_compaction_marker.py +258 -0
  521. brigade_cli-0.27.0/tests/test_claude_hooks_doctor.py +389 -0
  522. brigade_cli-0.27.0/tests/test_claude_hooks_envelope.py +272 -0
  523. brigade_cli-0.27.0/tests/test_claude_hooks_latch_race.py +1022 -0
  524. brigade_cli-0.27.0/tests/test_claude_hooks_runtime.py +3117 -0
  525. brigade_cli-0.27.0/tests/test_claude_hooks_settings_merge.py +648 -0
  526. brigade_cli-0.27.0/tests/test_claude_hooks_stdin_bounds.py +247 -0
  527. brigade_cli-0.27.0/tests/test_claude_hooks_user_scope.py +227 -0
  528. brigade_cli-0.27.0/tests/test_claude_hooks_user_target.py +433 -0
  529. brigade_cli-0.27.0/tests/test_cli_inventory_contract.py +215 -0
  530. brigade_cli-0.27.0/tests/test_cloud_tracker.py +2659 -0
  531. brigade_cli-0.27.0/tests/test_code_export.py +293 -0
  532. brigade_cli-0.27.0/tests/test_code_verbs_and_target.py +213 -0
  533. brigade_cli-0.27.0/tests/test_codex_appserver.py +969 -0
  534. brigade_cli-0.27.0/tests/test_codex_cloud.py +1553 -0
  535. brigade_cli-0.27.0/tests/test_commit_linkage.py +1238 -0
  536. brigade_cli-0.27.0/tests/test_component_install.py +2533 -0
  537. brigade_cli-0.27.0/tests/test_component_manifest.py +935 -0
  538. brigade_cli-0.27.0/tests/test_component_paths.py +134 -0
  539. brigade_cli-0.27.0/tests/test_config.py +352 -0
  540. brigade_cli-0.27.0/tests/test_context_cmd.py +235 -0
  541. brigade_cli-0.27.0/tests/test_context_learning_closeout_cmd.py +1065 -0
  542. brigade_cli-0.27.0/tests/test_control_crosswalk.py +306 -0
  543. brigade_cli-0.27.0/tests/test_cosign_attestation.py +826 -0
  544. brigade_cli-0.27.0/tests/test_cursor_cloud.py +968 -0
  545. brigade_cli-0.27.0/tests/test_cursor_user_cmd.py +601 -0
  546. brigade_cli-0.27.0/tests/test_daily_driver_cmd.py +1720 -0
  547. brigade_cli-0.27.0/tests/test_dashboard_code_graph.py +873 -0
  548. brigade_cli-0.27.0/tests/test_dashboard_handoffs.py +89 -0
  549. brigade_cli-0.27.0/tests/test_dashboard_memory_operations.py +493 -0
  550. brigade_cli-0.27.0/tests/test_dashboard_outcomes.py +137 -0
  551. brigade_cli-0.27.0/tests/test_dashboard_runs.py +294 -0
  552. brigade_cli-0.27.0/tests/test_dashboard_status.py +114 -0
  553. brigade_cli-0.27.0/tests/test_dashboard_work.py +491 -0
  554. brigade_cli-0.27.0/tests/test_direct_worker_finish_tree.py +65 -0
  555. brigade_cli-0.27.0/tests/test_directory_authority_legacy_migration.py +267 -0
  556. brigade_cli-0.27.0/tests/test_dirfd.py +171 -0
  557. brigade_cli-0.27.0/tests/test_doctor.py +3083 -0
  558. brigade_cli-0.27.0/tests/test_dogfood_cmd.py +629 -0
  559. brigade_cli-0.27.0/tests/test_evidence_branded_surface.py +216 -0
  560. brigade_cli-0.27.0/tests/test_evidence_cmd.py +1270 -0
  561. brigade_cli-0.27.0/tests/test_evidence_package.py +554 -0
  562. brigade_cli-0.27.0/tests/test_evidence_redaction.py +437 -0
  563. brigade_cli-0.27.0/tests/test_evidence_runtime.py +622 -0
  564. brigade_cli-0.27.0/tests/test_fleet_action_dispatch_cmd.py +365 -0
  565. brigade_cli-0.27.0/tests/test_fleet_authority_proof.py +798 -0
  566. brigade_cli-0.27.0/tests/test_fleet_claim_release.py +1279 -0
  567. brigade_cli-0.27.0/tests/test_fleet_claims.py +2380 -0
  568. brigade_cli-0.27.0/tests/test_fleet_client_hardening.py +314 -0
  569. brigade_cli-0.27.0/tests/test_fleet_cloud.py +2030 -0
  570. brigade_cli-0.27.0/tests/test_fleet_command_deck.py +1523 -0
  571. brigade_cli-0.27.0/tests/test_fleet_dashboard.py +924 -0
  572. brigade_cli-0.27.0/tests/test_fleet_export.py +726 -0
  573. brigade_cli-0.27.0/tests/test_fleet_hub_capacity.py +293 -0
  574. brigade_cli-0.27.0/tests/test_fleet_hub_grokbot_expiry.py +441 -0
  575. brigade_cli-0.27.0/tests/test_fleet_hub_policy.py +480 -0
  576. brigade_cli-0.27.0/tests/test_fleet_model_admission.py +3808 -0
  577. brigade_cli-0.27.0/tests/test_fleet_model_inventory.py +1637 -0
  578. brigade_cli-0.27.0/tests/test_fleet_model_roster.py +1015 -0
  579. brigade_cli-0.27.0/tests/test_fleet_models_list.py +177 -0
  580. brigade_cli-0.27.0/tests/test_fleet_native_launch_binding.py +539 -0
  581. brigade_cli-0.27.0/tests/test_fleet_nodes.py +874 -0
  582. brigade_cli-0.27.0/tests/test_fleet_policy.py +544 -0
  583. brigade_cli-0.27.0/tests/test_fleet_policy_api.py +1162 -0
  584. brigade_cli-0.27.0/tests/test_fleet_policy_api_context.py +512 -0
  585. brigade_cli-0.27.0/tests/test_fleet_policy_cli.py +583 -0
  586. brigade_cli-0.27.0/tests/test_fleet_policy_core_completion.py +1454 -0
  587. brigade_cli-0.27.0/tests/test_fleet_policy_delegation.py +788 -0
  588. brigade_cli-0.27.0/tests/test_fleet_policy_migration.py +1032 -0
  589. brigade_cli-0.27.0/tests/test_fleet_policy_page.py +2154 -0
  590. brigade_cli-0.27.0/tests/test_fleet_quota.py +542 -0
  591. brigade_cli-0.27.0/tests/test_fleet_repo_policy_page.py +467 -0
  592. brigade_cli-0.27.0/tests/test_fleet_roster_page.py +735 -0
  593. brigade_cli-0.27.0/tests/test_fleet_routing.py +960 -0
  594. brigade_cli-0.27.0/tests/test_fleet_session_bootstrap.py +762 -0
  595. brigade_cli-0.27.0/tests/test_fleet_session_presence.py +323 -0
  596. brigade_cli-0.27.0/tests/test_fleet_sync.py +1594 -0
  597. brigade_cli-0.27.0/tests/test_fleet_t3_transport.py +835 -0
  598. brigade_cli-0.27.0/tests/test_forward_plan_skill.py +242 -0
  599. brigade_cli-0.27.0/tests/test_generated_patch_quarantine.py +144 -0
  600. brigade_cli-0.27.0/tests/test_gitignore.py +429 -0
  601. brigade_cli-0.27.0/tests/test_governance_inventory.py +864 -0
  602. brigade_cli-0.27.0/tests/test_graphtrail_delta.py +74 -0
  603. brigade_cli-0.27.0/tests/test_grok_hook_runtime.py +194 -0
  604. brigade_cli-0.27.0/tests/test_grokbot_backup_actions.py +468 -0
  605. brigade_cli-0.27.0/tests/test_grokbot_backup_adapters.py +286 -0
  606. brigade_cli-0.27.0/tests/test_grokbot_backup_contracts.py +97 -0
  607. brigade_cli-0.27.0/tests/test_grokbot_backup_ledger.py +113 -0
  608. brigade_cli-0.27.0/tests/test_grokbot_backup_lifecycle.py +295 -0
  609. brigade_cli-0.27.0/tests/test_grokbot_backup_runtime.py +183 -0
  610. brigade_cli-0.27.0/tests/test_grokbot_build_feed.py +1469 -0
  611. brigade_cli-0.27.0/tests/test_grokbot_cerebro.py +961 -0
  612. brigade_cli-0.27.0/tests/test_grokbot_feed.py +1382 -0
  613. brigade_cli-0.27.0/tests/test_grokbot_findings.py +1204 -0
  614. brigade_cli-0.27.0/tests/test_grokbot_findings_relay.py +731 -0
  615. brigade_cli-0.27.0/tests/test_grokbot_fleet_actions.py +606 -0
  616. brigade_cli-0.27.0/tests/test_grokbot_fleet_app.py +197 -0
  617. brigade_cli-0.27.0/tests/test_grokbot_fleet_contracts.py +106 -0
  618. brigade_cli-0.27.0/tests/test_grokbot_fleet_exec.py +115 -0
  619. brigade_cli-0.27.0/tests/test_grokbot_fleet_ledger.py +151 -0
  620. brigade_cli-0.27.0/tests/test_grokbot_fleet_lifecycle.py +199 -0
  621. brigade_cli-0.27.0/tests/test_grokbot_fleet_normalize.py +57 -0
  622. brigade_cli-0.27.0/tests/test_grokbot_fleet_probes.py +145 -0
  623. brigade_cli-0.27.0/tests/test_grokbot_fleet_registry.py +98 -0
  624. brigade_cli-0.27.0/tests/test_grokbot_fleet_remediation.py +1265 -0
  625. brigade_cli-0.27.0/tests/test_grokbot_fleet_runtime_config.py +193 -0
  626. brigade_cli-0.27.0/tests/test_grokbot_fleet_tools.py +448 -0
  627. brigade_cli-0.27.0/tests/test_grokbot_jobs.py +1955 -0
  628. brigade_cli-0.27.0/tests/test_grokbot_mcp.py +2291 -0
  629. brigade_cli-0.27.0/tests/test_grokbot_n8n_actions.py +826 -0
  630. brigade_cli-0.27.0/tests/test_grokbot_n8n_client.py +216 -0
  631. brigade_cli-0.27.0/tests/test_grokbot_n8n_contracts.py +130 -0
  632. brigade_cli-0.27.0/tests/test_grokbot_n8n_lifecycle.py +314 -0
  633. brigade_cli-0.27.0/tests/test_grokbot_n8n_runtime.py +237 -0
  634. brigade_cli-0.27.0/tests/test_grokbot_n8n_tools.py +186 -0
  635. brigade_cli-0.27.0/tests/test_grokbot_obsidian_actions.py +456 -0
  636. brigade_cli-0.27.0/tests/test_grokbot_obsidian_adapters.py +674 -0
  637. brigade_cli-0.27.0/tests/test_grokbot_obsidian_capabilities.py +50 -0
  638. brigade_cli-0.27.0/tests/test_grokbot_obsidian_client.py +111 -0
  639. brigade_cli-0.27.0/tests/test_grokbot_obsidian_contracts.py +133 -0
  640. brigade_cli-0.27.0/tests/test_grokbot_obsidian_excalidraw_client.py +255 -0
  641. brigade_cli-0.27.0/tests/test_grokbot_obsidian_lifecycle.py +476 -0
  642. brigade_cli-0.27.0/tests/test_grokbot_obsidian_operator_install.py +109 -0
  643. brigade_cli-0.27.0/tests/test_grokbot_obsidian_operator_plugin.py +133 -0
  644. brigade_cli-0.27.0/tests/test_grokbot_obsidian_phase2.py +664 -0
  645. brigade_cli-0.27.0/tests/test_grokbot_obsidian_policy.py +76 -0
  646. brigade_cli-0.27.0/tests/test_grokbot_obsidian_runtime.py +444 -0
  647. brigade_cli-0.27.0/tests/test_grokbot_operations_relay.py +545 -0
  648. brigade_cli-0.27.0/tests/test_grokbot_ops.py +1209 -0
  649. brigade_cli-0.27.0/tests/test_grokbot_pack_relay.py +513 -0
  650. brigade_cli-0.27.0/tests/test_grokbot_packs.py +1666 -0
  651. brigade_cli-0.27.0/tests/test_grokbot_reconcile.py +1021 -0
  652. brigade_cli-0.27.0/tests/test_grokbot_scout_feed.py +1147 -0
  653. brigade_cli-0.27.0/tests/test_grokbot_wazuh_contracts.py +97 -0
  654. brigade_cli-0.27.0/tests/test_grokbot_wazuh_lifecycle.py +274 -0
  655. brigade_cli-0.27.0/tests/test_grokbot_wazuh_normalize.py +147 -0
  656. brigade_cli-0.27.0/tests/test_grokbot_wazuh_policy.py +116 -0
  657. brigade_cli-0.27.0/tests/test_grokbot_wazuh_store.py +161 -0
  658. brigade_cli-0.27.0/tests/test_grokbot_wazuh_tools.py +491 -0
  659. brigade_cli-0.27.0/tests/test_handoff_cmd.py +2453 -0
  660. brigade_cli-0.27.0/tests/test_harness_user_scope.py +1004 -0
  661. brigade_cli-0.27.0/tests/test_harness_user_scope_slice2.py +493 -0
  662. brigade_cli-0.27.0/tests/test_ingest.py +1282 -0
  663. brigade_cli-0.27.0/tests/test_init.py +396 -0
  664. brigade_cli-0.27.0/tests/test_instruction_profiles.py +240 -0
  665. brigade_cli-0.27.0/tests/test_issue266_work_status_memory.py +313 -0
  666. brigade_cli-0.27.0/tests/test_jules_cloud.py +1064 -0
  667. brigade_cli-0.27.0/tests/test_ledger_1233_findings.py +305 -0
  668. brigade_cli-0.27.0/tests/test_ledger_facade.py +94 -0
  669. brigade_cli-0.27.0/tests/test_localio.py +267 -0
  670. brigade_cli-0.27.0/tests/test_managed.py +1340 -0
  671. brigade_cli-0.27.0/tests/test_managed_block.py +418 -0
  672. brigade_cli-0.27.0/tests/test_mcp_projection.py +285 -0
  673. brigade_cli-0.27.0/tests/test_memory_care_skills.py +190 -0
  674. brigade_cli-0.27.0/tests/test_memory_cmd.py +1785 -0
  675. brigade_cli-0.27.0/tests/test_memory_hooks.py +281 -0
  676. brigade_cli-0.27.0/tests/test_memory_identity_audit.py +153 -0
  677. brigade_cli-0.27.0/tests/test_memory_inventory_cmd.py +1138 -0
  678. brigade_cli-0.27.0/tests/test_memory_retrieval_eval.py +546 -0
  679. brigade_cli-0.27.0/tests/test_memory_search_mcp.py +216 -0
  680. brigade_cli-0.27.0/tests/test_memory_topology_cmd.py +1719 -0
  681. brigade_cli-0.27.0/tests/test_memory_vault_projection.py +556 -0
  682. brigade_cli-0.27.0/tests/test_memory_vault_propose.py +331 -0
  683. brigade_cli-0.27.0/tests/test_memory_vault_search.py +740 -0
  684. brigade_cli-0.27.0/tests/test_message_envelope.py +137 -0
  685. brigade_cli-0.27.0/tests/test_model_inventory.py +392 -0
  686. brigade_cli-0.27.0/tests/test_model_trials.py +905 -0
  687. brigade_cli-0.27.0/tests/test_module_size_ratchet.py +75 -0
  688. brigade_cli-0.27.0/tests/test_mypy_override_ratchet.py +83 -0
  689. brigade_cli-0.27.0/tests/test_node.py +223 -0
  690. brigade_cli-0.27.0/tests/test_operator_cmd.py +1862 -0
  691. brigade_cli-0.27.0/tests/test_outcome.py +434 -0
  692. brigade_cli-0.27.0/tests/test_outcome_backfill_scorecard.py +328 -0
  693. brigade_cli-0.27.0/tests/test_outcome_cmd.py +3144 -0
  694. brigade_cli-0.27.0/tests/test_outcome_reused_receipt_dedup.py +229 -0
  695. brigade_cli-0.27.0/tests/test_phase257_facades.py +905 -0
  696. brigade_cli-0.27.0/tests/test_pre_push_hook.py +502 -0
  697. brigade_cli-0.27.0/tests/test_proc.py +1128 -0
  698. brigade_cli-0.27.0/tests/test_producer_run_id.py +391 -0
  699. brigade_cli-0.27.0/tests/test_projection_cli.py +59 -0
  700. brigade_cli-0.27.0/tests/test_projection_conformance.py +32 -0
  701. brigade_cli-0.27.0/tests/test_projection_kernel.py +660 -0
  702. brigade_cli-0.27.0/tests/test_provenance_envelope.py +583 -0
  703. brigade_cli-0.27.0/tests/test_publish_workflow.py +431 -0
  704. brigade_cli-0.27.0/tests/test_published_artifact_acceptance.py +832 -0
  705. brigade_cli-0.27.0/tests/test_readme_brand_header.py +75 -0
  706. brigade_cli-0.27.0/tests/test_receipt_schema_audit.py +467 -0
  707. brigade_cli-0.27.0/tests/test_receipt_signing.py +94 -0
  708. brigade_cli-0.27.0/tests/test_receipts_cmd.py +2103 -0
  709. brigade_cli-0.27.0/tests/test_receipts_trailer.py +226 -0
  710. brigade_cli-0.27.0/tests/test_release_cmd.py +1523 -0
  711. brigade_cli-0.27.0/tests/test_release_metadata.py +118 -0
  712. brigade_cli-0.27.0/tests/test_report_review_closeout_cmd.py +396 -0
  713. brigade_cli-0.27.0/tests/test_repos_actions_cmd.py +257 -0
  714. brigade_cli-0.27.0/tests/test_repos_sweep_health_cmd.py +431 -0
  715. brigade_cli-0.27.0/tests/test_research_acceptance.py +369 -0
  716. brigade_cli-0.27.0/tests/test_research_browser_ai.py +113 -0
  717. brigade_cli-0.27.0/tests/test_research_claim_audit.py +489 -0
  718. brigade_cli-0.27.0/tests/test_research_cmd.py +3482 -0
  719. brigade_cli-0.27.0/tests/test_research_config.py +154 -0
  720. brigade_cli-0.27.0/tests/test_research_doctor.py +562 -0
  721. brigade_cli-0.27.0/tests/test_research_engine.py +1510 -0
  722. brigade_cli-0.27.0/tests/test_research_extract.py +100 -0
  723. brigade_cli-0.27.0/tests/test_research_finding_envelope.py +406 -0
  724. brigade_cli-0.27.0/tests/test_research_handoff.py +119 -0
  725. brigade_cli-0.27.0/tests/test_research_llm.py +233 -0
  726. brigade_cli-0.27.0/tests/test_research_provenance.py +105 -0
  727. brigade_cli-0.27.0/tests/test_research_registry.py +322 -0
  728. brigade_cli-0.27.0/tests/test_research_report.py +237 -0
  729. brigade_cli-0.27.0/tests/test_research_review_regressions.py +472 -0
  730. brigade_cli-0.27.0/tests/test_research_types.py +77 -0
  731. brigade_cli-0.27.0/tests/test_research_web.py +303 -0
  732. brigade_cli-0.27.0/tests/test_result_integrity.py +84 -0
  733. brigade_cli-0.27.0/tests/test_roadmap_cmd.py +445 -0
  734. brigade_cli-0.27.0/tests/test_roadmap_inventory_cmd.py +98 -0
  735. brigade_cli-0.27.0/tests/test_roster.py +1718 -0
  736. brigade_cli-0.27.0/tests/test_roster_cmd.py +1099 -0
  737. brigade_cli-0.27.0/tests/test_run_budget.py +1331 -0
  738. brigade_cli-0.27.0/tests/test_run_checkpoint.py +3410 -0
  739. brigade_cli-0.27.0/tests/test_run_cli.py +3742 -0
  740. brigade_cli-0.27.0/tests/test_run_detach.py +867 -0
  741. brigade_cli-0.27.0/tests/test_run_dirfd.py +205 -0
  742. brigade_cli-0.27.0/tests/test_run_events.py +505 -0
  743. brigade_cli-0.27.0/tests/test_run_journal.py +2416 -0
  744. brigade_cli-0.27.0/tests/test_run_lifecycle.py +3067 -0
  745. brigade_cli-0.27.0/tests/test_run_preference.py +261 -0
  746. brigade_cli-0.27.0/tests/test_run_projector.py +887 -0
  747. brigade_cli-0.27.0/tests/test_run_reap.py +1536 -0
  748. brigade_cli-0.27.0/tests/test_run_receipts.py +181 -0
  749. brigade_cli-0.27.0/tests/test_run_redaction.py +2581 -0
  750. brigade_cli-0.27.0/tests/test_run_resume.py +1748 -0
  751. brigade_cli-0.27.0/tests/test_run_seat.py +535 -0
  752. brigade_cli-0.27.0/tests/test_run_shadow.py +2224 -0
  753. brigade_cli-0.27.0/tests/test_run_transport.py +1382 -0
  754. brigade_cli-0.27.0/tests/test_run_transport_env.py +672 -0
  755. brigade_cli-0.27.0/tests/test_run_transport_recovery.py +504 -0
  756. brigade_cli-0.27.0/tests/test_run_worktree.py +302 -0
  757. brigade_cli-0.27.0/tests/test_runbook_cmd.py +631 -0
  758. brigade_cli-0.27.0/tests/test_runguard.py +2509 -0
  759. brigade_cli-0.27.0/tests/test_runguard_wait.py +98 -0
  760. brigade_cli-0.27.0/tests/test_runs_cmd.py +4496 -0
  761. brigade_cli-0.27.0/tests/test_runs_diff.py +612 -0
  762. brigade_cli-0.27.0/tests/test_runs_json_contracts.py +794 -0
  763. brigade_cli-0.27.0/tests/test_runs_serve.py +793 -0
  764. brigade_cli-0.27.0/tests/test_runs_watch.py +353 -0
  765. brigade_cli-0.27.0/tests/test_scanner_runs_dir_adoption.py +410 -0
  766. brigade_cli-0.27.0/tests/test_seat_health.py +379 -0
  767. brigade_cli-0.27.0/tests/test_seat_health_policy.py +261 -0
  768. brigade_cli-0.27.0/tests/test_security_cmd.py +3538 -0
  769. brigade_cli-0.27.0/tests/test_size_ratchet_baseline.py +94 -0
  770. brigade_cli-0.27.0/tests/test_skill_obligations_audit.py +619 -0
  771. brigade_cli-0.27.0/tests/test_skills_cmd.py +3765 -0
  772. brigade_cli-0.27.0/tests/test_skills_cmd_facade.py +113 -0
  773. brigade_cli-0.27.0/tests/test_stations_verify.py +689 -0
  774. brigade_cli-0.27.0/tests/test_template_profiles.py +283 -0
  775. brigade_cli-0.27.0/tests/test_toml_compat.py +137 -0
  776. brigade_cli-0.27.0/tests/test_trust_capability.py +59 -0
  777. brigade_cli-0.27.0/tests/test_untrusted.py +166 -0
  778. brigade_cli-0.27.0/tests/test_update_cmd.py +1030 -0
  779. brigade_cli-0.27.0/tests/test_update_notify.py +363 -0
  780. brigade_cli-0.27.0/tests/test_verification_contract.py +237 -0
  781. brigade_cli-0.27.0/tests/test_verify_brigade_skill.py +619 -0
  782. brigade_cli-0.27.0/tests/test_verify_manifest_tracked.py +132 -0
  783. brigade_cli-0.27.0/tests/test_verify_script.py +298 -0
  784. brigade_cli-0.27.0/tests/test_verify_trial.py +805 -0
  785. brigade_cli-0.27.0/tests/test_work_cmd_campaign.py +787 -0
  786. brigade_cli-0.27.0/tests/test_work_cmd_claim.py +703 -0
  787. brigade_cli-0.27.0/tests/test_work_cmd_dispatch_annotations.py +211 -0
  788. brigade_cli-0.27.0/tests/test_work_cmd_edges.py +584 -0
  789. brigade_cli-0.27.0/tests/test_work_cmd_footprint.py +247 -0
  790. brigade_cli-0.27.0/tests/test_work_cmd_imports.py +4930 -0
  791. brigade_cli-0.27.0/tests/test_work_cmd_ledger.py +2106 -0
  792. brigade_cli-0.27.0/tests/test_work_cmd_ledger_integrity.py +267 -0
  793. brigade_cli-0.27.0/tests/test_work_cmd_partition.py +254 -0
  794. brigade_cli-0.27.0/tests/test_work_cmd_scanners.py +5537 -0
  795. brigade_cli-0.27.0/tests/test_work_cmd_services.py +3772 -0
  796. brigade_cli-0.27.0/tests/test_work_cmd_session.py +2320 -0
  797. brigade_cli-0.27.0/tests/test_work_cmd_sweeps.py +805 -0
  798. brigade_cli-0.27.0/tests/test_work_cmd_verification.py +3765 -0
  799. brigade_cli-0.27.0/tests/test_work_cmd_work_graph_hardening.py +918 -0
  800. brigade_cli-0.27.0/tests/test_work_import_inbox_windows.py +341 -0
  801. brigade_cli-0.27.0/tests/test_work_import_provenance_stamp.py +2779 -0
  802. brigade_cli-0.27.0/tests/test_work_run_archive.py +834 -0
  803. brigade_cli-0.27.0/tests/test_work_store_measurement.py +416 -0
  804. brigade_cli-0.27.0/tests/test_worker_events.py +395 -0
  805. brigade_cli-0.27.0/tests/test_worker_failure.py +318 -0
  806. brigade_cli-0.27.0/tests/test_worklore_brigade.py +1867 -0
  807. brigade_cli-0.27.0/tests/test_worklore_client.py +658 -0
  808. brigade_cli-0.27.0/tests/test_worklore_github.py +1568 -0
  809. brigade_cli-0.27.0/tests/test_worklore_http.py +1314 -0
  810. brigade_cli-0.27.0/tests/test_worklore_store.py +2729 -0
  811. brigade_cli-0.27.0/tests/test_worklore_validate.py +175 -0
  812. brigade_cli-0.26.1/PKG-INFO +0 -349
  813. brigade_cli-0.26.1/QUICKSTART.md +0 -295
  814. brigade_cli-0.26.1/README.md +0 -304
  815. brigade_cli-0.26.1/THIRD_PARTY_NOTICES.md +0 -66
  816. brigade_cli-0.26.1/pyproject.toml +0 -125
  817. brigade_cli-0.26.1/src/brigade/__init__.py +0 -3
  818. brigade_cli-0.26.1/src/brigade/aboyeur.py +0 -4304
  819. brigade_cli-0.26.1/src/brigade/acpx_adapter.py +0 -643
  820. brigade_cli-0.26.1/src/brigade/agents.py +0 -1359
  821. brigade_cli-0.26.1/src/brigade/center_cmd/actions.py +0 -534
  822. brigade_cli-0.26.1/src/brigade/center_cmd/core.py +0 -1005
  823. brigade_cli-0.26.1/src/brigade/center_cmd/readiness.py +0 -524
  824. brigade_cli-0.26.1/src/brigade/center_cmd/report_review_ops.py +0 -405
  825. brigade_cli-0.26.1/src/brigade/center_cmd/reports.py +0 -684
  826. brigade_cli-0.26.1/src/brigade/center_cmd/schema_ops.py +0 -565
  827. brigade_cli-0.26.1/src/brigade/center_cmd/serve.py +0 -312
  828. brigade_cli-0.26.1/src/brigade/chat_cmd.py +0 -809
  829. brigade_cli-0.26.1/src/brigade/claude_hooks/classify.py +0 -123
  830. brigade_cli-0.26.1/src/brigade/claude_hooks/envelope.py +0 -342
  831. brigade_cli-0.26.1/src/brigade/claude_hooks/install_cmd.py +0 -433
  832. brigade_cli-0.26.1/src/brigade/claude_hooks/package.py +0 -181
  833. brigade_cli-0.26.1/src/brigade/claude_hooks/paths.py +0 -17
  834. brigade_cli-0.26.1/src/brigade/claude_hooks/runtime.py +0 -2311
  835. brigade_cli-0.26.1/src/brigade/cli/__init__.py +0 -247
  836. brigade_cli-0.26.1/src/brigade/cli/_common.py +0 -119
  837. brigade_cli-0.26.1/src/brigade/cli/center.py +0 -345
  838. brigade_cli-0.26.1/src/brigade/cli/code.py +0 -50
  839. brigade_cli-0.26.1/src/brigade/cli/context.py +0 -87
  840. brigade_cli-0.26.1/src/brigade/cli/dogfood.py +0 -90
  841. brigade_cli-0.26.1/src/brigade/cli/evidence.py +0 -95
  842. brigade_cli-0.26.1/src/brigade/cli/handoff.py +0 -398
  843. brigade_cli-0.26.1/src/brigade/cli/harness.py +0 -204
  844. brigade_cli-0.26.1/src/brigade/cli/init.py +0 -131
  845. brigade_cli-0.26.1/src/brigade/cli/mcp.py +0 -224
  846. brigade_cli-0.26.1/src/brigade/cli/memory.py +0 -212
  847. brigade_cli-0.26.1/src/brigade/cli/model.py +0 -125
  848. brigade_cli-0.26.1/src/brigade/cli/operator.py +0 -483
  849. brigade_cli-0.26.1/src/brigade/cli/receipts.py +0 -77
  850. brigade_cli-0.26.1/src/brigade/cli/repos.py +0 -969
  851. brigade_cli-0.26.1/src/brigade/cli/research.py +0 -183
  852. brigade_cli-0.26.1/src/brigade/cli/roadmap.py +0 -58
  853. brigade_cli-0.26.1/src/brigade/cli/run.py +0 -1014
  854. brigade_cli-0.26.1/src/brigade/cli/runs.py +0 -445
  855. brigade_cli-0.26.1/src/brigade/cli/security.py +0 -231
  856. brigade_cli-0.26.1/src/brigade/cli/skills.py +0 -332
  857. brigade_cli-0.26.1/src/brigade/cli/work/dispatching.py +0 -867
  858. brigade_cli-0.26.1/src/brigade/cli/work/phases.py +0 -704
  859. brigade_cli-0.26.1/src/brigade/cli/work/registration.py +0 -942
  860. brigade_cli-0.26.1/src/brigade/code_cmd.py +0 -121
  861. brigade_cli-0.26.1/src/brigade/codex_appserver.py +0 -438
  862. brigade_cli-0.26.1/src/brigade/codex_cloud.py +0 -181
  863. brigade_cli-0.26.1/src/brigade/component_paths.py +0 -144
  864. brigade_cli-0.26.1/src/brigade/config.py +0 -205
  865. brigade_cli-0.26.1/src/brigade/context_cmd.py +0 -717
  866. brigade_cli-0.26.1/src/brigade/cursor_user_cmd.py +0 -619
  867. brigade_cli-0.26.1/src/brigade/daily_cmd/approvals.py +0 -583
  868. brigade_cli-0.26.1/src/brigade/daily_cmd/candidates.py +0 -861
  869. brigade_cli-0.26.1/src/brigade/daily_cmd/closeout_ops.py +0 -207
  870. brigade_cli-0.26.1/src/brigade/daily_cmd/config.py +0 -535
  871. brigade_cli-0.26.1/src/brigade/daily_cmd/hardening.py +0 -778
  872. brigade_cli-0.26.1/src/brigade/daily_cmd/run_loop.py +0 -489
  873. brigade_cli-0.26.1/src/brigade/daily_cmd/status_plan.py +0 -490
  874. brigade_cli-0.26.1/src/brigade/daily_cmd/telemetry_ops.py +0 -760
  875. brigade_cli-0.26.1/src/brigade/doctor.py +0 -1714
  876. brigade_cli-0.26.1/src/brigade/dogfood_cmd.py +0 -559
  877. brigade_cli-0.26.1/src/brigade/evidence_brief.py +0 -212
  878. brigade_cli-0.26.1/src/brigade/evidence_cmd.py +0 -755
  879. brigade_cli-0.26.1/src/brigade/evidence_runtime.py +0 -302
  880. brigade_cli-0.26.1/src/brigade/fixtures/trust-policy.v1.json +0 -12
  881. brigade_cli-0.26.1/src/brigade/fragments.py +0 -58
  882. brigade_cli-0.26.1/src/brigade/friction_cmd.py +0 -1181
  883. brigade_cli-0.26.1/src/brigade/graphtrail_delta.py +0 -640
  884. brigade_cli-0.26.1/src/brigade/guard/audit.py +0 -219
  885. brigade_cli-0.26.1/src/brigade/guard/baseline.py +0 -237
  886. brigade_cli-0.26.1/src/brigade/guard/cli.py +0 -359
  887. brigade_cli-0.26.1/src/brigade/guard/engine.py +0 -317
  888. brigade_cli-0.26.1/src/brigade/guard/rules.py +0 -183
  889. brigade_cli-0.26.1/src/brigade/handoff_cmd/drafts.py +0 -1098
  890. brigade_cli-0.26.1/src/brigade/handoff_cmd/inspect_ops.py +0 -331
  891. brigade_cli-0.26.1/src/brigade/handoff_cmd/issue_ops.py +0 -748
  892. brigade_cli-0.26.1/src/brigade/handoff_cmd/linting.py +0 -384
  893. brigade_cli-0.26.1/src/brigade/handoff_cmd/migrate_ops.py +0 -135
  894. brigade_cli-0.26.1/src/brigade/handoff_cmd/models.py +0 -275
  895. brigade_cli-0.26.1/src/brigade/handoff_cmd/receipts.py +0 -377
  896. brigade_cli-0.26.1/src/brigade/handoff_cmd/sources.py +0 -550
  897. brigade_cli-0.26.1/src/brigade/harness_profile_cmd.py +0 -1948
  898. brigade_cli-0.26.1/src/brigade/harness_profiles.py +0 -184
  899. brigade_cli-0.26.1/src/brigade/ingest.py +0 -395
  900. brigade_cli-0.26.1/src/brigade/install.py +0 -479
  901. brigade_cli-0.26.1/src/brigade/learn_cmd.py +0 -1269
  902. brigade_cli-0.26.1/src/brigade/localio.py +0 -230
  903. brigade_cli-0.26.1/src/brigade/managed.py +0 -656
  904. brigade_cli-0.26.1/src/brigade/managed_block.py +0 -944
  905. brigade_cli-0.26.1/src/brigade/mcp_cmd.py +0 -1005
  906. brigade_cli-0.26.1/src/brigade/memory_cmd.py +0 -1691
  907. brigade_cli-0.26.1/src/brigade/model_inventory.py +0 -296
  908. brigade_cli-0.26.1/src/brigade/model_trials.py +0 -823
  909. brigade_cli-0.26.1/src/brigade/operator_cmd/adoption.py +0 -422
  910. brigade_cli-0.26.1/src/brigade/operator_cmd/health.py +0 -538
  911. brigade_cli-0.26.1/src/brigade/operator_cmd/lifecycle.py +0 -1344
  912. brigade_cli-0.26.1/src/brigade/operator_cmd/migration.py +0 -589
  913. brigade_cli-0.26.1/src/brigade/operator_cmd/surfaces.py +0 -1045
  914. brigade_cli-0.26.1/src/brigade/outcome.py +0 -561
  915. brigade_cli-0.26.1/src/brigade/outcome_cmd.py +0 -2495
  916. brigade_cli-0.26.1/src/brigade/phases_cmd/checks_actions.py +0 -1851
  917. brigade_cli-0.26.1/src/brigade/phases_cmd/session_lifecycle.py +0 -1150
  918. brigade_cli-0.26.1/src/brigade/phases_cmd/session_ops.py +0 -1690
  919. brigade_cli-0.26.1/src/brigade/proc.py +0 -426
  920. brigade_cli-0.26.1/src/brigade/projects_cmd.py +0 -692
  921. brigade_cli-0.26.1/src/brigade/provenance.py +0 -388
  922. brigade_cli-0.26.1/src/brigade/receipt_schema.py +0 -93
  923. brigade_cli-0.26.1/src/brigade/receipts_cmd.py +0 -1802
  924. brigade_cli-0.26.1/src/brigade/release_cmd/candidate.py +0 -718
  925. brigade_cli-0.26.1/src/brigade/release_cmd/candidate_audit_ops.py +0 -612
  926. brigade_cli-0.26.1/src/brigade/release_cmd/ci.py +0 -396
  927. brigade_cli-0.26.1/src/brigade/release_cmd/commands.py +0 -121
  928. brigade_cli-0.26.1/src/brigade/release_cmd/evidence.py +0 -733
  929. brigade_cli-0.26.1/src/brigade/release_cmd/install_smoke.py +0 -324
  930. brigade_cli-0.26.1/src/brigade/release_cmd/paths.py +0 -341
  931. brigade_cli-0.26.1/src/brigade/release_cmd/schema_ops.py +0 -223
  932. brigade_cli-0.26.1/src/brigade/repos_cmd/actions_dispatch.py +0 -888
  933. brigade_cli-0.26.1/src/brigade/repos_cmd/fleet.py +0 -1266
  934. brigade_cli-0.26.1/src/brigade/repos_cmd/fleet_health.py +0 -819
  935. brigade_cli-0.26.1/src/brigade/repos_cmd/release_ops.py +0 -1801
  936. brigade_cli-0.26.1/src/brigade/repos_cmd/sweeps.py +0 -1093
  937. brigade_cli-0.26.1/src/brigade/research/config.py +0 -35
  938. brigade_cli-0.26.1/src/brigade/research/engine.py +0 -230
  939. brigade_cli-0.26.1/src/brigade/research/extract.py +0 -71
  940. brigade_cli-0.26.1/src/brigade/research/handoff.py +0 -59
  941. brigade_cli-0.26.1/src/brigade/research/llm.py +0 -84
  942. brigade_cli-0.26.1/src/brigade/research/registry.py +0 -126
  943. brigade_cli-0.26.1/src/brigade/research/report.py +0 -90
  944. brigade_cli-0.26.1/src/brigade/research/sources/web.py +0 -200
  945. brigade_cli-0.26.1/src/brigade/research/types.py +0 -56
  946. brigade_cli-0.26.1/src/brigade/research_cmd.py +0 -868
  947. brigade_cli-0.26.1/src/brigade/result_integrity.py +0 -246
  948. brigade_cli-0.26.1/src/brigade/roadmap_cmd.py +0 -994
  949. brigade_cli-0.26.1/src/brigade/roster.py +0 -832
  950. brigade_cli-0.26.1/src/brigade/roster_cmd.py +0 -491
  951. brigade_cli-0.26.1/src/brigade/run_audit.py +0 -1123
  952. brigade_cli-0.26.1/src/brigade/run_checkpoint.py +0 -1291
  953. brigade_cli-0.26.1/src/brigade/run_control.py +0 -474
  954. brigade_cli-0.26.1/src/brigade/run_events.py +0 -475
  955. brigade_cli-0.26.1/src/brigade/run_journal.py +0 -1054
  956. brigade_cli-0.26.1/src/brigade/run_lifecycle.py +0 -917
  957. brigade_cli-0.26.1/src/brigade/run_projector.py +0 -398
  958. brigade_cli-0.26.1/src/brigade/run_receipts.py +0 -243
  959. brigade_cli-0.26.1/src/brigade/run_redaction.py +0 -2802
  960. brigade_cli-0.26.1/src/brigade/run_resume.py +0 -495
  961. brigade_cli-0.26.1/src/brigade/run_shadow.py +0 -744
  962. brigade_cli-0.26.1/src/brigade/run_transport.py +0 -1016
  963. brigade_cli-0.26.1/src/brigade/runbook_cmd.py +0 -786
  964. brigade_cli-0.26.1/src/brigade/runguard.py +0 -1342
  965. brigade_cli-0.26.1/src/brigade/runs_cmd.py +0 -2150
  966. brigade_cli-0.26.1/src/brigade/seat_health.py +0 -743
  967. brigade_cli-0.26.1/src/brigade/security_cmd/commands.py +0 -555
  968. brigade_cli-0.26.1/src/brigade/security_cmd/config.py +0 -404
  969. brigade_cli-0.26.1/src/brigade/security_cmd/enrichment.py +0 -426
  970. brigade_cli-0.26.1/src/brigade/security_cmd/models.py +0 -756
  971. brigade_cli-0.26.1/src/brigade/security_cmd/reports.py +0 -377
  972. brigade_cli-0.26.1/src/brigade/security_cmd/scan_detectors.py +0 -706
  973. brigade_cli-0.26.1/src/brigade/security_cmd/scan_engine.py +0 -1325
  974. brigade_cli-0.26.1/src/brigade/security_cmd/suppression.py +0 -396
  975. brigade_cli-0.26.1/src/brigade/security_cmd/template_audit_ops.py +0 -241
  976. brigade_cli-0.26.1/src/brigade/skills_cmd.py +0 -2921
  977. brigade_cli-0.26.1/src/brigade/telemetry_export.py +0 -500
  978. brigade_cli-0.26.1/src/brigade/templates/components/manifest-v1.json +0 -214
  979. brigade_cli-0.26.1/src/brigade/templates/depth/workspace.json +0 -39
  980. brigade_cli-0.26.1/src/brigade/templates/grok/hooks/brigade-work.sh +0 -262
  981. brigade_cli-0.26.1/src/brigade/templates/hermes/memory-handoff.harness.json +0 -36
  982. brigade_cli-0.26.1/src/brigade/templates/hermes/model-lanes.harness.json +0 -17
  983. brigade_cli-0.26.1/src/brigade/templates/hermes/workspace.harness.json +0 -30
  984. brigade_cli-0.26.1/src/brigade/templates/memory/chat-memory-sweep.example.json +0 -131
  985. brigade_cli-0.26.1/src/brigade/templates/memory/memory-care.example.json +0 -11
  986. brigade_cli-0.26.1/src/brigade/templates/policies/personal.json +0 -28
  987. brigade_cli-0.26.1/src/brigade/templates/policies/public-content.json +0 -28
  988. brigade_cli-0.26.1/src/brigade/templates/policies/public-repo.json +0 -27
  989. brigade_cli-0.26.1/src/brigade/templates/rosters/review-heavy.toml +0 -59
  990. brigade_cli-0.26.1/src/brigade/templates/skills/brigade-work/CHANGELOG.md +0 -5
  991. brigade_cli-0.26.1/src/brigade/templates/skills/brigade-work/skill.json +0 -7
  992. brigade_cli-0.26.1/src/brigade/templates/skills/card-refresh/CHANGELOG.md +0 -6
  993. brigade_cli-0.26.1/src/brigade/templates/skills/card-refresh/SKILL.md +0 -68
  994. brigade_cli-0.26.1/src/brigade/templates/skills/card-refresh/skill.json +0 -14
  995. brigade_cli-0.26.1/src/brigade/templates/skills/forward-plan/CHANGELOG.md +0 -12
  996. brigade_cli-0.26.1/src/brigade/templates/skills/forward-plan/SKILL.md +0 -190
  997. brigade_cli-0.26.1/src/brigade/templates/skills/forward-plan/plan.template.json +0 -70
  998. brigade_cli-0.26.1/src/brigade/templates/skills/forward-plan/skill.json +0 -17
  999. brigade_cli-0.26.1/src/brigade/templates/skills/handoff-inbox-drain/CHANGELOG.md +0 -6
  1000. brigade_cli-0.26.1/src/brigade/templates/skills/handoff-inbox-drain/SKILL.md +0 -68
  1001. brigade_cli-0.26.1/src/brigade/templates/skills/handoff-inbox-drain/skill.json +0 -17
  1002. brigade_cli-0.26.1/src/brigade/templates/workspace/AGENTS.md +0 -189
  1003. brigade_cli-0.26.1/src/brigade/templates/workspace/MEMORY.md +0 -102
  1004. brigade_cli-0.26.1/src/brigade/toml_compat.py +0 -231
  1005. brigade_cli-0.26.1/src/brigade/tools_cmd/config.py +0 -256
  1006. brigade_cli-0.26.1/src/brigade/tools_cmd/constants.py +0 -460
  1007. brigade_cli-0.26.1/src/brigade/tools_cmd/helpers.py +0 -277
  1008. brigade_cli-0.26.1/src/brigade/tools_cmd/status.py +0 -205
  1009. brigade_cli-0.26.1/src/brigade/untrusted.py +0 -231
  1010. brigade_cli-0.26.1/src/brigade/update_cmd.py +0 -625
  1011. brigade_cli-0.26.1/src/brigade/verify_manifest.py +0 -420
  1012. brigade_cli-0.26.1/src/brigade/verify_trial.py +0 -662
  1013. brigade_cli-0.26.1/src/brigade/work_cmd/__init__.py +0 -439
  1014. brigade_cli-0.26.1/src/brigade/work_cmd/backup.py +0 -174
  1015. brigade_cli-0.26.1/src/brigade/work_cmd/constants.py +0 -527
  1016. brigade_cli-0.26.1/src/brigade/work_cmd/edges.py +0 -832
  1017. brigade_cli-0.26.1/src/brigade/work_cmd/footprint.py +0 -419
  1018. brigade_cli-0.26.1/src/brigade/work_cmd/helpers.py +0 -351
  1019. brigade_cli-0.26.1/src/brigade/work_cmd/imports.py +0 -1017
  1020. brigade_cli-0.26.1/src/brigade/work_cmd/ledger.py +0 -2036
  1021. brigade_cli-0.26.1/src/brigade/work_cmd/reviews.py +0 -1332
  1022. brigade_cli-0.26.1/src/brigade/work_cmd/scanners.py +0 -1215
  1023. brigade_cli-0.26.1/src/brigade/work_cmd/services.py +0 -1110
  1024. brigade_cli-0.26.1/src/brigade/work_cmd/session/briefing.py +0 -1129
  1025. brigade_cli-0.26.1/src/brigade/work_cmd/session/lifecycle.py +0 -701
  1026. brigade_cli-0.26.1/src/brigade/work_cmd/session/run_status.py +0 -786
  1027. brigade_cli-0.26.1/src/brigade/work_cmd/session/task_ops.py +0 -929
  1028. brigade_cli-0.26.1/src/brigade/work_cmd/sweeps.py +0 -771
  1029. brigade_cli-0.26.1/src/brigade/work_cmd/verification.py +0 -2240
  1030. brigade_cli-0.26.1/src/brigade/work_run_archive.py +0 -837
  1031. brigade_cli-0.26.1/src/brigade/worker_failure.py +0 -561
  1032. brigade_cli-0.26.1/src/brigade/workflow_cmd.py +0 -735
  1033. brigade_cli-0.26.1/src/brigade_cli.egg-info/PKG-INFO +0 -349
  1034. brigade_cli-0.26.1/src/brigade_cli.egg-info/SOURCES.txt +0 -753
  1035. brigade_cli-0.26.1/src/brigade_cli.egg-info/requires.txt +0 -9
  1036. brigade_cli-0.26.1/tests/test_aboyeur.py +0 -6476
  1037. brigade_cli-0.26.1/tests/test_aboyeur_orchestrator_health_routing.py +0 -322
  1038. brigade_cli-0.26.1/tests/test_aboyeur_seat_health_probe.py +0 -137
  1039. brigade_cli-0.26.1/tests/test_agents.py +0 -2137
  1040. brigade_cli-0.26.1/tests/test_agents_model_pin.py +0 -191
  1041. brigade_cli-0.26.1/tests/test_agents_oracle.py +0 -169
  1042. brigade_cli-0.26.1/tests/test_agents_windows_executable.py +0 -223
  1043. brigade_cli-0.26.1/tests/test_center_actions_cmd.py +0 -378
  1044. brigade_cli-0.26.1/tests/test_center_readiness_cmd.py +0 -127
  1045. brigade_cli-0.26.1/tests/test_center_report_cmd.py +0 -350
  1046. brigade_cli-0.26.1/tests/test_center_serve.py +0 -237
  1047. brigade_cli-0.26.1/tests/test_ci_workflow.py +0 -784
  1048. brigade_cli-0.26.1/tests/test_claude_hooks_doctor.py +0 -316
  1049. brigade_cli-0.26.1/tests/test_claude_hooks_envelope.py +0 -248
  1050. brigade_cli-0.26.1/tests/test_claude_hooks_runtime.py +0 -2114
  1051. brigade_cli-0.26.1/tests/test_claude_hooks_settings_merge.py +0 -640
  1052. brigade_cli-0.26.1/tests/test_claude_hooks_user_scope.py +0 -227
  1053. brigade_cli-0.26.1/tests/test_code_verbs_and_target.py +0 -200
  1054. brigade_cli-0.26.1/tests/test_codex_appserver.py +0 -249
  1055. brigade_cli-0.26.1/tests/test_codex_cloud.py +0 -360
  1056. brigade_cli-0.26.1/tests/test_component_install.py +0 -2532
  1057. brigade_cli-0.26.1/tests/test_component_manifest.py +0 -935
  1058. brigade_cli-0.26.1/tests/test_component_paths.py +0 -126
  1059. brigade_cli-0.26.1/tests/test_config.py +0 -325
  1060. brigade_cli-0.26.1/tests/test_context_cmd.py +0 -83
  1061. brigade_cli-0.26.1/tests/test_context_learning_closeout_cmd.py +0 -1027
  1062. brigade_cli-0.26.1/tests/test_cursor_user_cmd.py +0 -342
  1063. brigade_cli-0.26.1/tests/test_daily_driver_cmd.py +0 -1683
  1064. brigade_cli-0.26.1/tests/test_doctor.py +0 -2613
  1065. brigade_cli-0.26.1/tests/test_dogfood_cmd.py +0 -580
  1066. brigade_cli-0.26.1/tests/test_evidence_branded_surface.py +0 -189
  1067. brigade_cli-0.26.1/tests/test_evidence_cmd.py +0 -426
  1068. brigade_cli-0.26.1/tests/test_evidence_runtime.py +0 -210
  1069. brigade_cli-0.26.1/tests/test_fleet_action_dispatch_cmd.py +0 -359
  1070. brigade_cli-0.26.1/tests/test_forward_plan_skill.py +0 -228
  1071. brigade_cli-0.26.1/tests/test_gitignore.py +0 -299
  1072. brigade_cli-0.26.1/tests/test_graphtrail_delta.py +0 -55
  1073. brigade_cli-0.26.1/tests/test_grok_hook_runtime.py +0 -165
  1074. brigade_cli-0.26.1/tests/test_handoff_cmd.py +0 -2310
  1075. brigade_cli-0.26.1/tests/test_harness_user_scope.py +0 -797
  1076. brigade_cli-0.26.1/tests/test_harness_user_scope_slice2.py +0 -463
  1077. brigade_cli-0.26.1/tests/test_ingest.py +0 -837
  1078. brigade_cli-0.26.1/tests/test_init.py +0 -395
  1079. brigade_cli-0.26.1/tests/test_issue266_work_status_memory.py +0 -258
  1080. brigade_cli-0.26.1/tests/test_localio.py +0 -193
  1081. brigade_cli-0.26.1/tests/test_managed.py +0 -792
  1082. brigade_cli-0.26.1/tests/test_managed_block.py +0 -282
  1083. brigade_cli-0.26.1/tests/test_memory_care_skills.py +0 -189
  1084. brigade_cli-0.26.1/tests/test_memory_cmd.py +0 -1312
  1085. brigade_cli-0.26.1/tests/test_memory_search_mcp.py +0 -89
  1086. brigade_cli-0.26.1/tests/test_model_inventory.py +0 -375
  1087. brigade_cli-0.26.1/tests/test_model_trials.py +0 -822
  1088. brigade_cli-0.26.1/tests/test_operator_cmd.py +0 -1677
  1089. brigade_cli-0.26.1/tests/test_outcome.py +0 -386
  1090. brigade_cli-0.26.1/tests/test_outcome_backfill_scorecard.py +0 -325
  1091. brigade_cli-0.26.1/tests/test_outcome_cmd.py +0 -2776
  1092. brigade_cli-0.26.1/tests/test_outcome_reused_receipt_dedup.py +0 -124
  1093. brigade_cli-0.26.1/tests/test_phase257_facades.py +0 -904
  1094. brigade_cli-0.26.1/tests/test_pre_push_hook.py +0 -494
  1095. brigade_cli-0.26.1/tests/test_proc.py +0 -490
  1096. brigade_cli-0.26.1/tests/test_provenance_envelope.py +0 -218
  1097. brigade_cli-0.26.1/tests/test_publish_workflow.py +0 -391
  1098. brigade_cli-0.26.1/tests/test_published_artifact_acceptance.py +0 -634
  1099. brigade_cli-0.26.1/tests/test_receipt_schema_audit.py +0 -427
  1100. brigade_cli-0.26.1/tests/test_receipt_signing.py +0 -94
  1101. brigade_cli-0.26.1/tests/test_receipts_cmd.py +0 -1911
  1102. brigade_cli-0.26.1/tests/test_release_cmd.py +0 -1379
  1103. brigade_cli-0.26.1/tests/test_release_metadata.py +0 -122
  1104. brigade_cli-0.26.1/tests/test_report_review_closeout_cmd.py +0 -390
  1105. brigade_cli-0.26.1/tests/test_repos_actions_cmd.py +0 -251
  1106. brigade_cli-0.26.1/tests/test_repos_sweep_health_cmd.py +0 -398
  1107. brigade_cli-0.26.1/tests/test_research_cmd.py +0 -354
  1108. brigade_cli-0.26.1/tests/test_research_config.py +0 -26
  1109. brigade_cli-0.26.1/tests/test_research_engine.py +0 -105
  1110. brigade_cli-0.26.1/tests/test_research_extract.py +0 -47
  1111. brigade_cli-0.26.1/tests/test_research_handoff.py +0 -27
  1112. brigade_cli-0.26.1/tests/test_research_llm.py +0 -154
  1113. brigade_cli-0.26.1/tests/test_research_registry.py +0 -30
  1114. brigade_cli-0.26.1/tests/test_research_report.py +0 -26
  1115. brigade_cli-0.26.1/tests/test_research_types.py +0 -14
  1116. brigade_cli-0.26.1/tests/test_research_web.py +0 -194
  1117. brigade_cli-0.26.1/tests/test_roadmap_cmd.py +0 -315
  1118. brigade_cli-0.26.1/tests/test_roadmap_inventory_cmd.py +0 -88
  1119. brigade_cli-0.26.1/tests/test_roster.py +0 -1590
  1120. brigade_cli-0.26.1/tests/test_roster_cmd.py +0 -965
  1121. brigade_cli-0.26.1/tests/test_run_checkpoint.py +0 -3346
  1122. brigade_cli-0.26.1/tests/test_run_cli.py +0 -3290
  1123. brigade_cli-0.26.1/tests/test_run_detach.py +0 -605
  1124. brigade_cli-0.26.1/tests/test_run_events.py +0 -399
  1125. brigade_cli-0.26.1/tests/test_run_journal.py +0 -2386
  1126. brigade_cli-0.26.1/tests/test_run_lifecycle.py +0 -2794
  1127. brigade_cli-0.26.1/tests/test_run_projector.py +0 -787
  1128. brigade_cli-0.26.1/tests/test_run_redaction.py +0 -2493
  1129. brigade_cli-0.26.1/tests/test_run_resume.py +0 -876
  1130. brigade_cli-0.26.1/tests/test_run_shadow.py +0 -2225
  1131. brigade_cli-0.26.1/tests/test_run_transport_env.py +0 -618
  1132. brigade_cli-0.26.1/tests/test_run_transport_recovery.py +0 -389
  1133. brigade_cli-0.26.1/tests/test_runbook_cmd.py +0 -594
  1134. brigade_cli-0.26.1/tests/test_runguard.py +0 -2447
  1135. brigade_cli-0.26.1/tests/test_runs_cmd.py +0 -3264
  1136. brigade_cli-0.26.1/tests/test_runs_watch.py +0 -155
  1137. brigade_cli-0.26.1/tests/test_seat_health.py +0 -195
  1138. brigade_cli-0.26.1/tests/test_security_cmd.py +0 -3231
  1139. brigade_cli-0.26.1/tests/test_skills_cmd.py +0 -1671
  1140. brigade_cli-0.26.1/tests/test_stations_verify.py +0 -684
  1141. brigade_cli-0.26.1/tests/test_toml_compat.py +0 -74
  1142. brigade_cli-0.26.1/tests/test_untrusted.py +0 -120
  1143. brigade_cli-0.26.1/tests/test_update_cmd.py +0 -720
  1144. brigade_cli-0.26.1/tests/test_update_notify.py +0 -362
  1145. brigade_cli-0.26.1/tests/test_verify_script.py +0 -29
  1146. brigade_cli-0.26.1/tests/test_verify_trial.py +0 -715
  1147. brigade_cli-0.26.1/tests/test_work_cmd_claim.py +0 -399
  1148. brigade_cli-0.26.1/tests/test_work_cmd_edges.py +0 -572
  1149. brigade_cli-0.26.1/tests/test_work_cmd_footprint.py +0 -201
  1150. brigade_cli-0.26.1/tests/test_work_cmd_imports.py +0 -3350
  1151. brigade_cli-0.26.1/tests/test_work_cmd_ledger.py +0 -1067
  1152. brigade_cli-0.26.1/tests/test_work_cmd_scanners.py +0 -914
  1153. brigade_cli-0.26.1/tests/test_work_cmd_services.py +0 -3670
  1154. brigade_cli-0.26.1/tests/test_work_cmd_session.py +0 -1858
  1155. brigade_cli-0.26.1/tests/test_work_cmd_sweeps.py +0 -699
  1156. brigade_cli-0.26.1/tests/test_work_cmd_verification.py +0 -3402
  1157. brigade_cli-0.26.1/tests/test_work_run_archive.py +0 -301
  1158. brigade_cli-0.26.1/tests/test_worker_failure.py +0 -313
  1159. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/LICENSE +0 -0
  1160. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/MANIFEST.in +0 -0
  1161. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/setup.cfg +0 -0
  1162. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/__main__.py +0 -0
  1163. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/actionqueue.py +0 -0
  1164. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/add.py +0 -0
  1165. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/agent_skill_format.py +0 -0
  1166. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/budgets.py +0 -0
  1167. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/budgets_cmd.py +0 -0
  1168. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/center_cmd/__init__.py +0 -0
  1169. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/claude_hooks/__init__.py +0 -0
  1170. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/add.py +0 -0
  1171. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/budgets.py +0 -0
  1172. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/chat.py +0 -0
  1173. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/completions.py +0 -0
  1174. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/daily.py +0 -0
  1175. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/doctor.py +0 -0
  1176. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/extras.py +0 -0
  1177. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/friction.py +0 -0
  1178. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/guard.py +0 -0
  1179. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/handoff_template.py +0 -0
  1180. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/hermes_fragments.py +0 -0
  1181. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/ingest.py +0 -0
  1182. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/learn.py +0 -0
  1183. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/notifications.py +0 -0
  1184. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/openclaw_fragments.py +0 -0
  1185. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/outcome.py +0 -0
  1186. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/pantry.py +0 -0
  1187. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/profiles.py +0 -0
  1188. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/projects.py +0 -0
  1189. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/reconfigure.py +0 -0
  1190. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/release.py +0 -0
  1191. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/roster.py +0 -0
  1192. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/route.py +0 -0
  1193. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/runbook.py +0 -0
  1194. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/scrub.py +0 -0
  1195. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/search.py +0 -0
  1196. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/setup.py +0 -0
  1197. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/stations.py +0 -0
  1198. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/status.py +0 -0
  1199. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/tokens.py +0 -0
  1200. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/tools.py +0 -0
  1201. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/untrusted.py +0 -0
  1202. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/update.py +0 -0
  1203. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/version.py +0 -0
  1204. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/work/__init__.py +0 -0
  1205. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/cli/workflow.py +0 -0
  1206. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/code_references.py +0 -0
  1207. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/completions.py +0 -0
  1208. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/component_bins.py +0 -0
  1209. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/component_install.py +0 -0
  1210. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/component_manifest.py +0 -0
  1211. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/component_report.py +0 -0
  1212. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/component_state.py +0 -0
  1213. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/context_eval.py +0 -0
  1214. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/daily_cmd/__init__.py +0 -0
  1215. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/doctor_agent.py +0 -0
  1216. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/extras.py +0 -0
  1217. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/fixtures/provenance-envelope.v1.golden.json +0 -0
  1218. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/__init__.py +0 -0
  1219. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/__main__.py +0 -0
  1220. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/allowlist.py +0 -0
  1221. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/detectors/__init__.py +0 -0
  1222. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/detectors/opf.py +0 -0
  1223. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/examples/n8n-validation/blocked-local-service.json +0 -0
  1224. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/examples/n8n-validation/blocked-secret-token.json +0 -0
  1225. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/examples/n8n-validation/clean-blog-post.json +0 -0
  1226. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/examples/n8n-validation/clean-social-post.json +0 -0
  1227. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/examples/n8n-validation/warn-review-email.json +0 -0
  1228. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/git_commits.py +0 -0
  1229. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/git_scan.py +0 -0
  1230. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/n8n_advisory.py +0 -0
  1231. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/n8n_validate.py +0 -0
  1232. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/policies/in-house-repo.json +0 -0
  1233. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/policies/openclaw-message.json +0 -0
  1234. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/policies/pr-draft.json +0 -0
  1235. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/policies/public-content.json +0 -0
  1236. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/policies/public-repo.json +0 -0
  1237. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/policy.py +0 -0
  1238. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/pr_draft.py +0 -0
  1239. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/pr_prepare.py +0 -0
  1240. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/publish_check.py +0 -0
  1241. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/report.py +0 -0
  1242. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/rev_range.py +0 -0
  1243. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/guard/types.py +0 -0
  1244. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/handoff.py +0 -0
  1245. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/handoff_cmd/__init__.py +0 -0
  1246. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/handoff_cmd/readability.py +0 -0
  1247. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/handoff_content.py +0 -0
  1248. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/hermes_adapter.py +0 -0
  1249. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/managed_snapshot.py +0 -0
  1250. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/mcp_adapters.py +0 -0
  1251. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/mcp_runtime.py +0 -0
  1252. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/mcp_server.py +0 -0
  1253. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/memory_doctor/__init__.py +0 -0
  1254. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/memory_doctor/__main__.py +0 -0
  1255. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/memory_doctor/cli.py +0 -0
  1256. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/memory_doctor/compact.py +0 -0
  1257. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/memory_doctor/git.py +0 -0
  1258. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/memory_doctor/init_git.py +0 -0
  1259. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/memory_doctor/lint.py +0 -0
  1260. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/memory_doctor/parsing.py +0 -0
  1261. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/memory_doctor/paths.py +0 -0
  1262. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/memory_doctor/safety.py +0 -0
  1263. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/memory_doctor/status.py +0 -0
  1264. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/memory_doctor_cmd.py +0 -0
  1265. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/model_scorecard.py +0 -0
  1266. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/notifications_cmd.py +0 -0
  1267. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/operator_cmd/__init__.py +0 -0
  1268. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/operator_cmd/guide.py +0 -0
  1269. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/outcome_repair.py +0 -0
  1270. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/pantry_cmd.py +0 -0
  1271. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/pantry_compat.py +0 -0
  1272. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/phases_cmd/__init__.py +0 -0
  1273. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/phases_cmd/constants.py +0 -0
  1274. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/pi_mcp_bridge.py +0 -0
  1275. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/pi_mcp_cmd.py +0 -0
  1276. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/profiles.py +0 -0
  1277. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/profiles_cmd.py +0 -0
  1278. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/prompt.py +0 -0
  1279. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/py.typed +0 -0
  1280. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/receipt_signing.py +0 -0
  1281. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/reconfigure.py +0 -0
  1282. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/registry.py +0 -0
  1283. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/release_cmd/__init__.py +0 -0
  1284. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/release_cmd/version_guard.py +0 -0
  1285. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/release_version_sync.py +0 -0
  1286. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/render.py +0 -0
  1287. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/reportstore.py +0 -0
  1288. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/repos_cmd/__init__.py +0 -0
  1289. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/repos_cmd/adoption.py +0 -0
  1290. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/repos_cmd/constants.py +0 -0
  1291. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/repos_cmd/friction_fleet.py +0 -0
  1292. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/repos_cmd/release_train.py +0 -0
  1293. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/research/__init__.py +0 -0
  1294. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/research/sources/__init__.py +0 -0
  1295. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/research/sources/cli.py +0 -0
  1296. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/research/sources/local.py +0 -0
  1297. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/route_catalog.py +0 -0
  1298. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/route_policy.py +0 -0
  1299. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/route_receipts.py +0 -0
  1300. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/router.py +0 -0
  1301. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/run_control_journal.py +0 -0
  1302. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/run_event_cursor.py +0 -0
  1303. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/scorecard.py +0 -0
  1304. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/scrub.py +0 -0
  1305. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/search_cmd.py +0 -0
  1306. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/security_cmd/__init__.py +0 -0
  1307. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/selection.py +0 -0
  1308. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/station.py +0 -0
  1309. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/station_health.py +0 -0
  1310. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/station_manifest.py +0 -0
  1311. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/stations_cmd.py +0 -0
  1312. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/status.py +0 -0
  1313. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/adal/memory-handoffs/TEMPLATE.md +0 -0
  1314. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/aider/memory-handoffs/TEMPLATE.md +0 -0
  1315. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/amp/memory-handoffs/TEMPLATE.md +0 -0
  1316. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/antigravity/memory-handoffs/TEMPLATE.md +0 -0
  1317. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/claude/memory-handoffs/TEMPLATE.md +0 -0
  1318. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/codex/memory-handoffs/TEMPLATE.md +0 -0
  1319. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/continue/memory-handoffs/TEMPLATE.md +0 -0
  1320. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/copilot/memory-handoffs/TEMPLATE.md +0 -0
  1321. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/crush/memory-handoffs/TEMPLATE.md +0 -0
  1322. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/cursor/memory-handoffs/TEMPLATE.md +0 -0
  1323. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/depth/repo.json +0 -0
  1324. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/evals/adversarial/failed-verification/cases/acknowledge-broken-receipt.prompt.md +0 -0
  1325. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/evals/adversarial/failed-verification/cases/report-failing-tests.prompt.md +0 -0
  1326. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/evals/adversarial/failed-verification/manifest.json +0 -0
  1327. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/evals/adversarial/prompt-injection/cases/disregard-system-prompt.prompt.md +0 -0
  1328. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/evals/adversarial/prompt-injection/cases/fake-system-block.prompt.md +0 -0
  1329. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/evals/adversarial/prompt-injection/cases/handoff-lint-regression.prompt.md +0 -0
  1330. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/evals/adversarial/prompt-injection/fixtures/handoff-lint-regression.md +0 -0
  1331. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/evals/adversarial/prompt-injection/manifest.json +0 -0
  1332. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/evals/adversarial/unsafe-command/cases/refuse-destructive-shell.prompt.md +0 -0
  1333. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/evals/adversarial/unsafe-command/cases/refuse-force-push.prompt.md +0 -0
  1334. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/evals/adversarial/unsafe-command/manifest.json +0 -0
  1335. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/evals/adversarial/untrusted-evidence/cases/benign-quoted-payload.prompt.md +0 -0
  1336. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/evals/adversarial/untrusted-evidence/cases/hostile-tool-output.prompt.md +0 -0
  1337. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/evals/adversarial/untrusted-evidence/manifest.json +0 -0
  1338. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/generic/harness-adapter-checklist.md +0 -0
  1339. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/generic/memory-contract.md +0 -0
  1340. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/goose/memory-handoffs/TEMPLATE.md +0 -0
  1341. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/grok/hooks/brigade-work.json +0 -0
  1342. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/grok/memory-handoffs/TEMPLATE.md +0 -0
  1343. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/handoff/handoff-sources.example.json +0 -0
  1344. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/handoff/openclaw-ingest-receipt.example.json +0 -0
  1345. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/adal.json +0 -0
  1346. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/aider.json +0 -0
  1347. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/amp.json +0 -0
  1348. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/antigravity.json +0 -0
  1349. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/claude.json +0 -0
  1350. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/codex.json +0 -0
  1351. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/continue.json +0 -0
  1352. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/copilot.json +0 -0
  1353. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/crush.json +0 -0
  1354. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/cursor.json +0 -0
  1355. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/goose.json +0 -0
  1356. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/grok.json +0 -0
  1357. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/hermes.json +0 -0
  1358. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/kimi.json +0 -0
  1359. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/openclaw.json +0 -0
  1360. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/opencode.json +0 -0
  1361. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/openhands.json +0 -0
  1362. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/pi.json +0 -0
  1363. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/harnesses/qwen.json +0 -0
  1364. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/hermes/README.md +0 -0
  1365. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/hermes/memory-handoffs/TEMPLATE.md +0 -0
  1366. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/hooks/pre-push +0 -0
  1367. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/includes/publisher.json +0 -0
  1368. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/includes/repo-extras.json +0 -0
  1369. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/kimi/memory-handoffs/TEMPLATE.md +0 -0
  1370. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/memory/cards/backup-restic.md +0 -0
  1371. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/memory/cards/chat-surface-crawlers.md +0 -0
  1372. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/memory/cards/content-safety.md +0 -0
  1373. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/memory/cards/handoff-flow.md +0 -0
  1374. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/memory/cards/memory-architecture.md +0 -0
  1375. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/memory/cards/memory-care-staleness.md +0 -0
  1376. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/memory/cards/memory-scanner.md +0 -0
  1377. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/memory/cards/multi-workspace-handoff-admin.md +0 -0
  1378. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/memory/cards/obsidian-notes.md +0 -0
  1379. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/memory/cards/pipeline-standups.md +0 -0
  1380. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/memory/cards/token-glace-output-compaction.md +0 -0
  1381. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/memory-care/runbooks/daily-care-pass.json +0 -0
  1382. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/memory-care/runbooks/ingest-sweep.json +0 -0
  1383. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/memory-care/runbooks/weekly-outcome-ratchet.json +0 -0
  1384. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/openclaw/README.md +0 -0
  1385. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/openclaw/acp-escalation.openclaw.json +0 -0
  1386. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/openclaw/memory-sweep-cron.openclaw.json +0 -0
  1387. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/openclaw/model-aliases.openclaw.json +0 -0
  1388. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/openclaw/ollama-memory-search.openclaw.json +0 -0
  1389. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/opencode/memory-handoffs/TEMPLATE.md +0 -0
  1390. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/openhands/memory-handoffs/TEMPLATE.md +0 -0
  1391. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/pi/extensions/brigade-mcp-bridge.js +0 -0
  1392. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/pi/memory-handoffs/TEMPLATE.md +0 -0
  1393. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/qwen/memory-handoffs/TEMPLATE.md +0 -0
  1394. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/repo/AGENTS.md +0 -0
  1395. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/repo/CLAUDE.md +0 -0
  1396. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/repo/INSTALL_FOR_AGENTS.md +0 -0
  1397. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/rosters/budget-open-weight.toml +0 -0
  1398. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/rosters/full-multi-lane.toml +0 -0
  1399. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/rosters/minimal-single-cli.toml +0 -0
  1400. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/scripts/backup-restic.sh +0 -0
  1401. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/skills/brigade-work/SKILL.md +0 -0
  1402. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/skills/note/CHANGELOG.md +0 -0
  1403. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/skills/note/SKILL.md +0 -0
  1404. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/skills/note/skill.json +0 -0
  1405. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/skills/ultra-work-scout/CHANGELOG.md +0 -0
  1406. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/skills/ultra-work-scout/SKILL.md +0 -0
  1407. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/skills/ultra-work-scout/skill.json +0 -0
  1408. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/stations/managed-snapshot.json +0 -0
  1409. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/workspace/CLAUDE.md +0 -0
  1410. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/workspace/HEARTBEAT.md +0 -0
  1411. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/workspace/IDENTITY.md +0 -0
  1412. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/workspace/INSTALL_FOR_AGENTS.md +0 -0
  1413. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/workspace/SAFETY_RULES.md +0 -0
  1414. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/workspace/SOUL.md +0 -0
  1415. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/workspace/TOOLS.md +0 -0
  1416. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/workspace/USER.md +0 -0
  1417. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/workspace/rules/acceptance-driven-work.md +0 -0
  1418. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates/workspace/rules/issue-tdd-loop.md +0 -0
  1419. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/templates.py +0 -0
  1420. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/tokens_cmd.py +0 -0
  1421. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/tools_cmd/__init__.py +0 -0
  1422. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/tools_cmd/calls.py +0 -0
  1423. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/tools_cmd/catalog_health.py +0 -0
  1424. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/tools_cmd/catalog_manage.py +0 -0
  1425. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/tools_cmd/checkpoint_store.py +0 -0
  1426. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/tools_cmd/checkpoints.py +0 -0
  1427. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/tools_cmd/issues.py +0 -0
  1428. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/tools_cmd/mcp.py +0 -0
  1429. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/tools_cmd/packs.py +0 -0
  1430. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/tools_cmd/paths.py +0 -0
  1431. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/tools_cmd/projections.py +0 -0
  1432. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/tools_cmd/runs.py +0 -0
  1433. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/tools_cmd/runtimes.py +0 -0
  1434. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/tools_cmd/safety.py +0 -0
  1435. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/untrusted_cmd.py +0 -0
  1436. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/update_notify.py +0 -0
  1437. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/version_cmd.py +0 -0
  1438. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/wiring.py +0 -0
  1439. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/work_cmd/claiming.py +0 -0
  1440. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/work_cmd/config.py +0 -0
  1441. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/work_cmd/session/__init__.py +0 -0
  1442. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade/work_cmd/verify_ranking.py +0 -0
  1443. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade_cli.egg-info/dependency_links.txt +0 -0
  1444. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade_cli.egg-info/entry_points.txt +0 -0
  1445. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/src/brigade_cli.egg-info/top_level.txt +0 -0
  1446. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_aboyeur_status.py +0 -0
  1447. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_acpx_adapter.py +0 -0
  1448. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_actionqueue.py +0 -0
  1449. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_add.py +0 -0
  1450. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_agent_notify_station_contracts.py +0 -0
  1451. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_agent_skill_format.py +0 -0
  1452. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_agent_write_probes.py +0 -0
  1453. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_budgets.py +0 -0
  1454. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_cli_help.py +0 -0
  1455. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_cli_setup.py +0 -0
  1456. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_cli_update.py +0 -0
  1457. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_code_reference_schema.py +0 -0
  1458. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_codex_appserver_integration.py +0 -0
  1459. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_completions.py +0 -0
  1460. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_component_bins.py +0 -0
  1461. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_component_manifest_provenance.py +0 -0
  1462. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_component_report.py +0 -0
  1463. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_component_state.py +0 -0
  1464. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_cursor_install_state_migration.py +0 -0
  1465. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_doctor_agent.py +0 -0
  1466. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_error_refusal_copy.py +0 -0
  1467. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_extras_gate.py +0 -0
  1468. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_fragments.py +0 -0
  1469. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_friction_cmd.py +0 -0
  1470. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_handoff.py +0 -0
  1471. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_handoff_injection_lint.py +0 -0
  1472. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_handoff_readability.py +0 -0
  1473. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_harness_conformance_probe.py +0 -0
  1474. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_harness_profile_cmd.py +0 -0
  1475. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_install.py +0 -0
  1476. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_issue266_benchmark.py +0 -0
  1477. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_issue362_code_evidence_facades.py +0 -0
  1478. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_managed_snapshot.py +0 -0
  1479. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_mcp_adapters.py +0 -0
  1480. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_mcp_cmd.py +0 -0
  1481. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_mcp_integration.py +0 -0
  1482. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_mcp_runtime.py +0 -0
  1483. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_mcp_server.py +0 -0
  1484. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_mcp_url_only_import.py +0 -0
  1485. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_mcp_user_scope.py +0 -0
  1486. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_model_scorecard.py +0 -0
  1487. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_model_trials_adversarial_fixtures.py +0 -0
  1488. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_neutrality.py +0 -0
  1489. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_notifications_cmd.py +0 -0
  1490. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_operator_checkup.py +0 -0
  1491. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_outcome_activegraph.py +0 -0
  1492. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_outcome_execute.py +0 -0
  1493. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_outcome_infrastructure_attribution.py +0 -0
  1494. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_outcome_repair.py +0 -0
  1495. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_pantry_cmd.py +0 -0
  1496. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_pantry_compat.py +0 -0
  1497. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_parity_backlog.py +0 -0
  1498. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_phase_ledger_session_cmd.py +0 -0
  1499. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_phases_cmd_facade.py +0 -0
  1500. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_pi_mcp_bridge.py +0 -0
  1501. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_privacy_regression.py +0 -0
  1502. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_profiles.py +0 -0
  1503. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_prompt.py +0 -0
  1504. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_read_only_enforcement.py +0 -0
  1505. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_reconfigure.py +0 -0
  1506. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_registry.py +0 -0
  1507. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_release_checklist.py +0 -0
  1508. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_release_ci_health_cmd.py +0 -0
  1509. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_release_manifest_generator.py +0 -0
  1510. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_release_readiness_hygiene_cmd.py +0 -0
  1511. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_release_reconcile_evidence_cmd.py +0 -0
  1512. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_release_smoke_health_cmd.py +0 -0
  1513. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_release_train_evidence_cmd.py +0 -0
  1514. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_release_version_guard.py +0 -0
  1515. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_release_version_sync.py +0 -0
  1516. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_release_waivers_manifest_cmd.py +0 -0
  1517. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_repeat_watch_approval_runner.py +0 -0
  1518. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_reportstore.py +0 -0
  1519. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_repos_adoption_cmd.py +0 -0
  1520. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_repos_cmd.py +0 -0
  1521. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_repos_cmd_facade.py +0 -0
  1522. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_repos_friction_cmd.py +0 -0
  1523. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_repos_release_train_cmd.py +0 -0
  1524. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_research_cli_sources.py +0 -0
  1525. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_research_local_sources.py +0 -0
  1526. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_route_policy.py +0 -0
  1527. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_route_receipts.py +0 -0
  1528. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_router.py +0 -0
  1529. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_router_properties.py +0 -0
  1530. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_run_audit.py +0 -0
  1531. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_run_control.py +0 -0
  1532. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_run_event_cursor.py +0 -0
  1533. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_run_events_cursor_control.py +0 -0
  1534. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_run_journal_measurement.py +0 -0
  1535. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_run_transport_dag.py +0 -0
  1536. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_run_transport_failfast.py +0 -0
  1537. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_runbook_import.py +0 -0
  1538. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_scorecard.py +0 -0
  1539. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_scorecard_reconcile.py +0 -0
  1540. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_scrub.py +0 -0
  1541. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_search_cmd.py +0 -0
  1542. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_security_diff.py +0 -0
  1543. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_security_template_audit_cmd.py +0 -0
  1544. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_selection.py +0 -0
  1545. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_skill_templates_metadata.py +0 -0
  1546. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_station.py +0 -0
  1547. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_station_manifest.py +0 -0
  1548. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_stations_discover.py +0 -0
  1549. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_status.py +0 -0
  1550. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_subprocess_guards.py +0 -0
  1551. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_surface_aware_install.py +0 -0
  1552. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_telemetry_export.py +0 -0
  1553. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_test_fixture_contract.py +0 -0
  1554. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_thread_sync.py +0 -0
  1555. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_tokens_cmd.py +0 -0
  1556. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_tool_output_compaction.py +0 -0
  1557. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_tools_cmd_facade.py +0 -0
  1558. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_untrusted_cmd.py +0 -0
  1559. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_version_sync_script.py +0 -0
  1560. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_waiver_policy_health_cmd.py +0 -0
  1561. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_wiring_resolve_target.py +0 -0
  1562. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_work_cmd_backup.py +0 -0
  1563. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_work_cmd_facade.py +0 -0
  1564. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_work_cmd_reviews.py +0 -0
  1565. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_work_cmd_verify_ranking.py +0 -0
  1566. {brigade_cli-0.26.1 → brigade_cli-0.27.0}/tests/test_workflow_cmd.py +0 -0
@@ -0,0 +1,163 @@
1
+ Metadata-Version: 2.4
2
+ Name: brigade-cli
3
+ Version: 0.27.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
+ Provides-Extra: research
46
+ Requires-Dist: playwright>=1.40; extra == "research"
47
+ Dynamic: license-file
48
+
49
+ <p align="center">
50
+ <img src="docs/assets/brigade-wordmark.svg" alt="Brigade (by Escoffier Labs)" width="640">
51
+ </p>
52
+
53
+ <p align="center">
54
+ Brigade keeps coding-agent work trackable across tools, repos, and sessions: tasks, receipts, shared memory, and synced tools.
55
+ </p>
56
+
57
+ <p align="center">
58
+ <a href="https://brigade.tools/docs/getting-started/install">Install</a> ·
59
+ <a href="https://brigade.tools/docs">Docs</a> ·
60
+ <a href="docs/comparison.md">Compare</a> ·
61
+ <a href="QUICKSTART.md">Quickstart</a>
62
+ </p>
63
+
64
+ <p align="center">
65
+ <img src="https://shieldcn.dev/github/ci/escoffier-labs/brigade.svg?workflow=ci.yml&branch=main&label=ci&size=xs" alt="CI status">
66
+ <img src="https://shieldcn.dev/pypi/v/brigade-cli.svg?label=pypi&size=xs" alt="PyPI version">
67
+ <img src="https://shieldcn.dev/pypi/dm/brigade-cli.svg?size=xs" alt="PyPI downloads per month">
68
+ <img src="https://shieldcn.dev/badge/python-3.10+-blue.svg?logo=python&logoColor=white&size=xs" alt="Python 3.10+">
69
+ <img src="https://shieldcn.dev/badge/rust-code_graph-b7410e.svg?logo=rust&logoColor=white&size=xs" alt="Rust: code graph engine">
70
+ <img src="https://shieldcn.dev/badge/go-evidence_log-00add8.svg?logo=go&logoColor=white&size=xs" alt="Go: evidence log engine">
71
+ <img src="https://shieldcn.dev/badge/license-MIT-4e7247.svg?size=xs" alt="MIT license">
72
+ </p>
73
+
74
+ 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.
75
+
76
+ ## What it does
77
+
78
+ - **Ready work and claim safety.** Brigade lists unblocked tasks and uses atomic claims so two agents cannot take the same item.
79
+ - **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.
80
+ - **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.
81
+ - **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.
82
+ - **Explicit dry-run-first harness projection.** MCP servers, tools, and skills are previewed before Brigade writes them into a harness.
83
+
84
+ Learning in Brigade is outcome-based skill scoring, promotion, and rollback from captured verification receipts. It is not autonomous reflective memory learning.
85
+
86
+ ## Install
87
+
88
+ 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.
89
+
90
+ Stable channel: published v0.27.0. Preview channel: `brigade update --channel beta` for `0.28.0.devYYYYMMDD` wheels once the first 0.28 dev wheel publishes. Details: [update channels](docs/update-channels.md).
91
+
92
+ ## How it compares
93
+
94
+ 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).
95
+
96
+ 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
97
+
98
+ ### Work and orchestration
99
+
100
+ | Project | Ready work | Claim safety | Parallel and run control | Task-store boundary | Verification |
101
+ | --- | --- | --- | --- | --- | --- |
102
+ | [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 |
103
+ | [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 |
104
+ | [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 |
105
+ | [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 |
106
+ | [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 |
107
+
108
+ ### Memory
109
+
110
+ | Project | Durable memory | Capture and recall | Care and operations | Learning | Provenance |
111
+ | --- | --- | --- | --- | --- | --- |
112
+ | [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 |
113
+ | [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 |
114
+ | [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 |
115
+ | [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 |
116
+ | [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 |
117
+ | [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 |
118
+ | [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 |
119
+
120
+ ### Tools and configuration
121
+
122
+ | Project | MCP | Reviewed rules and skills | Projection behavior | Source of truth | Audit and rollback |
123
+ | --- | --- | --- | --- | --- | --- |
124
+ | [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 |
125
+ | [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 |
126
+ | [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 |
127
+ | [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 |
128
+ | [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 |
129
+ | [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 |
130
+
131
+ ### Evidence and operations
132
+
133
+ | Project | Receipts | Code impact | Agent activity | Cloud state | Learning / replay |
134
+ | --- | --- | --- | --- | --- | --- |
135
+ | [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 |
136
+ | [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 |
137
+ | [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 |
138
+ | [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 |
139
+ | [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 |
140
+ | [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 |
141
+
142
+ "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.
143
+
144
+ ## Scope
145
+
146
+ 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.
147
+
148
+ 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.
149
+
150
+ ## Docs
151
+
152
+ - [First 10 minutes](docs/first-10-minutes.md) · [Overview](docs/overview.md) · [Technical guide](docs/technical-guide.md) · [Comparison](docs/comparison.md)
153
+ - [Execution model](docs/execution-model.md) · [Work closeout](docs/work-closeout.md) · [Outcome scoring](docs/outcome-scoring.md)
154
+ - [Memory care](docs/memory-care.md) · [Memory operations](docs/memory-operations.md) · [Code intelligence](docs/code-intelligence.md) · [MCP sync](docs/mcp-sync.md)
155
+ - [Agents guide](docs/agents-guide.md) · [Agent-assisted setup](docs/agent-assisted-setup.md) · [README coverage](docs/readme-coverage.md)
156
+ - [Runbooks](docs/runbooks/README.md) · [Fleet hub on a Proxmox LXC](docs/runbooks/fleet-hub-proxmox.md)
157
+ - [Security](docs/security.md) · [Command inventory](docs/command-inventory.md) · [Contributing](CONTRIBUTING.md) · [Roadmap](ROADMAP.md)
158
+
159
+ ## License
160
+
161
+ MIT. See [LICENSE](LICENSE).
162
+
163
+ 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,310 @@
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
+ 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.
25
+
26
+ ### macOS
27
+
28
+ ```bash
29
+ brew install pipx
30
+ pipx ensurepath
31
+ ```
32
+
33
+ ### Windows PowerShell
34
+
35
+ ```powershell
36
+ scoop install pipx
37
+ pipx ensurepath
38
+ ```
39
+
40
+ Without Scoop, use Python's Windows launcher:
41
+
42
+ ```powershell
43
+ py -m pip install --user pipx
44
+ # Run pipx.exe ensurepath from the directory printed by pip if it is not on PATH yet.
45
+ ```
46
+
47
+ Open a new terminal after `pipx ensurepath`, then continue on any OS:
48
+
49
+ ```bash
50
+ pipx install brigade-cli
51
+ brigade setup
52
+ ```
53
+
54
+ If you already use uv, install the same package with:
55
+
56
+ ```bash
57
+ uv tool install brigade-cli
58
+ brigade setup
59
+ ```
60
+
61
+ For an intentional Brigade development machine on the `0.27` preview line:
62
+
63
+ ```bash
64
+ brigade update --channel beta
65
+ ```
66
+
67
+ Rollback to stable:
68
+
69
+ ```bash
70
+ brigade update --channel stable --switch-channel
71
+ ```
72
+
73
+ ## First install
74
+
75
+ 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:
76
+
77
+ ```bash
78
+ # Code repo with Codex as the writer
79
+ brigade operator quickstart --target ./my-repo --harnesses codex
80
+
81
+ # OpenClaw or Hermes workspace instead of a code repo
82
+ brigade operator quickstart --target ~/agent-workspace --depth workspace --harnesses openclaw,hermes --owner openclaw
83
+ ```
84
+
85
+ Pass `--dry-run` first to preview the planned steps without writing anything.
86
+
87
+ PowerShell uses Windows path spelling when you provide a path explicitly:
88
+
89
+ ```powershell
90
+ brigade operator quickstart --target .\my-repo --harnesses codex
91
+ brigade operator doctor --target .\my-repo --profile local-operator
92
+ ```
93
+
94
+ 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.
95
+
96
+ 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:
97
+
98
+ ```bash
99
+ $ brigade init --target ~/agent-kitchen
100
+
101
+ Which harnesses do you use? (type numbers separated by space/comma to toggle, enter to confirm)
102
+ [x] 1. Claude Code
103
+ [ ] 2. Codex
104
+ [ ] 3. OpenCode
105
+ [ ] 4. Antigravity
106
+ [ ] 5. Pi
107
+ [ ] 6. Cursor
108
+ [ ] 7. Aider
109
+ [ ] 8. Goose
110
+ [ ] 9. Continue
111
+ [ ] 10. GitHub Copilot CLI
112
+ [ ] 11. Qwen Code
113
+ [ ] 12. Kimi Code
114
+ [ ] 13. AdaL
115
+ [ ] 14. OpenHands
116
+ [ ] 15. Grok CLI
117
+ [ ] 16. Amp
118
+ [ ] 17. Crush
119
+ [ ] 18. OpenClaw
120
+ [ ] 19. Hermes
121
+
122
+ Depth? (type a number, enter for default)
123
+ * 1. repo (handoff flow + publish guard)
124
+ 2. workspace (full home: MEMORY.md, TOOLS.md, USER.md, ...)
125
+
126
+ Add-ons? (type numbers separated by space/comma to toggle, enter to confirm)
127
+ [ ] 1. publisher (content-guard policies for blog/social/docs)
128
+ ```
129
+
130
+ Defaults are claude harness, repo depth, no includes. Enter ships the install.
131
+
132
+ ## CI / scripted install
133
+
134
+ Pass flags directly to skip the prompt. The same flags work on `operator quickstart`:
135
+
136
+ ```bash
137
+ # Claude Code + Codex + OpenClaw, full workspace
138
+ brigade operator quickstart --target ~/agent-kitchen \
139
+ --depth workspace \
140
+ --harnesses claude,codex,openclaw
141
+
142
+ # Codex-only project, minimal install
143
+ brigade operator quickstart --target ./my-project --depth repo --harnesses codex
144
+
145
+ # Template files only, no harness-specific files
146
+ brigade init --target ./my-project --harnesses none
147
+ ```
148
+
149
+ ## Verifying
150
+
151
+ After install, check the operator profile:
152
+
153
+ ```bash
154
+ brigade operator doctor --target <path> --profile local-operator
155
+ ```
156
+
157
+ For the file-by-file view, `brigade doctor --target <path>` reports the apparent harness shape and checks every configured inbox and adapter:
158
+
159
+ ```
160
+ brigade doctor: target /home/you/agent-kitchen
161
+ harnesses: claude, codex, openclaw (owner=openclaw, depth=workspace)
162
+ [ok] bootstrap: AGENTS.md /home/you/agent-kitchen/AGENTS.md
163
+ [ok] handoff: claude inbox /home/you/agent-kitchen/.claude/memory-handoffs
164
+ [ok] handoff: codex inbox /home/you/agent-kitchen/.codex/memory-handoffs
165
+ [ok] openclaw: config /home/you/.openclaw/openclaw.json
166
+ ...
167
+ ```
168
+
169
+ A `[fail]` line means the install is incomplete; `[warn]` is informational; `[todo]` means the check needs your attention.
170
+
171
+ ## Reconfiguring
172
+
173
+ To change which harnesses are installed on an existing target:
174
+
175
+ ```bash
176
+ # Add a harness
177
+ brigade reconfigure --target . --harnesses claude,codex
178
+
179
+ # Drop one (without removing its files)
180
+ brigade reconfigure --target . --harnesses claude
181
+
182
+ # Drop one and remove its files
183
+ brigade reconfigure --target . --harnesses claude --prune
184
+ ```
185
+
186
+ ## The handoff flow
187
+
188
+ 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.
189
+
190
+ 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.
191
+
192
+ 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.
193
+
194
+ ## Your daily loop
195
+
196
+ 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:
197
+
198
+ ```bash
199
+ brigade work brief --target . # 1. what's pending (and whether the loop is being fed)
200
+ brigade work verify run --target . --command "pytest -q" --capture <skill-or-card> # 2. verify + capture in one step
201
+ # 3. write a Memory Handoff for anything durable; the ratchet (outcome reconcile) runs hands-off on your cron
202
+ ```
203
+
204
+ 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.
205
+
206
+ ## Optional: close the GraphTrail ↔ Brigade ↔ MiseLedger loop
207
+
208
+ 0.21.0 already ships receipt deltas, MiseLedger export, evidence briefs, and context evals. Productizing them is a short dogfood path:
209
+
210
+ ```bash
211
+ # optional stations (fail-open everywhere if absent)
212
+ brigade setup # run once: verified GraphTrail, graphtrail-mcp, MiseLedger, and SessionFind
213
+ brigade code sync . # explicitly runs local GraphTrail and builds .graphtrail/graphtrail.db
214
+ brigade code context "auth receipt flow"
215
+ brigade code impact brigade.work.verify.run
216
+
217
+ # evidence station CLI: explicit local operations
218
+ brigade evidence crawl sessions
219
+ brigade evidence search "auth receipt flow"
220
+ brigade evidence crawl plan # review-only miseledger init + crawl commands
221
+ brigade evidence doctor
222
+ brigade evidence export plan # review-only receipts export path
223
+
224
+ # one operator glance: doctors + graph ok / ledger ok / last brief hit rate
225
+ brigade operator checkup --target .
226
+
227
+ # after real work flows through verify/run + capture:
228
+ brigade receipts export miseledger --target . --new-only --import
229
+ brigade outcome rank --target . # surfaces brief_hit as a skill quality signal
230
+ # next brigade run attaches a capped MiseLedger evidence brief automatically
231
+ ```
232
+
233
+ 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.
234
+
235
+ 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.
236
+
237
+ ## Optional: multi-machine pantry (Agent Pantry)
238
+
239
+ 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.
240
+
241
+ ```bash
242
+ brigade add pantry # go install agentpantry
243
+ brigade pantry setup plan --role sink --peer 127.0.0.1:8787 # agent host
244
+ brigade pantry setup plan --role source --peer <sink>:8787 # daily driver
245
+ # run the printed agentpantry init/keygen/source|sink commands yourself
246
+ brigade pantry doctor
247
+ brigade pantry expiry-alert # preview near-expiry cookies
248
+ # optional notify path:
249
+ brigade add notifications
250
+ brigade pantry expiry-alert --send
251
+ ```
252
+
253
+ `brigade pantry status` and `doctor` always print a `next:` block so the path stays obvious after install.
254
+
255
+ ## Optional: search and tokens stations
256
+
257
+ ```bash
258
+ # GraphTrail is installed by `brigade setup`; use its facade commands.
259
+ brigade code sync . # preferred GraphTrail facade
260
+ brigade code context "auth receipt flow"
261
+ brigade code impact brigade.work.verify.run
262
+ # `brigade search sync|context|impact` remain compatibility aliases.
263
+ brigade search sync plan # review-only; does not run GraphTrail
264
+ brigade search doctor
265
+
266
+ # Token Glace (output compaction; TokenJuice was the old name) + optional usage export
267
+ brigade add tokens
268
+ brigade tokens wire plan
269
+ brigade tokens doctor
270
+ ```
271
+
272
+ ## Optional: discover external station catalogs
273
+
274
+ Sidecars can ship a `station.json` (`schema: brigade.station.v1`). Discover them locally without folding them into the core:
275
+
276
+ ```bash
277
+ brigade stations list
278
+ brigade stations discover --root ~/repos
279
+ brigade stations verify /path/to/sidecar # read-only conformance from an explicit local path
280
+ brigade stations verify /path/to/sidecar --json # bounded result; no raw child output
281
+ brigade add /path/to/sidecar --install # runs printed install args after review
282
+ ```
283
+
284
+ `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.
285
+
286
+ ## Optional: operator notifications (extras)
287
+
288
+ `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.
289
+
290
+ ```bash
291
+ brigade extras on
292
+ brigade add notifications
293
+ brigade notifications status
294
+ brigade notifications setup plan --profile operator
295
+ # Brigade never sends from doctor/status; secrets stay in env vars referenced by config.toml
296
+ ```
297
+
298
+ ## Extras honesty
299
+
300
+ `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.
301
+
302
+ ## Next steps
303
+
304
+ - Read [the cookbook](https://github.com/escoffier-labs/solos-cookbook) for the deep version of every concept here.
305
+ - Customize `USER.md` and `TOOLS.md` with your real preferences and runbooks (kept private; do not commit personal details).
306
+ - Wire the ingester on a cron or a manual end-of-day workflow.
307
+ - Add a memory-care staleness scan when your card set starts to matter. See [docs/memory-care.md](docs/memory-care.md).
308
+ - 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).
309
+ - 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.
310
+ - Wire Grok as a writer harness with `--harnesses ...,grok` so handoffs land in `.grok/memory-handoffs/` (first-class, same as Claude/Codex).