maestro-fleet 4.5.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 (313) hide show
  1. maestro_fleet-4.5.0/LICENSE +109 -0
  2. maestro_fleet-4.5.0/PKG-INFO +382 -0
  3. maestro_fleet-4.5.0/README.md +354 -0
  4. maestro_fleet-4.5.0/maestro/__init__.py +15 -0
  5. maestro_fleet-4.5.0/maestro/audit/__init__.py +5 -0
  6. maestro_fleet-4.5.0/maestro/audit/anchor/__init__.py +56 -0
  7. maestro_fleet-4.5.0/maestro/audit/anchor/azure_blob.py +99 -0
  8. maestro_fleet-4.5.0/maestro/audit/anchor/base.py +38 -0
  9. maestro_fleet-4.5.0/maestro/audit/anchor/filesystem.py +49 -0
  10. maestro_fleet-4.5.0/maestro/audit/anchor/s3.py +103 -0
  11. maestro_fleet-4.5.0/maestro/audit/anchor/s3_compatible.py +115 -0
  12. maestro_fleet-4.5.0/maestro/audit/anchor/scheduler.py +59 -0
  13. maestro_fleet-4.5.0/maestro/audit/log.py +238 -0
  14. maestro_fleet-4.5.0/maestro/audit/policy.py +67 -0
  15. maestro_fleet-4.5.0/maestro/audit/signer.py +58 -0
  16. maestro_fleet-4.5.0/maestro/audit/types.py +50 -0
  17. maestro_fleet-4.5.0/maestro/auth.py +286 -0
  18. maestro_fleet-4.5.0/maestro/backup.py +268 -0
  19. maestro_fleet-4.5.0/maestro/bridge.py +496 -0
  20. maestro_fleet-4.5.0/maestro/cli.py +3396 -0
  21. maestro_fleet-4.5.0/maestro/cli_argparse.py +208 -0
  22. maestro_fleet-4.5.0/maestro/cli_ui.py +92 -0
  23. maestro_fleet-4.5.0/maestro/config/__init__.py +1 -0
  24. maestro_fleet-4.5.0/maestro/config/mcp-servers.schema.json +58 -0
  25. maestro_fleet-4.5.0/maestro/config/role-paths-default.json +418 -0
  26. maestro_fleet-4.5.0/maestro/config/secret-allowlist.json +4 -0
  27. maestro_fleet-4.5.0/maestro/core/__init__.py +1 -0
  28. maestro_fleet-4.5.0/maestro/core/bridge_notifier.py +653 -0
  29. maestro_fleet-4.5.0/maestro/core/bridge_poller.py +852 -0
  30. maestro_fleet-4.5.0/maestro/core/bridge_slack_bot.py +1215 -0
  31. maestro_fleet-4.5.0/maestro/core/crew.py +2274 -0
  32. maestro_fleet-4.5.0/maestro/core/fleet_monitor.py +964 -0
  33. maestro_fleet-4.5.0/maestro/core/fleet_runner.py +6896 -0
  34. maestro_fleet-4.5.0/maestro/core/fleet_usage_tracker.py +722 -0
  35. maestro_fleet-4.5.0/maestro/core/gates.py +96 -0
  36. maestro_fleet-4.5.0/maestro/core/plans.py +109 -0
  37. maestro_fleet-4.5.0/maestro/core/post_voyage_verify.py +425 -0
  38. maestro_fleet-4.5.0/maestro/core/pr_merge.py +257 -0
  39. maestro_fleet-4.5.0/maestro/core/pr_review_dispatch.py +246 -0
  40. maestro_fleet-4.5.0/maestro/core/worktrees.py +841 -0
  41. maestro_fleet-4.5.0/maestro/core_constants.py +76 -0
  42. maestro_fleet-4.5.0/maestro/docs/AIR-GAPPED.md +59 -0
  43. maestro_fleet-4.5.0/maestro/docs/ARCHITECTURE.md +477 -0
  44. maestro_fleet-4.5.0/maestro/docs/BRANCH-DISCIPLINE.md +128 -0
  45. maestro_fleet-4.5.0/maestro/docs/CHAIN-OF-COMMAND.md +363 -0
  46. maestro_fleet-4.5.0/maestro/docs/CLI-ERRORS.md +168 -0
  47. maestro_fleet-4.5.0/maestro/docs/CLI-REFERENCE.md +755 -0
  48. maestro_fleet-4.5.0/maestro/docs/COMPARATOR-everything-claude-code.md +136 -0
  49. maestro_fleet-4.5.0/maestro/docs/COMPLIANCE-MAPPING.md +179 -0
  50. maestro_fleet-4.5.0/maestro/docs/CONFIG-MODELS.md +91 -0
  51. maestro_fleet-4.5.0/maestro/docs/CREW-INVOCATION.md +299 -0
  52. maestro_fleet-4.5.0/maestro/docs/ENTERPRISE-SECURITY.md +404 -0
  53. maestro_fleet-4.5.0/maestro/docs/ENTERPRISE-SETUP.md +381 -0
  54. maestro_fleet-4.5.0/maestro/docs/GETTING-STARTED.md +645 -0
  55. maestro_fleet-4.5.0/maestro/docs/HUMAN-REVIEW-GATES.md +451 -0
  56. maestro_fleet-4.5.0/maestro/docs/LICENCE.md +134 -0
  57. maestro_fleet-4.5.0/maestro/docs/LIFECYCLE-AUTOMATION.md +220 -0
  58. maestro_fleet-4.5.0/maestro/docs/OPERATOR-GUIDE.md +802 -0
  59. maestro_fleet-4.5.0/maestro/docs/ORDERS-AND-VOYAGES.md +329 -0
  60. maestro_fleet-4.5.0/maestro/docs/OWNER-GUIDE.md +1247 -0
  61. maestro_fleet-4.5.0/maestro/docs/PARALLEL-VOYAGES.md +329 -0
  62. maestro_fleet-4.5.0/maestro/docs/PERSONAS.md +382 -0
  63. maestro_fleet-4.5.0/maestro/docs/PRICING.md +215 -0
  64. maestro_fleet-4.5.0/maestro/docs/PUBLIC-SECURITY-OVERVIEW.md +102 -0
  65. maestro_fleet-4.5.0/maestro/docs/QUICKSTART.md +209 -0
  66. maestro_fleet-4.5.0/maestro/docs/ROLE-OVERLAYS.md +615 -0
  67. maestro_fleet-4.5.0/maestro/docs/ROLES-GUIDE.md +222 -0
  68. maestro_fleet-4.5.0/maestro/docs/SECURITY-QUESTIONNAIRE.md +172 -0
  69. maestro_fleet-4.5.0/maestro/docs/SETUP.md +170 -0
  70. maestro_fleet-4.5.0/maestro/docs/SUPPORT.md +202 -0
  71. maestro_fleet-4.5.0/maestro/docs/TROUBLESHOOTING.md +826 -0
  72. maestro_fleet-4.5.0/maestro/docs/TRUST.md +242 -0
  73. maestro_fleet-4.5.0/maestro/docs/bridge-setup-guide.md +551 -0
  74. maestro_fleet-4.5.0/maestro/egress/__init__.py +42 -0
  75. maestro_fleet-4.5.0/maestro/egress/airgap.py +30 -0
  76. maestro_fleet-4.5.0/maestro/egress/diagram.py +229 -0
  77. maestro_fleet-4.5.0/maestro/egress/filter.py +282 -0
  78. maestro_fleet-4.5.0/maestro/egress/proxy.py +66 -0
  79. maestro_fleet-4.5.0/maestro/env.py +59 -0
  80. maestro_fleet-4.5.0/maestro/errors.py +80 -0
  81. maestro_fleet-4.5.0/maestro/hooks/__init__.py +17 -0
  82. maestro_fleet-4.5.0/maestro/hooks/branch_guard.py +263 -0
  83. maestro_fleet-4.5.0/maestro/hooks/bridge_question.py +59 -0
  84. maestro_fleet-4.5.0/maestro/hooks/notification.py +77 -0
  85. maestro_fleet-4.5.0/maestro/hooks/posttool.py +387 -0
  86. maestro_fleet-4.5.0/maestro/hooks/pretool.py +370 -0
  87. maestro_fleet-4.5.0/maestro/hooks/secret_patterns.py +226 -0
  88. maestro_fleet-4.5.0/maestro/hooks/stop.py +503 -0
  89. maestro_fleet-4.5.0/maestro/identity/__init__.py +42 -0
  90. maestro_fleet-4.5.0/maestro/identity/acl.py +102 -0
  91. maestro_fleet-4.5.0/maestro/identity/auth.py +101 -0
  92. maestro_fleet-4.5.0/maestro/identity/defaults/__init__.py +0 -0
  93. maestro_fleet-4.5.0/maestro/identity/encryption.py +210 -0
  94. maestro_fleet-4.5.0/maestro/identity/gate.py +113 -0
  95. maestro_fleet-4.5.0/maestro/identity/integrity.py +219 -0
  96. maestro_fleet-4.5.0/maestro/identity/loader.py +196 -0
  97. maestro_fleet-4.5.0/maestro/identity/rights.py +307 -0
  98. maestro_fleet-4.5.0/maestro/identity/types.py +56 -0
  99. maestro_fleet-4.5.0/maestro/init.py +563 -0
  100. maestro_fleet-4.5.0/maestro/launch/__init__.py +3 -0
  101. maestro_fleet-4.5.0/maestro/launch/sandbox.py +162 -0
  102. maestro_fleet-4.5.0/maestro/licence/__init__.py +245 -0
  103. maestro_fleet-4.5.0/maestro/licence/client.py +156 -0
  104. maestro_fleet-4.5.0/maestro/licence/config.py +102 -0
  105. maestro_fleet-4.5.0/maestro/licence/errors.py +44 -0
  106. maestro_fleet-4.5.0/maestro/licence/grace.py +64 -0
  107. maestro_fleet-4.5.0/maestro/licence/storage.py +245 -0
  108. maestro_fleet-4.5.0/maestro/mcp.py +330 -0
  109. maestro_fleet-4.5.0/maestro/personas/__init__.py +27 -0
  110. maestro_fleet-4.5.0/maestro/personas/_schema.json +147 -0
  111. maestro_fleet-4.5.0/maestro/personas/default/persona.json +38 -0
  112. maestro_fleet-4.5.0/maestro/personas/default/roles/BLD.md +16 -0
  113. maestro_fleet-4.5.0/maestro/personas/default/roles/DOC.md +15 -0
  114. maestro_fleet-4.5.0/maestro/personas/default/roles/LEAD.md +16 -0
  115. maestro_fleet-4.5.0/maestro/personas/default/roles/PLN.md +16 -0
  116. maestro_fleet-4.5.0/maestro/personas/default/roles/REL.md +15 -0
  117. maestro_fleet-4.5.0/maestro/personas/default/roles/SEC.md +15 -0
  118. maestro_fleet-4.5.0/maestro/personas/default/roles/TST.md +15 -0
  119. maestro_fleet-4.5.0/maestro/personas/game-rangers/persona.json +38 -0
  120. maestro_fleet-4.5.0/maestro/personas/game-rangers/roles/Anti-Poaching-Unit.md +15 -0
  121. maestro_fleet-4.5.0/maestro/personas/game-rangers/roles/Chief-Ranger.md +16 -0
  122. maestro_fleet-4.5.0/maestro/personas/game-rangers/roles/Field-Ranger.md +16 -0
  123. maestro_fleet-4.5.0/maestro/personas/game-rangers/roles/Logistics-Coordinator.md +15 -0
  124. maestro_fleet-4.5.0/maestro/personas/game-rangers/roles/Naturalist.md +16 -0
  125. maestro_fleet-4.5.0/maestro/personas/game-rangers/roles/Scout.md +16 -0
  126. maestro_fleet-4.5.0/maestro/personas/game-rangers/roles/Veterinarian.md +15 -0
  127. maestro_fleet-4.5.0/maestro/personas/loader.py +69 -0
  128. maestro_fleet-4.5.0/maestro/personas/models.py +65 -0
  129. maestro_fleet-4.5.0/maestro/personas/nautical/persona.json +38 -0
  130. maestro_fleet-4.5.0/maestro/personas/nautical/roles/BOS.md +460 -0
  131. maestro_fleet-4.5.0/maestro/personas/nautical/roles/COX.md +666 -0
  132. maestro_fleet-4.5.0/maestro/personas/nautical/roles/LKT.md +465 -0
  133. maestro_fleet-4.5.0/maestro/personas/nautical/roles/NAV.md +433 -0
  134. maestro_fleet-4.5.0/maestro/personas/nautical/roles/QM.md +320 -0
  135. maestro_fleet-4.5.0/maestro/personas/nautical/roles/SCR.md +384 -0
  136. maestro_fleet-4.5.0/maestro/personas/nautical/roles/SHP.md +397 -0
  137. maestro_fleet-4.5.0/maestro/personas/navy-seals/persona.json +38 -0
  138. maestro_fleet-4.5.0/maestro/personas/navy-seals/roles/Comms.md +16 -0
  139. maestro_fleet-4.5.0/maestro/personas/navy-seals/roles/Intel-Analyst.md +15 -0
  140. maestro_fleet-4.5.0/maestro/personas/navy-seals/roles/Logistics-Officer.md +15 -0
  141. maestro_fleet-4.5.0/maestro/personas/navy-seals/roles/Operator.md +15 -0
  142. maestro_fleet-4.5.0/maestro/personas/navy-seals/roles/Recon.md +15 -0
  143. maestro_fleet-4.5.0/maestro/personas/navy-seals/roles/Team-Leader.md +16 -0
  144. maestro_fleet-4.5.0/maestro/personas/navy-seals/roles/Verifier.md +15 -0
  145. maestro_fleet-4.5.0/maestro/personas/render.py +8 -0
  146. maestro_fleet-4.5.0/maestro/personas/resolver.py +106 -0
  147. maestro_fleet-4.5.0/maestro/personas/storm-troopers/persona.json +38 -0
  148. maestro_fleet-4.5.0/maestro/personas/storm-troopers/roles/Archivist.md +16 -0
  149. maestro_fleet-4.5.0/maestro/personas/storm-troopers/roles/Commander.md +16 -0
  150. maestro_fleet-4.5.0/maestro/personas/storm-troopers/roles/Imperial-Security.md +15 -0
  151. maestro_fleet-4.5.0/maestro/personas/storm-troopers/roles/Inspector.md +15 -0
  152. maestro_fleet-4.5.0/maestro/personas/storm-troopers/roles/Logistics-Officer.md +15 -0
  153. maestro_fleet-4.5.0/maestro/personas/storm-troopers/roles/Strategist.md +16 -0
  154. maestro_fleet-4.5.0/maestro/personas/storm-troopers/roles/Trooper.md +15 -0
  155. maestro_fleet-4.5.0/maestro/project_analysis.py +314 -0
  156. maestro_fleet-4.5.0/maestro/quickstart.py +660 -0
  157. maestro_fleet-4.5.0/maestro/registry.py +68 -0
  158. maestro_fleet-4.5.0/maestro/review.py +325 -0
  159. maestro_fleet-4.5.0/maestro/roles/BLD.md +253 -0
  160. maestro_fleet-4.5.0/maestro/roles/DOC.md +222 -0
  161. maestro_fleet-4.5.0/maestro/roles/LEAD.md +237 -0
  162. maestro_fleet-4.5.0/maestro/roles/PLN.md +400 -0
  163. maestro_fleet-4.5.0/maestro/roles/REL.md +259 -0
  164. maestro_fleet-4.5.0/maestro/roles/SEC.md +270 -0
  165. maestro_fleet-4.5.0/maestro/roles/TST.md +413 -0
  166. maestro_fleet-4.5.0/maestro/roles/loader.py +367 -0
  167. maestro_fleet-4.5.0/maestro/roles/overlay.py +259 -0
  168. maestro_fleet-4.5.0/maestro/secrets/__init__.py +41 -0
  169. maestro_fleet-4.5.0/maestro/secrets/aws_secrets.py +70 -0
  170. maestro_fleet-4.5.0/maestro/secrets/azure_keyvault.py +66 -0
  171. maestro_fleet-4.5.0/maestro/secrets/base.py +23 -0
  172. maestro_fleet-4.5.0/maestro/secrets/env.py +41 -0
  173. maestro_fleet-4.5.0/maestro/secrets/one_password.py +121 -0
  174. maestro_fleet-4.5.0/maestro/secrets/os_keyring.py +93 -0
  175. maestro_fleet-4.5.0/maestro/secrets/refs.py +256 -0
  176. maestro_fleet-4.5.0/maestro/secrets/registry.py +83 -0
  177. maestro_fleet-4.5.0/maestro/secrets/secrets.py +68 -0
  178. maestro_fleet-4.5.0/maestro/secrets/vault.py +103 -0
  179. maestro_fleet-4.5.0/maestro/security/__init__.py +20 -0
  180. maestro_fleet-4.5.0/maestro/security/owasp_patterns.py +725 -0
  181. maestro_fleet-4.5.0/maestro/security/review.py +166 -0
  182. maestro_fleet-4.5.0/maestro/setup.py +617 -0
  183. maestro_fleet-4.5.0/maestro/setup_cheatsheet.py +113 -0
  184. maestro_fleet-4.5.0/maestro/templates/claude-maestro.md.j2 +200 -0
  185. maestro_fleet-4.5.0/maestro/templates/claude-project.md.j2 +80 -0
  186. maestro_fleet-4.5.0/maestro/templates/requirements/bug-report.md.j2 +73 -0
  187. maestro_fleet-4.5.0/maestro/templates/requirements/doc-audit.md.j2 +64 -0
  188. maestro_fleet-4.5.0/maestro/templates/requirements/new-feature.md.j2 +53 -0
  189. maestro_fleet-4.5.0/maestro/templates/requirements/performance.md.j2 +61 -0
  190. maestro_fleet-4.5.0/maestro/templates/requirements/project-setup.md.j2 +59 -0
  191. maestro_fleet-4.5.0/maestro/templates/requirements/refactor.md.j2 +58 -0
  192. maestro_fleet-4.5.0/maestro/templates/requirements/security-review.md.j2 +60 -0
  193. maestro_fleet-4.5.0/maestro/templates/requirements/test-coverage.md.j2 +60 -0
  194. maestro_fleet-4.5.0/maestro/templates_loader.py +90 -0
  195. maestro_fleet-4.5.0/maestro/update.py +643 -0
  196. maestro_fleet-4.5.0/maestro/workspace.py +65 -0
  197. maestro_fleet-4.5.0/maestro_fleet.egg-info/PKG-INFO +382 -0
  198. maestro_fleet-4.5.0/maestro_fleet.egg-info/SOURCES.txt +311 -0
  199. maestro_fleet-4.5.0/maestro_fleet.egg-info/dependency_links.txt +1 -0
  200. maestro_fleet-4.5.0/maestro_fleet.egg-info/entry_points.txt +2 -0
  201. maestro_fleet-4.5.0/maestro_fleet.egg-info/requires.txt +21 -0
  202. maestro_fleet-4.5.0/maestro_fleet.egg-info/top_level.txt +1 -0
  203. maestro_fleet-4.5.0/pyproject.toml +70 -0
  204. maestro_fleet-4.5.0/setup.cfg +4 -0
  205. maestro_fleet-4.5.0/tests/test_ac_pipeline.py +828 -0
  206. maestro_fleet-4.5.0/tests/test_active_processes_drain.py +236 -0
  207. maestro_fleet-4.5.0/tests/test_adm_mcp_cli.py +330 -0
  208. maestro_fleet-4.5.0/tests/test_adm_review_cli.py +338 -0
  209. maestro_fleet-4.5.0/tests/test_adm_security_scan_cli.py +294 -0
  210. maestro_fleet-4.5.0/tests/test_adm_setup.py +240 -0
  211. maestro_fleet-4.5.0/tests/test_adm_setup_e2e.py +182 -0
  212. maestro_fleet-4.5.0/tests/test_adm_update_mcp_migration.py +423 -0
  213. maestro_fleet-4.5.0/tests/test_admiralty_shim.py +49 -0
  214. maestro_fleet-4.5.0/tests/test_audit_anchor.py +127 -0
  215. maestro_fleet-4.5.0/tests/test_audit_anchor_mandatory.py +142 -0
  216. maestro_fleet-4.5.0/tests/test_audit_log.py +172 -0
  217. maestro_fleet-4.5.0/tests/test_auth_legacy_bypass.py +197 -0
  218. maestro_fleet-4.5.0/tests/test_branch_guard.py +334 -0
  219. maestro_fleet-4.5.0/tests/test_branch_guard_loose_orders.py +174 -0
  220. maestro_fleet-4.5.0/tests/test_branch_storm_and_target_repo.py +289 -0
  221. maestro_fleet-4.5.0/tests/test_bridge_setup_wizard.py +185 -0
  222. maestro_fleet-4.5.0/tests/test_cli_argparse.py +120 -0
  223. maestro_fleet-4.5.0/tests/test_cli_main_handler.py +398 -0
  224. maestro_fleet-4.5.0/tests/test_cli_noun_aliases.py +151 -0
  225. maestro_fleet-4.5.0/tests/test_cli_ui.py +191 -0
  226. maestro_fleet-4.5.0/tests/test_cli_version.py +10 -0
  227. maestro_fleet-4.5.0/tests/test_convergence_gating.py +600 -0
  228. maestro_fleet-4.5.0/tests/test_convergence_retry.py +396 -0
  229. maestro_fleet-4.5.0/tests/test_convergence_retry_0272.py +213 -0
  230. maestro_fleet-4.5.0/tests/test_convergence_retry_fast_path.py +437 -0
  231. maestro_fleet-4.5.0/tests/test_cox_security_gate.py +252 -0
  232. maestro_fleet-4.5.0/tests/test_crew.py +679 -0
  233. maestro_fleet-4.5.0/tests/test_data_flow_diagram.py +95 -0
  234. maestro_fleet-4.5.0/tests/test_dispatch_uses_worktree.py +279 -0
  235. maestro_fleet-4.5.0/tests/test_dispatcher_reliability.py +878 -0
  236. maestro_fleet-4.5.0/tests/test_doctor_preflight.py +221 -0
  237. maestro_fleet-4.5.0/tests/test_egress.py +291 -0
  238. maestro_fleet-4.5.0/tests/test_egress_filter.py +140 -0
  239. maestro_fleet-4.5.0/tests/test_egress_modes.py +182 -0
  240. maestro_fleet-4.5.0/tests/test_eight_bells_review_gate.py +266 -0
  241. maestro_fleet-4.5.0/tests/test_env_var_fallback.py +87 -0
  242. maestro_fleet-4.5.0/tests/test_errors.py +97 -0
  243. maestro_fleet-4.5.0/tests/test_fleet_monitor.py +244 -0
  244. maestro_fleet-4.5.0/tests/test_fleet_runner.py +1297 -0
  245. maestro_fleet-4.5.0/tests/test_fleet_runner_mcp.py +177 -0
  246. maestro_fleet-4.5.0/tests/test_friendly_argparse.py +163 -0
  247. maestro_fleet-4.5.0/tests/test_identity_acl.py +140 -0
  248. maestro_fleet-4.5.0/tests/test_identity_integrity.py +145 -0
  249. maestro_fleet-4.5.0/tests/test_identity_rights.py +238 -0
  250. maestro_fleet-4.5.0/tests/test_idle_watchdog.py +355 -0
  251. maestro_fleet-4.5.0/tests/test_invoke_claude_json.py +295 -0
  252. maestro_fleet-4.5.0/tests/test_iteration_timeout.py +45 -0
  253. maestro_fleet-4.5.0/tests/test_licence.py +507 -0
  254. maestro_fleet-4.5.0/tests/test_licence_cli_test_flags.py +169 -0
  255. maestro_fleet-4.5.0/tests/test_licence_config.py +122 -0
  256. maestro_fleet-4.5.0/tests/test_licence_extended.py +381 -0
  257. maestro_fleet-4.5.0/tests/test_licence_fake_activation.py +302 -0
  258. maestro_fleet-4.5.0/tests/test_max_turns.py +160 -0
  259. maestro_fleet-4.5.0/tests/test_mcp_registry.py +434 -0
  260. maestro_fleet-4.5.0/tests/test_modernised_role_files.py +184 -0
  261. maestro_fleet-4.5.0/tests/test_monitor_observability.py +366 -0
  262. maestro_fleet-4.5.0/tests/test_multi_role_advance.py +243 -0
  263. maestro_fleet-4.5.0/tests/test_nav_plan_schema.py +173 -0
  264. maestro_fleet-4.5.0/tests/test_no_legacy_residue.py +197 -0
  265. maestro_fleet-4.5.0/tests/test_no_raw_brand_strings.py +184 -0
  266. maestro_fleet-4.5.0/tests/test_operator_roles.py +164 -0
  267. maestro_fleet-4.5.0/tests/test_owasp_patterns.py +351 -0
  268. maestro_fleet-4.5.0/tests/test_parallel_crew_isolation.py +331 -0
  269. maestro_fleet-4.5.0/tests/test_parallel_voyage_e2e.py +393 -0
  270. maestro_fleet-4.5.0/tests/test_persona_e2e.py +147 -0
  271. maestro_fleet-4.5.0/tests/test_persona_loader.py +114 -0
  272. maestro_fleet-4.5.0/tests/test_persona_resolver.py +172 -0
  273. maestro_fleet-4.5.0/tests/test_persona_security.py +160 -0
  274. maestro_fleet-4.5.0/tests/test_persona_squad_names.py +123 -0
  275. maestro_fleet-4.5.0/tests/test_placeholder_repo_config.py +154 -0
  276. maestro_fleet-4.5.0/tests/test_post_nav_gate.py +266 -0
  277. maestro_fleet-4.5.0/tests/test_post_nav_gate_e2e.py +322 -0
  278. maestro_fleet-4.5.0/tests/test_posttool_file_counter.py +110 -0
  279. maestro_fleet-4.5.0/tests/test_posttool_owasp.py +253 -0
  280. maestro_fleet-4.5.0/tests/test_pr_creation_default_branch.py +336 -0
  281. maestro_fleet-4.5.0/tests/test_pretool_pr_gate.py +180 -0
  282. maestro_fleet-4.5.0/tests/test_pretool_secret_guard.py +459 -0
  283. maestro_fleet-4.5.0/tests/test_project_analysis.py +202 -0
  284. maestro_fleet-4.5.0/tests/test_queue_encoding_tolerance.py +184 -0
  285. maestro_fleet-4.5.0/tests/test_quickstart.py +239 -0
  286. maestro_fleet-4.5.0/tests/test_quickstart_repo_link.py +369 -0
  287. maestro_fleet-4.5.0/tests/test_requirement_templates.py +103 -0
  288. maestro_fleet-4.5.0/tests/test_review_time_tracking.py +179 -0
  289. maestro_fleet-4.5.0/tests/test_role_cli.py +209 -0
  290. maestro_fleet-4.5.0/tests/test_role_dispatcher_integration.py +155 -0
  291. maestro_fleet-4.5.0/tests/test_role_loader.py +201 -0
  292. maestro_fleet-4.5.0/tests/test_role_model_resolution.py +220 -0
  293. maestro_fleet-4.5.0/tests/test_role_overlay.py +345 -0
  294. maestro_fleet-4.5.0/tests/test_role_tool_scoping.py +193 -0
  295. maestro_fleet-4.5.0/tests/test_run_cli.py +176 -0
  296. maestro_fleet-4.5.0/tests/test_secret_doctor_scrub.py +137 -0
  297. maestro_fleet-4.5.0/tests/test_secret_patterns.py +349 -0
  298. maestro_fleet-4.5.0/tests/test_secret_refs.py +144 -0
  299. maestro_fleet-4.5.0/tests/test_secrets_provider.py +188 -0
  300. maestro_fleet-4.5.0/tests/test_security_review_cli.py +115 -0
  301. maestro_fleet-4.5.0/tests/test_security_review_slash_command.py +126 -0
  302. maestro_fleet-4.5.0/tests/test_session_id.py +121 -0
  303. maestro_fleet-4.5.0/tests/test_setup_cheatsheet.py +109 -0
  304. maestro_fleet-4.5.0/tests/test_subprocess_env_scrub.py +194 -0
  305. maestro_fleet-4.5.0/tests/test_usage_voyage_filter.py +124 -0
  306. maestro_fleet-4.5.0/tests/test_verify_and_push_branch_guard.py +100 -0
  307. maestro_fleet-4.5.0/tests/test_voyage_branch_propagation.py +294 -0
  308. maestro_fleet-4.5.0/tests/test_voyage_reconcile.py +296 -0
  309. maestro_fleet-4.5.0/tests/test_voyage_seq_numbering.py +152 -0
  310. maestro_fleet-4.5.0/tests/test_voyage_sweep_ownership.py +351 -0
  311. maestro_fleet-4.5.0/tests/test_workspace_dual_read.py +95 -0
  312. maestro_fleet-4.5.0/tests/test_workstation_setup.py +89 -0
  313. maestro_fleet-4.5.0/tests/test_worktrees.py +397 -0
@@ -0,0 +1,109 @@
1
+ ADMIRALTY FRAMEWORK — COMMERCIAL LICENSE AGREEMENT
2
+
3
+ Copyright (c) 2026 Tech 127 Pty Ltd (Tech 127). All rights reserved.
4
+
5
+ IMPORTANT: READ THIS LICENSE CAREFULLY BEFORE INSTALLING, COPYING, OR USING
6
+ THE ADMIRALTY FRAMEWORK SOFTWARE ("SOFTWARE"). BY INSTALLING OR USING THE
7
+ SOFTWARE, YOU ("LICENSEE") AGREE TO BE BOUND BY THE TERMS OF THIS AGREEMENT.
8
+ IF YOU DO NOT AGREE, DO NOT INSTALL OR USE THE SOFTWARE.
9
+
10
+ ---
11
+
12
+ 1. GRANT OF LICENSE
13
+
14
+ Subject to the terms and conditions of this Agreement, Tech 127 Pty Ltd
15
+ ("Licensor") grants Licensee a limited, non-exclusive, non-transferable,
16
+ non-sublicensable license to install and use the Software solely for Licensee's
17
+ internal business purposes.
18
+
19
+ 2. RESTRICTIONS
20
+
21
+ Licensee shall NOT, directly or indirectly:
22
+
23
+ (a) Redistribute, sell, resell, rent, lease, or otherwise transfer the
24
+ Software or any portion thereof to any third party;
25
+
26
+ (b) Sublicense the Software or grant any rights in the Software to any
27
+ third party;
28
+
29
+ (c) Reverse engineer, decompile, disassemble, or otherwise attempt to
30
+ derive or reconstruct the source code, algorithms, or structure of the
31
+ Software, except to the extent expressly permitted by applicable law
32
+ notwithstanding this restriction;
33
+
34
+ (d) Modify, adapt, translate, or create derivative works based upon the
35
+ Software without prior written consent from the Licensor;
36
+
37
+ (e) Remove, alter, or obscure any proprietary notices, labels, or marks
38
+ on or in the Software;
39
+
40
+ (f) Use the Software to provide services to third parties (including
41
+ software-as-a-service, hosting, or outsourcing arrangements) without
42
+ prior written consent from the Licensor;
43
+
44
+ (g) Use the Software for any unlawful purpose or in violation of any
45
+ applicable laws or regulations.
46
+
47
+ 3. INTELLECTUAL PROPERTY
48
+
49
+ The Software, including all copies, modifications, and derivative works thereof,
50
+ is and shall remain the exclusive property of Tech 127 Pty Ltd (Tech 127). This
51
+ Agreement does not convey to Licensee any title or ownership interest in the
52
+ Software or any intellectual property rights therein. All rights not expressly
53
+ granted herein are reserved by Licensor.
54
+
55
+ 4. CONFIDENTIALITY
56
+
57
+ The Software contains proprietary and confidential information of Licensor.
58
+ Licensee agrees to take reasonable precautions to protect such confidential
59
+ information and not to disclose it to any third party without the prior written
60
+ consent of Licensor.
61
+
62
+ 5. DISCLAIMER OF WARRANTIES
63
+
64
+ THE SOFTWARE IS PROVIDED "AS IS," WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
65
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
66
+ FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT. LICENSOR DOES
67
+ NOT WARRANT THAT THE SOFTWARE WILL BE ERROR-FREE, UNINTERRUPTED, OR FREE OF
68
+ DEFECTS. LICENSEE ASSUMES THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
69
+ OF THE SOFTWARE.
70
+
71
+ 6. LIMITATION OF LIABILITY
72
+
73
+ TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL LICENSOR
74
+ BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, CONSEQUENTIAL, OR
75
+ PUNITIVE DAMAGES (INCLUDING, WITHOUT LIMITATION, LOSS OF PROFITS, LOSS OF
76
+ DATA, BUSINESS INTERRUPTION, OR LOSS OF GOODWILL) ARISING OUT OF OR RELATED
77
+ TO THIS AGREEMENT OR THE USE OR INABILITY TO USE THE SOFTWARE, EVEN IF
78
+ LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
79
+
80
+ IN NO EVENT SHALL LICENSOR'S TOTAL CUMULATIVE LIABILITY ARISING OUT OF OR
81
+ RELATED TO THIS AGREEMENT EXCEED THE AMOUNT PAID BY LICENSEE FOR THE SOFTWARE
82
+ IN THE TWELVE (12) MONTHS PRECEDING THE CLAIM.
83
+
84
+ 7. TERM AND TERMINATION
85
+
86
+ This Agreement is effective until terminated. Licensor may terminate this
87
+ Agreement immediately upon written notice if Licensee breaches any term hereof.
88
+ Upon termination, Licensee must immediately cease all use of the Software and
89
+ destroy all copies in its possession.
90
+
91
+ 8. GOVERNING LAW
92
+
93
+ This Agreement shall be governed by and construed in accordance with the laws
94
+ of the jurisdiction in which Licensor is domiciled, without regard to its
95
+ conflict of law provisions.
96
+
97
+ 9. ENTIRE AGREEMENT
98
+
99
+ This Agreement constitutes the entire agreement between the parties with respect
100
+ to the Software and supersedes all prior or contemporaneous understandings,
101
+ agreements, or representations.
102
+
103
+ 10. CONTACT
104
+
105
+ For licensing enquiries, permissions beyond the scope of this license, or to
106
+ report a violation, contact:
107
+
108
+ Tech 127 Pty Ltd
109
+ GitHub: https://github.com/127hub
@@ -0,0 +1,382 @@
1
+ Metadata-Version: 2.4
2
+ Name: maestro-fleet
3
+ Version: 4.5.0
4
+ Summary: Maestro — Fleet Command System: AI-powered multi-agent Claude Code orchestration framework
5
+ License: Proprietary
6
+ Project-URL: Homepage, https://github.com/tavisbasing/Maestro
7
+ Project-URL: Repository, https://github.com/tavisbasing/Maestro
8
+ Requires-Python: >=3.9
9
+ Description-Content-Type: text/markdown
10
+ License-File: LICENSE
11
+ Requires-Dist: jinja2>=3.0
12
+ Requires-Dist: jsonschema>=4.0
13
+ Provides-Extra: dev
14
+ Requires-Dist: pytest>=8.0; extra == "dev"
15
+ Requires-Dist: pytest-cov>=5.0; extra == "dev"
16
+ Requires-Dist: pytest-mock>=3.14; extra == "dev"
17
+ Provides-Extra: azure-secrets
18
+ Requires-Dist: azure-keyvault-secrets>=4.7; extra == "azure-secrets"
19
+ Requires-Dist: azure-identity>=1.15; extra == "azure-secrets"
20
+ Provides-Extra: azure-anchor
21
+ Requires-Dist: azure-storage-blob>=12.19; extra == "azure-anchor"
22
+ Requires-Dist: azure-identity>=1.15; extra == "azure-anchor"
23
+ Provides-Extra: aws-secrets
24
+ Requires-Dist: boto3>=1.34; extra == "aws-secrets"
25
+ Provides-Extra: aws-anchor
26
+ Requires-Dist: boto3>=1.34; extra == "aws-anchor"
27
+ Dynamic: license-file
28
+
29
+ # Maestro — Multi-Agent Orchestration for Claude Code
30
+
31
+ [![CI](https://github.com/tavisbasing/Maestro/actions/workflows/ci.yml/badge.svg)](https://github.com/tavisbasing/Maestro/actions/workflows/ci.yml)
32
+
33
+ > AI-powered multi-agent orchestration for Claude Code. Coordinate up to 5 parallel AI squads across complex software projects — with role-based specialisation, dependency ordering, token tracking, backup/restore, and full audit trails.
34
+
35
+ **Site:** [maestrodevs.com](https://maestrodevs.com) · **Docs:** [docs.maestrodevs.com](https://docs.maestrodevs.com) · **Install:** `pip install maestro-fleet`
36
+
37
+ > **Formerly Admiralty.** Maestro was rebranded from the Admiralty Fleet Command System. In v4.0, the `adm`/`admiralty` CLI aliases and `ADMIRALTY_*` environment variables were permanently removed. Use `mso` and `MAESTRO_*` exclusively. The workspace directory is now `.mso/` (auto-migrated from `.adm/` on first `mso dispatch`). See [docs/MIGRATION-v4.md](docs/MIGRATION-v4.md) for the upgrade guide.
38
+
39
+ ---
40
+
41
+ ## What It Does
42
+
43
+ Maestro turns Claude Code into a coordinated team. You define work as **Orders** (discrete tasks), group them into **Sprints** (voyages), and the Dispatcher launches up to 5 specialised **Squads** in parallel — each running as an independent Claude Code session in its own role.
44
+
45
+ ```
46
+ Human (You) → LEAD (Claude, interactive) → Dispatcher (mso dispatch) → 5 Squads
47
+ ```
48
+
49
+ In the built-in **nautical persona** (the default), this reads:
50
+
51
+ ```
52
+ Captain (You) → Quartermaster (Claude) → Fleet Admiral (mso dispatch) → 5 Crews
53
+ ```
54
+
55
+ The nautical persona is purely stylistic — same mechanics, different vocabulary. See [docs/PERSONAS.md](docs/PERSONAS.md) for persona reference and switching instructions.
56
+
57
+ **Roles:**
58
+
59
+ | Code | Name | Nautical alias | Focus | Model |
60
+ |------|------|---------------|-------|-------|
61
+ | PLN | Planner | Navigator (NAV) | Planning & architecture | Sonnet 4.6 |
62
+ | BLD | Builder | Shipwright (SHP) | Development & implementation | Sonnet 4.6 |
63
+ | TST | Tester | Bosun (BOS) | QA & testing | Sonnet 4.6 |
64
+ | DOC | Docs writer | Scribe (SCR) | Documentation | Sonnet 4.6 |
65
+ | SEC | Security reviewer | Lookout (LKT) | Security & investigation | Haiku 4.5 |
66
+ | REL | Releaser | Coxswain (COX) | Integration & deployment | Opus 4.7 |
67
+
68
+ ---
69
+
70
+ ## Installation
71
+
72
+ 1. Install Maestro from public PyPI:
73
+
74
+ ```bash
75
+ pip install maestro-fleet
76
+ ```
77
+
78
+ To pin a specific version, append e.g. `==4.5.0`. The Python import name is `maestro` regardless (so `from maestro import …` keeps working). Airgapped / restricted-egress operators: see [docs/AIR-GAPPED.md](docs/AIR-GAPPED.md) for the private-index install pattern.
79
+
80
+ 2. Activate your licence (issued via Polar; see <https://maestrodevs.com/pricing>):
81
+
82
+ ```bash
83
+ mso licence activate <YOUR-KEY>
84
+ ```
85
+
86
+ 3. Verify the CLI is installed and the licence is active:
87
+
88
+ ```bash
89
+ mso version
90
+ mso licence status
91
+ ```
92
+
93
+ **v4.0:** Legacy CLI aliases have been removed. Use `mso` exclusively.
94
+
95
+ The wheel itself is openly distributed; the runtime licence check is the gate. Source remains private under proprietary licence; see [LICENSE](LICENSE) for the full terms. **Air-gapped / restricted-egress environments:** see [docs/AIR-GAPPED.md](docs/AIR-GAPPED.md) for the staging-machine activation pattern and the egress allowlist.
96
+
97
+ Then scaffold a workspace:
98
+
99
+ ```bash
100
+ mso init --project MYPROJECT --directory my-workspace
101
+ cd my-workspace
102
+ mso dispatch --max-crews 3
103
+ ```
104
+
105
+ To enable the Slack bridge for mobile control, run the setup wizard before starting the bridge:
106
+
107
+ ```bash
108
+ mso bridge setup # interactive configuration wizard (first-time setup)
109
+ mso bridge start # start after setup is complete
110
+ ```
111
+
112
+ ---
113
+
114
+ ## Quickstart
115
+
116
+ ```bash
117
+ pip install maestro-fleet
118
+ mso quickstart
119
+ ```
120
+
121
+ `mso quickstart` verifies your environment, scaffolds a demo workspace, dispatches a three-order demo sprint, and prints a summary — all in one command. Full guide: [docs/QUICKSTART.md](docs/QUICKSTART.md).
122
+
123
+ For deeper configuration, prerequisite validation, project analysis, and CI-friendly `--check` mode: `mso setup` — see [docs/SETUP.md](docs/SETUP.md).
124
+
125
+ ---
126
+
127
+ ## Persona Quickstart
128
+
129
+ Maestro ships with four built-in personas. Switch with:
130
+
131
+ ```bash
132
+ # Use corporate persona (professional, no nautical metaphors)
133
+ mso dispatch --persona corporate
134
+
135
+ # Use startup persona (casual, fast-moving)
136
+ mso dispatch --persona startup
137
+
138
+ # Use default (minimal, no character)
139
+ mso dispatch --persona default
140
+
141
+ # The nautical persona is active by default
142
+ mso dispatch # same as --persona nautical
143
+ ```
144
+
145
+ Or set it permanently in `.mso/config/workspace.json`:
146
+
147
+ ```json
148
+ {
149
+ "persona": "corporate"
150
+ }
151
+ ```
152
+
153
+ Full persona reference: [docs/PERSONAS.md](docs/PERSONAS.md).
154
+
155
+ ---
156
+
157
+ ## CLI Reference
158
+
159
+ ```
160
+ # Dispatch & monitoring
161
+ mso dispatch [--max-crews N] [--cleanup] [--stagger-delay S] [--timeout M] [--max-turns N] [--persona NAME]
162
+ mso status [--once] [--compact]
163
+ mso cleanup
164
+ mso squad --crew {1-5} [--status | --watch | --cleanup] # alias: crew
165
+ mso verify [--voyage VOY-ID] [--skip-tests]
166
+
167
+ # Sprints (voyages), orders & review
168
+ mso sprint create "Title" | list | status VOY-ID | reconcile [--dry-run] # alias: voyage
169
+ mso bug "description" [!high]
170
+ mso review queue | show | approve | revise --notes T | reject --notes T <ORDER-ID>
171
+
172
+ # Roles (per-role overlays — FTR-0186)
173
+ mso roles list | show CODE [--core|--overlay-only|--json] | validate | diff CODE | migrate-paths
174
+
175
+ # Workspace lifecycle
176
+ mso init --project ACRONYM [--directory PATH]
177
+ mso quickstart
178
+ mso setup [--check]
179
+ mso update [--dry-run] [--force] [--directory PATH]
180
+ mso config models
181
+ mso projects list | remove
182
+
183
+ # Usage / security / identity / audit (enterprise tiers)
184
+ mso usage [--summary | --voyage VOY-ID | --order ID | --report]
185
+ mso security scan [--json --severity-threshold HIGH] | review [--against REF --staged]
186
+ mso identity init | add-user | add-group | user|group|acl <add|remove|list> | show
187
+ mso audit anchor [--auto]
188
+ mso secrets doctor | rotate --key KEY | scrub | list
189
+ mso data-flow
190
+
191
+ # Licence / MCP / bridge / hooks / backup
192
+ mso licence activate <KEY> | status | deactivate | revalidate # alias: license
193
+ mso mcp list | add | remove | validate | show
194
+ mso bridge setup | start | stop | restart | status | test
195
+ mso hooks install | uninstall
196
+ mso backup [--project ACRONYM] [--list]
197
+ mso restore BACKUP_FILE [--force] [--dry-run]
198
+ mso version
199
+ ```
200
+
201
+ All commands use the `mso` prefix exclusively (the `adm` alias was removed in v4.0). Run `mso <command> --help` for the full flag set per command.
202
+
203
+ See [docs/CLI-REFERENCE.md](docs/CLI-REFERENCE.md) for full documentation.
204
+
205
+ ---
206
+
207
+ ## V6 Enterprise Hardening — foundation merged (v3.0.0 release-gated)
208
+
209
+ A sprint targeting **v3.0.0** has shipped its foundation: identity + ACL, immutable audit trail with external anchoring, secrets-provider abstraction (Azure Key Vault / AWS Secrets Manager / HashiCorp Vault / 1Password / OS keyring / env), data-residency egress filter (permissive / restrictive / air-gapped / proxied), GDPR-aligned identity privacy + Article 15/17/18 rights tooling, and operator role separation (Human / Fleet Operator / Contributor / Auditor). Foundation merged in [PR #24](https://github.com/tavisbasing/Maestro/pull/24).
210
+
211
+ The post-implementation pen-test found **2 CRITICAL + 2 HIGH** open findings (audit-log truncation, print/subprocess secrets exfil, raw-socket egress bypass). The REL release gate **BLOCKS v3.0.0** until those are resolved in a v3.0.x patch sprint.
212
+
213
+ See:
214
+ - [docs/ENTERPRISE-SECURITY.md](docs/ENTERPRISE-SECURITY.md) — operator + buyer guide
215
+ - [docs/COMPLIANCE-MAPPING.md](docs/COMPLIANCE-MAPPING.md) — SOC2 + ISO27001 control mapping
216
+ - [docs/TRUST.md](docs/TRUST.md) — public-facing trust posture + open findings + SLAs
217
+
218
+ ## What's New
219
+
220
+ For the full per-release history (including the latest release) see **[CHANGELOG.md](CHANGELOG.md)**. Highlights since v4.0:
221
+
222
+ - **v4.3.x — dispatcher reliability:** per-crew worktree isolation (parallel squads), crash-safe finalization + watchdog, convergence gating (no silent archive on a failed merge), per-tick heartbeat, and a process-tree kill for hung crews.
223
+ - **v4.2.0 — security posture hardening** + `mso usage --voyage` fixes.
224
+ - **v4.1.0 — v4 clean-break** (legacy `admiralty`/`adm` purge completed).
225
+
226
+ ### v4.0.0 — Hard-cutover rebrand
227
+
228
+ - **All legacy aliases removed.** Legacy CLI entry points are gone. Use `mso` only. `MAESTRO_*` env vars exclusively. See [docs/MIGRATION-v4.md](docs/MIGRATION-v4.md).
229
+ - **Workspace directory:** `.adm/` auto-migrates to `.mso/` on first `mso dispatch`. Use `mso migrate-workspace --resolve` for split-brain situations.
230
+ - **`mso migrate-workspace` command** added for manual migration and split-brain resolution.
231
+ - **Default GitHub org** configurable via `workspace.json` `defaultGitHubOrg` field.
232
+
233
+ ## What's New in v3.0.0
234
+
235
+ **v3.0.0 — Admiralty → Maestro rebrand + persona system**
236
+
237
+ - **Rebrand to Maestro.** CLI entry point: `mso` (legacy `adm` retained through v3.x). Package: `maestro` (legacy `admiralty` retained through v3.x). Environment variables: `MAESTRO_*` (legacy `ADMIRALTY_*` dual-read through v3.x). All shims removed in v4.0.
238
+ - **Persona system.** Four built-in personas: nautical (default, the heritage theme), corporate, startup, default (minimal). Switch with `--persona` flag, `MAESTRO_PERSONA` env var, or `workspace.json`. Custom personas supported via YAML. See [docs/PERSONAS.md](docs/PERSONAS.md).
239
+ - **Role renames.** Canonical codes: PLN/BLD/TST/DOC/SEC/REL/LEAD. Legacy codes NAV/SHP/BOS/SCR/LKT/COX/QM remain as aliases and continue to work in all order JSON, role-paths config, and CLI flags.
240
+ - **Dual-read workspace.** `.mso/` preferred, `.adm/` fallback. Both are equivalent; existing `.adm/` workspaces work without migration.
241
+ - **CLAUDE.md persona injection.** The Quartermaster (nautical) / LEAD (default) framing in CLAUDE.md is now persona-driven via templates.
242
+
243
+ ## What's New in v2.5.0
244
+
245
+ **v2.5.0 — Licence backend (Polar.sh) + public wheel distribution + branch discipline**
246
+
247
+ - **`mso licence` CLI** — `activate <KEY>` / `status` / `deactivate` / `revalidate`. Replaces the GitHub-collaborator auth gate. HMAC-signed local store at `~/.maestro/licence.json` (mode 0600); per-customer signing secret in OS keychain. 14-day offline grace from each successful online validation.
248
+ - **Polar.sh as the single licence integration.** Selected over Lemon Squeezy / Paddle / Keygen-self-host on take rate, OSS alignment, and AU-tax MoR coverage.
249
+ - **Public wheel distribution** at [`maestrodevs/maestrodevs.github.io`](https://github.com/maestrodevs/maestrodevs.github.io). The source repo stays private; the dist repo ships built wheels via a GitHub Pages PEP 503 simple/ index.
250
+ - **Branch discipline enforcement (BUG-0004).** `voyageBranch` is now load-bearing across three layers — dispatcher's `_verify_dispatcher_branch`, pretool `branch_guard.py`, and a "Branch discipline (mandatory)" section in every role prompt template.
251
+ - **Domain:** [maestrodevs.com](https://maestrodevs.com) (live).
252
+
253
+ ## What's New in v2.2.0
254
+
255
+ **v2.2.0 — Releaser role expansion**
256
+ - **REL (Coxswain) is the terminal role** for every sprint — opens the PR, monitors `gh pr checks --watch`, fetches Copilot review comments, applies/regresses/declines each, resolves review threads via GraphQL, writes the `REL-to-LEAD.md` handoff, and notifies the Human via the bridge
257
+ - **Default REL model bumped to Opus 4.7** (`claude-opus-4-7`)
258
+ - **One sprint = one branch = one PR** — bundling forbidden by the branching policy
259
+
260
+ ## What's New in v2.1.0
261
+
262
+ **v2.1.0 — Quality gates + workspace updates**
263
+ - **Quality gates** — structured `acceptanceCriteria` in orders; TST validates, REL enforces. Three validation types: `manual`, `command`, `file-exists`. Two severity levels: `blocking` and `advisory`
264
+ - **`mso update`** — new command to propagate schema and template changes from the installed pip package into an existing `.mso/` workspace without overwriting user data
265
+
266
+ ## What's New in v2.0.0
267
+
268
+ **v2.0.0 — Architecture separation + `adm` CLI**
269
+ - **`adm` command** — CLI renamed from the v1.x binary to `adm` for brevity (now `mso` in v3.0.0+)
270
+ - **`.mso/` folder** — project artefacts live in `.mso/` (or `.maestro/` in v3.0.0+) in user projects
271
+ - **CLAUDE.md layering** — three-layer context system: project CLAUDE.md → `.mso/claude.md` → pip docs
272
+ - **`mso init`** scaffolds `.mso/` with pre-filled CLAUDE.md layers from templates
273
+
274
+ See [maestro/docs/VERSIONING.md](maestro/docs/VERSIONING.md) for full version history and scheme.
275
+
276
+ ---
277
+
278
+ ## Repo Structure
279
+
280
+ | Repository | Visibility | Purpose |
281
+ |---|---|---|
282
+ | [`tavisbasing/Maestro`](https://github.com/tavisbasing/Maestro) | private | Source — framework code + MSO project state. Single `main` branch; sprint / bug branches PR back to it. |
283
+ | [`maestrodevs/maestrodevs.github.io`](https://github.com/maestrodevs/maestrodevs.github.io) | public | Distribution — built wheels + PEP 503 simple/ index served via GitHub Pages. Auto-populated by the publish workflow on every `v*.*.*` tag-push. |
284
+
285
+ The wheel is openly downloadable; runtime use requires a valid licence key (see [docs/LICENCE.md](docs/LICENCE.md)).
286
+
287
+ In user projects, Maestro artefacts live under `.mso/` (scaffolded by `mso init`):
288
+
289
+ ```
290
+ my-project/
291
+ ├── .mso/ # Maestro artefacts
292
+ │ ├── claude.md # Layer 2: Maestro orchestration context
293
+ │ ├── config/ # workspace.json, role-paths.json
294
+ │ ├── orders/ # active/, complete/, failed/
295
+ │ ├── voyages/ # active/, complete/
296
+ │ └── queues/ # orders/, bugs/, security/, ...
297
+ └── CLAUDE.md # Layer 1: project architecture, stack, conventions
298
+ ```
299
+
300
+ ---
301
+
302
+ ## Glossary
303
+
304
+ Maestro uses role-neutral terminology by default. The built-in nautical persona adds a layer of seafaring vocabulary. Here is the full mapping:
305
+
306
+ | Canonical term | Nautical persona | Plain description |
307
+ |----------------|-----------------|-------------------|
308
+ | **Human** | Captain | The person directing the squads |
309
+ | **LEAD** | Quartermaster | Your AI partner in the main session — plans, delegates, advises |
310
+ | **Dispatcher** | Fleet Admiral | The automation layer that launches and manages squads |
311
+ | **Squad** | Crew | An independent Claude Code session executing a single order |
312
+ | **PLN** | Navigator (NAV) | Plans, writes architecture notes, breaks requirements into orders |
313
+ | **BLD** | Shipwright (SHP) | Implements features and fixes bugs |
314
+ | **TST** | Bosun (BOS) | Tests, reviews, and validates work |
315
+ | **DOC** | Scribe (SCR) | Creates and updates documentation |
316
+ | **SEC** | Lookout (LKT) | Audits code for vulnerabilities and risks |
317
+ | **REL** | Coxswain (COX) | Handles deployment, CI/CD, and release |
318
+ | **Order** | Order | A single unit of work assigned to one squad |
319
+ | **Sprint** | Voyage | A group of related orders, tracked together |
320
+ | **Requirement** | Requirement | High-level description of what needs to happen |
321
+ | **Dispatch** | Dispatch | Starting the fleet to process queued orders |
322
+
323
+ ---
324
+
325
+ ## Documentation
326
+
327
+ | Document | Audience |
328
+ |----------|----------|
329
+ | [docs/QUICKSTART.md](docs/QUICKSTART.md) | New users — 5-minute guide to first dispatch |
330
+ | [docs/GETTING-STARTED.md](docs/GETTING-STARTED.md) | New users — full installation and setup walkthrough |
331
+ | [docs/PERSONAS.md](docs/PERSONAS.md) | All users — persona system reference |
332
+ | [docs/CHAIN-OF-COMMAND.md](docs/CHAIN-OF-COMMAND.md) | Technical — 3-layer chain spec with persona-aware sub-sections |
333
+ | [docs/LICENCE.md](docs/LICENCE.md) | All users — `mso licence` activate / status / deactivate / revalidate |
334
+ | [docs/AIR-GAPPED.md](docs/AIR-GAPPED.md) | Restricted-egress / offline operators |
335
+ | [docs/CLI-REFERENCE.md](docs/CLI-REFERENCE.md) | All users — complete command reference |
336
+ | [docs/OPERATOR-GUIDE.md](docs/OPERATOR-GUIDE.md) | All users — daily operations, scaling, cost management |
337
+ | [docs/ROLES-GUIDE.md](docs/ROLES-GUIDE.md) | All users — understanding squad roles |
338
+ | [docs/ORDERS-AND-VOYAGES.md](docs/ORDERS-AND-VOYAGES.md) | All users — creating and managing work |
339
+ | [docs/BRANCH-DISCIPLINE.md](docs/BRANCH-DISCIPLINE.md) | Operators — voyageBranch enforcement |
340
+ | [docs/TRUST.md](docs/TRUST.md) | Security buyers — trust posture, threat model, open findings, SLAs |
341
+ | [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) | Security / infra — diagram, data flow, egress inventory |
342
+ | [docs/OWNER-GUIDE.md](docs/OWNER-GUIDE.md) | Framework owners — development and releases |
343
+
344
+ ---
345
+
346
+ ## Security
347
+
348
+ For security questions, vulnerability reporting, and compliance documentation:
349
+
350
+ - [SECURITY.md](SECURITY.md) — vulnerability reporting policy + links to all security docs
351
+ - [docs/PUBLIC-SECURITY-OVERVIEW.md](docs/PUBLIC-SECURITY-OVERVIEW.md) — 1-page CISO-facing summary with data-flow diagram
352
+ - [docs/ENTERPRISE-SECURITY.md](docs/ENTERPRISE-SECURITY.md) — operator technical detail (ACL, audit, secrets, egress)
353
+ - [docs/COMPLIANCE-MAPPING.md](docs/COMPLIANCE-MAPPING.md) — SOC2 + ISO27001 control mapping
354
+
355
+ **Report vulnerabilities** to **maestro@tech127.com** — do not open public GitHub issues.
356
+
357
+ ---
358
+
359
+ ## Requirements
360
+
361
+ - Python 3.9+
362
+ - [Claude Code](https://claude.ai/code) CLI installed and authenticated
363
+ - Anthropic API key with access to Sonnet 4.6, Haiku 4.5, and Opus 4.7
364
+
365
+ ---
366
+
367
+ ## License
368
+
369
+ Proprietary — All Rights Reserved.
370
+
371
+ The Maestro framework is commercial software, owned and operated by **Tech 127 Pty Ltd** (Australia). Use is governed by the terms of the [LICENSE](LICENSE) file included in this repository. In summary:
372
+
373
+ - You may use the software for internal business purposes under the terms of a valid licence (issued at activation via Polar — see [maestrodevs.com/pricing](https://maestrodevs.com/pricing)).
374
+ - Redistribution, resale, sublicensing, and reverse engineering are strictly prohibited.
375
+ - All intellectual property rights remain with Tech 127 Pty Ltd.
376
+
377
+ The wheel published at [maestrodevs.github.io](https://github.com/maestrodevs/maestrodevs.github.io) is openly downloadable; the **runtime licence check** is the gate. Runtime use without a valid key is unauthorised and a breach of the licence.
378
+
379
+ For licensing enquiries, billing, or sales:
380
+ - Email: [maestro@tech127.com](mailto:maestro@tech127.com)
381
+ - Website: [maestrodevs.com](https://maestrodevs.com)
382
+ - Docs: [docs.maestrodevs.com](https://docs.maestrodevs.com)