mayhem-cli 0.9.0__tar.gz → 0.9.1__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 (423) hide show
  1. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/PKG-INFO +48 -26
  2. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/README.md +47 -25
  3. mayhem_cli-0.9.1/docs/README.md +59 -0
  4. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/docs/config.md +2 -2
  5. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/docs/drill-spec.md +1 -1
  6. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/docs/fault-catalog/README.md +1 -1
  7. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/command_registry.py +4 -0
  8. mayhem_cli-0.9.1/src/mayhem/cli/completion.py +76 -0
  9. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli_active_surface.py +1 -0
  10. mayhem_cli-0.9.1/tests/unit/test_cli_completion.py +208 -0
  11. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli_exhaustive_matrix.py +1 -0
  12. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli_resolver.py +1 -1
  13. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_command_inventory.py +1 -0
  14. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_documentation_consistency.py +0 -5
  15. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_expansion_checkpoint.py +4 -3
  16. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_release_contract.py +2 -88
  17. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_v090_docs_contract.py +0 -8
  18. mayhem_cli-0.9.0/docs/README.md +0 -74
  19. mayhem_cli-0.9.0/docs/adr/adr-m7-1-k8s-executor.md +0 -98
  20. mayhem_cli-0.9.0/docs/adr-adr-m7-1-k8s-executor-flip.md +0 -172
  21. mayhem_cli-0.9.0/docs/architecture/fault-taxonomy.md +0 -5
  22. mayhem_cli-0.9.0/docs/architecture/safety.md +0 -12
  23. mayhem_cli-0.9.0/docs/architecture/toolkit.md +0 -5
  24. mayhem_cli-0.9.0/docs/grounding-log.md +0 -69
  25. mayhem_cli-0.9.0/docs/grounding-rules.md +0 -77
  26. mayhem_cli-0.9.0/docs/k8s-new.md +0 -5
  27. mayhem_cli-0.9.0/docs/k8s-plan-1.md +0 -437
  28. mayhem_cli-0.9.0/docs/k8s-plan-2.md +0 -387
  29. mayhem_cli-0.9.0/docs/m7-k8s-executor-discovery.md +0 -164
  30. mayhem_cli-0.9.0/docs/new-plan/00-product-and-cli-roadmap.md +0 -84
  31. mayhem_cli-0.9.0/docs/new-plan/01-workflow-command-architecture.md +0 -84
  32. mayhem_cli-0.9.0/docs/new-plan/02-guided-onboarding-and-target-profiles.md +0 -75
  33. mayhem_cli-0.9.0/docs/new-plan/03-plan-first-execution-and-unified-evidence.md +0 -77
  34. mayhem_cli-0.9.0/docs/new-plan/04-output-errors-and-script-compatibility.md +0 -77
  35. mayhem_cli-0.9.0/docs/new-plan/05-configuration-policy-and-environment-safety.md +0 -73
  36. mayhem_cli-0.9.0/docs/new-plan/06-docker-podman-reliability-slice.md +0 -75
  37. mayhem_cli-0.9.0/docs/new-plan/07-first-class-kubernetes-engine.md +0 -78
  38. mayhem_cli-0.9.0/docs/new-plan/08-fault-catalog-reliability-matrix.md +0 -83
  39. mayhem_cli-0.9.0/docs/new-plan/09-campaigns-coverage-and-explore-loop.md +0 -79
  40. mayhem_cli-0.9.0/docs/new-plan/10-diagnostics-recovery-and-reporting.md +0 -76
  41. mayhem_cli-0.9.0/docs/new-plan/11-extension-api-and-packaging.md +0 -88
  42. mayhem_cli-0.9.0/docs/new-plan/README.md +0 -52
  43. mayhem_cli-0.9.0/docs/observability.md +0 -44
  44. mayhem_cli-0.9.0/docs/policy-and-break-glass.md +0 -31
  45. mayhem_cli-0.9.0/docs/product/cli-product-direction.md +0 -64
  46. mayhem_cli-0.9.0/docs/product/command-architecture.md +0 -100
  47. mayhem_cli-0.9.0/docs/provider-sdk.md +0 -253
  48. mayhem_cli-0.9.0/docs/reference/cli.md +0 -289
  49. mayhem_cli-0.9.0/docs/reference/experiment-dsl.md +0 -10
  50. mayhem_cli-0.9.0/docs/reference/fault-catalog.md +0 -92
  51. mayhem_cli-0.9.0/docs/reference/output-schema.md +0 -76
  52. mayhem_cli-0.9.0/docs/reference/sqlite-schema.md +0 -15
  53. mayhem_cli-0.9.0/docs/superpowers/plans/2026-09-24-container-kubernetes-fault-expansion-plan.md +0 -267
  54. mayhem_cli-0.9.0/docs/superpowers/plans/2026-09-24-documentation-to-implementation-plan.md +0 -406
  55. mayhem_cli-0.9.0/docs/superpowers/specs/2026-09-24-container-kubernetes-fault-expansion-design.md +0 -61
  56. mayhem_cli-0.9.0/docs/superpowers/specs/2026-09-24-documentation-to-implementation-design.md +0 -91
  57. mayhem_cli-0.9.0/docs/v0.9.0/01-vision-and-positioning.md +0 -64
  58. mayhem_cli-0.9.0/docs/v0.9.0/02-feature-brainstorm.md +0 -173
  59. mayhem_cli-0.9.0/docs/v0.9.0/03-gaps-and-standards.md +0 -106
  60. mayhem_cli-0.9.0/docs/v0.9.0/04-architecture-and-decisions.md +0 -115
  61. mayhem_cli-0.9.0/docs/v0.9.0/05-release-roadmap.md +0 -140
  62. mayhem_cli-0.9.0/docs/v0.9.0/06-core-implementation-plan.md +0 -276
  63. mayhem_cli-0.9.0/docs/v0.9.0/07-expansion-implementation-plan.md +0 -274
  64. mayhem_cli-0.9.0/docs/v0.9.0/08-release-readiness.md +0 -98
  65. mayhem_cli-0.9.0/docs/v0.9.0/09-decision-log.md +0 -65
  66. mayhem_cli-0.9.0/docs/v0.9.0/10-repository-evidence.md +0 -97
  67. mayhem_cli-0.9.0/docs/v0.9.0/README.md +0 -38
  68. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/.coverage +0 -0
  69. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/.github/workflows/ci.yml +0 -0
  70. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/.github/workflows/conformance.yml +0 -0
  71. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/.github/workflows/release.yml +0 -0
  72. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/.gitignore +0 -0
  73. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/CHANGELOG.md +0 -0
  74. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/Justfile +0 -0
  75. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/cliff.toml +0 -0
  76. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/docs/compensation.md +0 -0
  77. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/docs/fault-catalog/reliability-matrix.md +0 -0
  78. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/examples/k8s/README.md +0 -0
  79. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/examples/k8s/kubernetes.yaml +0 -0
  80. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/examples/k8s/mayhem.yaml +0 -0
  81. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/examples/providers/test-catalog.json +0 -0
  82. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/examples/providers/test_provider.py +0 -0
  83. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/examples/testCase/data/hello.txt +0 -0
  84. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/examples/testCase/data/index.html +0 -0
  85. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/examples/testCase/docker-compose.mayhem.yml +0 -0
  86. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/examples/testCase/docker-compose.yml +0 -0
  87. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/examples/testCase/mayhem-safe-docker-podman.yaml +0 -0
  88. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/examples/testCase/mayhem.yaml +0 -0
  89. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/examples/testCase/nginx.conf +0 -0
  90. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/pyproject.toml +0 -0
  91. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/scripts/verify_release_artifacts.py +0 -0
  92. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/__main__.py +0 -0
  93. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/agent/__init__.py +0 -0
  94. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/agent/cli.py +0 -0
  95. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/agents/__init__.py +0 -0
  96. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/agents/capabilities.py +0 -0
  97. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/agents/executors.py +0 -0
  98. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/agents/impact.py +0 -0
  99. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/agents/k8s_control.py +0 -0
  100. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/agents/k8s_resolve.py +0 -0
  101. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/agents/lease_client.py +0 -0
  102. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/agents/probes.py +0 -0
  103. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/agents/protocol.py +0 -0
  104. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/agents/server.py +0 -0
  105. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/agents/sinks.py +0 -0
  106. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/agents/transports.py +0 -0
  107. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/agents/watchdog.py +0 -0
  108. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/__init__.py +0 -0
  109. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/app.py +0 -0
  110. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/campaign.py +0 -0
  111. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/commands.py +0 -0
  112. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/config_cmd.py +0 -0
  113. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/context.py +0 -0
  114. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/coverage_cmd.py +0 -0
  115. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/dependency.py +0 -0
  116. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/doctor.py +0 -0
  117. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/errors.py +0 -0
  118. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/execution.py +0 -0
  119. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/exit_codes.py +0 -0
  120. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/experiment.py +0 -0
  121. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/expert.py +0 -0
  122. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/explore.py +0 -0
  123. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/extend.py +0 -0
  124. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/game_day.py +0 -0
  125. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/init.py +0 -0
  126. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/inspect.py +0 -0
  127. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/lifecycle.py +0 -0
  128. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/next_cmd.py +0 -0
  129. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/output.py +0 -0
  130. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/render.py +0 -0
  131. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/renderers.py +0 -0
  132. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/resolver.py +0 -0
  133. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/services.py +0 -0
  134. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/style.py +0 -0
  135. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/toolkit.py +0 -0
  136. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/topology.py +0 -0
  137. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/verify_bundle.py +0 -0
  138. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/cli/workflows.py +0 -0
  139. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/config.py +0 -0
  140. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/controller/__init__.py +0 -0
  141. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/controller/cell_runner.py +0 -0
  142. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/controller/compensation.py +0 -0
  143. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/controller/executor.py +0 -0
  144. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/controller/explore_flow.py +0 -0
  145. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/controller/janitor.py +0 -0
  146. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/controller/k8s_runtime.py +0 -0
  147. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/controller/observability_collector.py +0 -0
  148. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/controller/observations.py +0 -0
  149. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/controller/plan_diff.py +0 -0
  150. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/controller/planner.py +0 -0
  151. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/controller/preflight.py +0 -0
  152. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/controller/recovery.py +0 -0
  153. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/controller/resilience_report.py +0 -0
  154. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/controller/resource_manager.py +0 -0
  155. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/controller/safety.py +0 -0
  156. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/controller/target_selector.py +0 -0
  157. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/__init__.py +0 -0
  158. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/admission.py +0 -0
  159. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/campaign_checkpoint.py +0 -0
  160. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/campaigns.py +0 -0
  161. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/cancellation.py +0 -0
  162. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/candidates.py +0 -0
  163. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/capabilities.py +0 -0
  164. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/capability_status.py +0 -0
  165. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/catalog.py +0 -0
  166. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/cell_rules.py +0 -0
  167. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/checks.py +0 -0
  168. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/common.py +0 -0
  169. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/coverage.py +0 -0
  170. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/coverage_graph.py +0 -0
  171. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/decisions.py +0 -0
  172. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/errors.py +0 -0
  173. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/events.py +0 -0
  174. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/evidence.py +0 -0
  175. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/evidence_bundle.py +0 -0
  176. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/execution_context.py +0 -0
  177. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/execution_intent.py +0 -0
  178. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/execution_loci.py +0 -0
  179. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/experiments.py +0 -0
  180. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/faults.py +0 -0
  181. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/game_day.py +0 -0
  182. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/identity.py +0 -0
  183. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/k8s_adapter.py +0 -0
  184. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/leases.py +0 -0
  185. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/load_strategy.py +0 -0
  186. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/m5_campaign.py +0 -0
  187. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/maniac.py +0 -0
  188. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/observability.py +0 -0
  189. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/observations.py +0 -0
  190. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/outcomes.py +0 -0
  191. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/policy.py +0 -0
  192. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/preflight.py +0 -0
  193. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/provider.py +0 -0
  194. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/redaction.py +0 -0
  195. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/remote_agent_interface.py +0 -0
  196. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/replay.py +0 -0
  197. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/residual_impact.py +0 -0
  198. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/resolution.py +0 -0
  199. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/resources.py +0 -0
  200. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/risks.py +0 -0
  201. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/run_outcome.py +0 -0
  202. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/runtime_adapter.py +0 -0
  203. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/runtime_context.py +0 -0
  204. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/scenarios.py +0 -0
  205. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/success.py +0 -0
  206. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/target.py +0 -0
  207. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/target_profiles.py +0 -0
  208. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/target_selector.py +0 -0
  209. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/domain/topology.py +0 -0
  210. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/__init__.py +0 -0
  211. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/campaign_checkpoint_repository.py +0 -0
  212. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/campaign_engine.py +0 -0
  213. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/candidate_gates.py +0 -0
  214. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/candidate_generator.py +0 -0
  215. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/catalog_report.py +0 -0
  216. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/coverage_repository.py +0 -0
  217. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/diagnostics.py +0 -0
  218. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/evidence.py +0 -0
  219. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/game_day_repository.py +0 -0
  220. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/kpi.py +0 -0
  221. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/lease_repository.py +0 -0
  222. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/maniac.py +0 -0
  223. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/migrations.py +0 -0
  224. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/migrator.py +0 -0
  225. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/project_detection.py +0 -0
  226. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/ranking.py +0 -0
  227. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/replay_repository.py +0 -0
  228. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/report.py +0 -0
  229. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/infra/store.py +0 -0
  230. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/observability/__init__.py +0 -0
  231. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/observability/base.py +0 -0
  232. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/observability/loki.py +0 -0
  233. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/observability/otel.py +0 -0
  234. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/observability/prometheus.py +0 -0
  235. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/providers/__init__.py +0 -0
  236. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/providers/builtin.py +0 -0
  237. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/providers/loader.py +0 -0
  238. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/providers/observation.py +0 -0
  239. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/providers/pack.py +0 -0
  240. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/providers/permissions.py +0 -0
  241. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/providers/protocols.py +0 -0
  242. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/providers/registry.py +0 -0
  243. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/py.typed +0 -0
  244. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/schemas/output_v1.json +0 -0
  245. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/spec.py +0 -0
  246. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/toolkit/__init__.py +0 -0
  247. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/toolkit/fingerprint.py +0 -0
  248. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/toolkit/hashing.py +0 -0
  249. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/toolkit/manifests/docker.yaml +0 -0
  250. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/toolkit/manifests/podman.yaml +0 -0
  251. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/toolkit/manifests/stress-ng.yaml +0 -0
  252. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/toolkit/manifests/tc-netem.yaml +0 -0
  253. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/toolkit/manifests/toxiproxy.yaml +0 -0
  254. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/toolkit/registry.py +0 -0
  255. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/toolkit/tool_runner.py +0 -0
  256. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/topology/__init__.py +0 -0
  257. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/topology/providers/__init__.py +0 -0
  258. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/topology/providers/adapter_registry.py +0 -0
  259. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/topology/providers/base.py +0 -0
  260. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/topology/providers/compose.py +0 -0
  261. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/topology/providers/docker_adapter.py +0 -0
  262. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/topology/providers/docker_runtime.py +0 -0
  263. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/topology/providers/k8s_manifest.py +0 -0
  264. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/topology/providers/kubernetes.py +0 -0
  265. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/topology/providers/podman_adapter.py +0 -0
  266. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/topology/resolve.py +0 -0
  267. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/src/mayhem/topology/service.py +0 -0
  268. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/conftest.py +0 -0
  269. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/e2e/__init__.py +0 -0
  270. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/e2e/test_cli_e2e.py +0 -0
  271. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/fixtures/cli/commands_show.json +0 -0
  272. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/fixtures/cli/coverage.json +0 -0
  273. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/fixtures/cli/doctor.json +0 -0
  274. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/integration/test_agent_serve.py +0 -0
  275. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/integration/test_agent_watchdog_e2e.py +0 -0
  276. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/integration/test_artifact_secret_sweep.py +0 -0
  277. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/integration/test_bundle_verifier.py +0 -0
  278. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/integration/test_campaign_resume.py +0 -0
  279. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/integration/test_coverage_delta.py +0 -0
  280. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/integration/test_evidence_degradation.py +0 -0
  281. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/integration/test_game_day_approval_flow.py +0 -0
  282. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/integration/test_m5_e2e.py +0 -0
  283. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/integration/test_observability_run.py +0 -0
  284. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/integration/test_recovery_proof.py +0 -0
  285. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/integration/test_replay_roundtrip.py +0 -0
  286. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/integration/test_scenario_plan_replay.py +0 -0
  287. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/integration/test_slo_success_criteria.py +0 -0
  288. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/integration/test_store.py +0 -0
  289. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/package/test_wheel_smoke.py +0 -0
  290. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_accept_criteria.py +0 -0
  291. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_action_outcome_contract.py +0 -0
  292. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_additive_schema.py +0 -0
  293. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_agent_capabilities.py +0 -0
  294. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_agent_protocol.py +0 -0
  295. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_agents.py +0 -0
  296. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_campaign_checkpoint.py +0 -0
  297. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_campaign_run.py +0 -0
  298. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_campaigns.py +0 -0
  299. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cancellation.py +0 -0
  300. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_candidates.py +0 -0
  301. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_capability_dashboard.py +0 -0
  302. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_capability_matrix.py +0 -0
  303. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_capability_registry.py +0 -0
  304. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_capability_safety.py +0 -0
  305. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_capability_truth.py +0 -0
  306. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cell_rules.py +0 -0
  307. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cell_runner.py +0 -0
  308. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_check_spec.py +0 -0
  309. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_ci_workflow_contract.py +0 -0
  310. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli.py +0 -0
  311. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli_campaign.py +0 -0
  312. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli_config.py +0 -0
  313. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli_contract.py +0 -0
  314. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli_doctor.py +0 -0
  315. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli_errors.py +0 -0
  316. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli_execution.py +0 -0
  317. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli_execution_intent.py +0 -0
  318. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli_exit_codes.py +0 -0
  319. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli_extend.py +0 -0
  320. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli_init.py +0 -0
  321. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli_output.py +0 -0
  322. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli_renderers.py +0 -0
  323. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli_topology.py +0 -0
  324. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_cli_user_regressions.py +0 -0
  325. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_command_registry.py +0 -0
  326. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_compensation.py +0 -0
  327. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_config.py +0 -0
  328. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_config_target_profiles.py +0 -0
  329. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_container_fault_matrix.py +0 -0
  330. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_coverage.py +0 -0
  331. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_coverage_graph.py +0 -0
  332. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_coverage_repository.py +0 -0
  333. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_diagnostics.py +0 -0
  334. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_diagnostics_target_profiles.py +0 -0
  335. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_domain_properties.py +0 -0
  336. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_drill_spec.py +0 -0
  337. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_evidence_bundle.py +0 -0
  338. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_example_specs_yaml.py +0 -0
  339. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_execution_context.py +0 -0
  340. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_execution_intent.py +0 -0
  341. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_executor.py +0 -0
  342. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_executor_admission.py +0 -0
  343. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_executor_drill.py +0 -0
  344. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_fault_catalog_all.py +0 -0
  345. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_fault_catalog_exhaustive.py +0 -0
  346. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_fault_catalog_metadata.py +0 -0
  347. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_fault_expansion_catalog.py +0 -0
  348. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_fault_expansion_container.py +0 -0
  349. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_fault_expansion_kubernetes.py +0 -0
  350. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_fault_pack_validation.py +0 -0
  351. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_faults.py +0 -0
  352. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_fingerprint.py +0 -0
  353. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_fork_atomicity.py +0 -0
  354. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_game_day.py +0 -0
  355. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_impact_gate.py +0 -0
  356. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_janitor.py +0 -0
  357. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_k8s_cli.py +0 -0
  358. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_k8s_discovery.py +0 -0
  359. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_k8s_manifest.py +0 -0
  360. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_k8s_plan1.py +0 -0
  361. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_k8s_plan2.py +0 -0
  362. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_k8s_selection.py +0 -0
  363. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_kpi.py +0 -0
  364. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_kplan1_targets.py +0 -0
  365. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_kplan2_topology.py +0 -0
  366. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_kplan3_resolver.py +0 -0
  367. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_kplan3_runtime.py +0 -0
  368. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_kplan5_runtime.py +0 -0
  369. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_kplan6_runtime.py +0 -0
  370. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_lease_repository.py +0 -0
  371. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_leases.py +0 -0
  372. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_lifecycle_run_liveness.py +0 -0
  373. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_load_strategy.py +0 -0
  374. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_m12_step1_catalog.py +0 -0
  375. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_m7_k8s.py +0 -0
  376. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_m8_operations.py +0 -0
  377. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_m9_catalog.py +0 -0
  378. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_maniac.py +0 -0
  379. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_migrations.py +0 -0
  380. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_network_path_model.py +0 -0
  381. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_observability.py +0 -0
  382. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_observability_connectors.py +0 -0
  383. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_observation_contract.py +0 -0
  384. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_observations.py +0 -0
  385. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_plan_diff.py +0 -0
  386. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_planner.py +0 -0
  387. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_policy_explain.py +0 -0
  388. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_preflight.py +0 -0
  389. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_provider_loader.py +0 -0
  390. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_provider_permissions.py +0 -0
  391. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_provider_registry.py +0 -0
  392. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_ranking.py +0 -0
  393. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_recovery.py +0 -0
  394. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_redaction_boundary.py +0 -0
  395. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_replay_capsule.py +0 -0
  396. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_replay_cli.py +0 -0
  397. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_report.py +0 -0
  398. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_residual_impact.py +0 -0
  399. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_resilience_report.py +0 -0
  400. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_resolve.py +0 -0
  401. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_resource_conflict_exec.py +0 -0
  402. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_resource_manager.py +0 -0
  403. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_resources.py +0 -0
  404. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_risks.py +0 -0
  405. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_run_outcome.py +0 -0
  406. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_runtime_adapter.py +0 -0
  407. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_runtime_context.py +0 -0
  408. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_runtime_execution_matrix.py +0 -0
  409. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_safety.py +0 -0
  410. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_scenario_compiler.py +0 -0
  411. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_selection_modes.py +0 -0
  412. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_success.py +0 -0
  413. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_target_profiles.py +0 -0
  414. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_target_profiles_config.py +0 -0
  415. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_three_locus.py +0 -0
  416. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_tool_runner.py +0 -0
  417. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_topology.py +0 -0
  418. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_topology_ctr.py +0 -0
  419. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_topology_providers.py +0 -0
  420. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_v090_edge_cases.py +0 -0
  421. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_watchdog.py +0 -0
  422. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/tests/unit/test_workflow_groups.py +0 -0
  423. {mayhem_cli-0.9.0 → mayhem_cli-0.9.1}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: mayhem-cli
3
- Version: 0.9.0
3
+ Version: 0.9.1
4
4
  Summary: General-purpose chaos engineering and resilience-testing framework: a chaos experiment orchestration engine.
5
5
  Author: Mayhem Engineering
6
6
  License: Proprietary
@@ -260,7 +260,9 @@ The full configuration reference is in
260
260
 
261
261
  The active CLI is workflow-oriented: `discover`, `prepare`, `experiment`, `run`, `inspect`, `recover`, and `extend`. Guided `init` and `doctor` are active, and all legacy root commands and aliases have been removed. Exit codes, machine-readable fields, and database migrations remain stable.
262
262
 
263
- See [`docs/product/cli-product-direction.md`](docs/product/cli-product-direction.md), [`docs/product/command-architecture.md`](docs/product/command-architecture.md), and [`docs/new-plan/README.md`](docs/new-plan/README.md).
263
+ The command inventory, global options, and stable exit codes are generated from
264
+ [`src/mayhem/cli/command_registry.py`](src/mayhem/cli/command_registry.py) and
265
+ [`src/mayhem/cli/exit_codes.py`](src/mayhem/cli/exit_codes.py).
264
266
 
265
267
  Root options precede the command. Unique prefixes work at the root and in the workflow groups.
266
268
 
@@ -275,14 +277,12 @@ Root options precede the command. Unique prefixes work at the root and in the wo
275
277
  | `mayhem extend` | Inspect and extend faults, capabilities, dependencies, and providers. |
276
278
  | `mayhem game-day` | Plan and run controlled game-day sessions with named approvals. |
277
279
  | `mayhem bundle` | Verify a portable evidence bundle offline. |
280
+ | `mayhem completion` | Print a bash/zsh/fish completion script. |
278
281
  | `mayhem campaign`, `mayhem commands`, `mayhem init`, `mayhem doctor`, `mayhem verify` | Manage campaigns, inspect the command map, onboard, diagnose, and verify evidence. |
279
282
 
280
- Use each command's current `--help` output for accepted arguments. The full
281
- sub-command inventory, root options, and stable exit codes are in
282
- [`docs/reference/cli.md`](docs/reference/cli.md); that inventory is compared
283
- against `src/mayhem/cli/command_registry.py` by
284
- `tests/unit/test_release_contract.py`, so a command that is not documented
285
- here fails the suite.
283
+ Use each command's current `--help` output for accepted arguments. `mayhem commands show`
284
+ prints the live command map, and `tests/unit/test_cli_exhaustive_matrix.py` fails
285
+ when a registered command is missing from the active surface.
286
286
 
287
287
  ---
288
288
 
@@ -305,7 +305,7 @@ stored spec paths, `pause` and `resume` stop and continue a running campaign,
305
305
  and `archive` or `abort` sets the corresponding terminal status. The current
306
306
  command surface does not expose campaign scheduling, priority ordering, or
307
307
  policy/window editing. See the
308
- [command inventory](docs/reference/cli.md#command-inventory).
308
+ `mayhem commands show`.
309
309
 
310
310
  ---
311
311
 
@@ -317,7 +317,7 @@ plan-only until explicitly executed, and every claim is recorded in evidence.
317
317
 
318
318
  | Area | What it gives you | Where |
319
319
  |------|-------------------|-------|
320
- | Explicit intent | Every mutating command needs an approval; `--dry-run` previews and returns before any engine exists. | `mayhem run --execute`, [`docs/reference/cli.md`](docs/reference/cli.md) |
320
+ | Explicit intent | Every mutating command needs an approval; `--dry-run` previews and returns before any engine exists. | `mayhem run --execute`, `src/mayhem/cli/command_registry.py` |
321
321
  | Runtime context | Engine, target, and namespace resolved once and propagated; a target-type mismatch is refused **before** any lease or subprocess. | `mayhem doctor`, evidence `k8s_context` |
322
322
  | Capability truth | What each fault can actually do per engine, with a reason and a source of truth for every blocked row. | `mayhem discover capabilities [--explain] [--blocked]` |
323
323
  | Replay capsules | A versioned, digest-checked capsule per run; export and validate offline. | `mayhem inspect replay export\|validate RUN_ID` |
@@ -328,8 +328,8 @@ plan-only until explicitly executed, and every claim is recorded in evidence.
328
328
  | Campaign resume | Durable checkpoints; a verified experiment is never repeated without `--retry-verified`. | `mayhem campaign resume-plan` |
329
329
  | Residual impact | Before/after comparison proving the system came back; an unavailable source reads `unavailable`, never `clean`. | `mayhem inspect residual` |
330
330
  | Game days | Sessions with a freeze window, named approvers, and dual control for critical faults. | `mayhem game-day` |
331
- | Provider sandbox | Default grant is read-only; signed fault packs; unsigned is development-only. | [`docs/provider-sdk.md`](docs/provider-sdk.md) |
332
- | Observability | Read-only Prometheus/Loki connectors and local OpenTelemetry spans. | [`docs/observability.md`](docs/observability.md) |
331
+ | Provider sandbox | Default grant is read-only; signed fault packs; unsigned is development-only. | `src/mayhem/providers/`(docs/provider-sdk.md) |
332
+ | Observability | Read-only Prometheus/Loki connectors (bounded timeout, response-size cap, redacted errors) plus local OpenTelemetry spans. | `src/mayhem/observability/` |
333
333
  | Evidence bundles | Hash-chained, offline-verifiable bundles of a run's evidence. | `mayhem bundle verify PATH` |
334
334
 
335
335
  Two honesty rules are worth stating plainly, because they change what output
@@ -342,6 +342,23 @@ means:
342
342
  dashboard reports `live=false` for every row in this repository; `live=true`
343
343
  can only come from a recorded live run.
344
344
 
345
+ ### Shell completion
346
+
347
+ `mayhem completion SHELL` prints a completion script to stdout. Nothing is
348
+ installed and nothing is executed — you choose where it goes. Completion is
349
+ dynamic, so the candidates always match the commands your installed version
350
+ actually has:
351
+
352
+ ```bash
353
+ mayhem completion bash >> ~/.bashrc
354
+ mayhem completion zsh > "${fpath[1]}/_mayhem"
355
+ mayhem completion fish > ~/.config/fish/completions/mayhem.fish
356
+ ```
357
+
358
+ `bash` needs **bash >= 4.4**; macOS ships 3.2, where dynamic completion is not
359
+ available — use `zsh` or `fish` there, or install a newer bash. The generated
360
+ bash script says so in its header.
361
+
345
362
  ```bash
346
363
  mayhem --version # installed version, or 0.0.0+source in a checkout
347
364
  mayhem discover capabilities --explain k8s.pod_kill
@@ -349,15 +366,20 @@ mayhem inspect replay export RUN_ID --out bundle/
349
366
  mayhem bundle verify bundle/
350
367
  ```
351
368
 
352
- ### v0.9.0 documentation
369
+ ### v0.9.0 status
353
370
 
354
- | Document | Contents |
355
- |----------|----------|
356
- | [`docs/v0.9.0/01-vision-and-positioning.md`](docs/v0.9.0/01-vision-and-positioning.md) | What v0.9.0 is for |
357
- | [`docs/v0.9.0/04-architecture-and-decisions.md`](docs/v0.9.0/04-architecture-and-decisions.md) | ADRs and the decisions behind them |
358
- | [`docs/v0.9.0/06-core-implementation-plan.md`](docs/v0.9.0/06-core-implementation-plan.md) | Core tasks 1-10 and the core checkpoint |
359
- | [`docs/v0.9.0/07-expansion-implementation-plan.md`](docs/v0.9.0/07-expansion-implementation-plan.md) | Expansion tasks 11-20 and the expansion checkpoint |
360
- | [`docs/v0.9.0/08-release-readiness.md`](docs/v0.9.0/08-release-readiness.md) | Gate results and what is still excluded |
371
+ The v0.9.0 planning package was scaffolding and has been removed; the behavior
372
+ it described is what is implemented and documented above. What remains verified:
373
+
374
+ | Gate | Result |
375
+ |------|--------|
376
+ | `pytest tests/unit tests/integration tests/e2e` | PASS |
377
+ | Coverage of the v0.9.0 modules | 100% on 14 of 15; `domain/scenarios.py` 99% (3 unreachable defensive lines) |
378
+ | `uv build --sdist --wheel` + `scripts/verify_release_artifacts.py` | PASS (9 checks) |
379
+ | Wheel install, import, console scripts, `mayhem --version`, `python -m mayhem` | PASS |
380
+ | GitHub Actions on `v0.9.0` | PASS — unit, integration, e2e, schema, ruff-fatal, package build, wheel smoke, artifact verification |
381
+ | Repository-wide `ruff` / `mypy` / `lint-imports` | Pre-existing failures, advisory only (not release-gating) |
382
+ | Live Kubernetes / remote-agent execution | Not claimed, and not enabled by default |
361
383
 
362
384
  ---
363
385
 
@@ -389,7 +411,7 @@ mayhem bundle verify bundle/
389
411
 
390
412
  The stable identifiers and numeric values are defined in
391
413
  [`src/mayhem/cli/exit_codes.py`](src/mayhem/cli/exit_codes.py) and documented in
392
- [`docs/reference/cli.md`](docs/reference/cli.md#exit-codes). The deterministic
414
+ `src/mayhem/cli/exit_codes.py`. The deterministic
393
415
  documentation test rejects identifiers that are not declared in source.
394
416
 
395
417
  ---
@@ -423,9 +445,9 @@ is as small as possible:
423
445
  | [`docs/README.md`](docs/README.md) | Documentation authority, classifications, source-of-truth map, and Kubernetes status vocabulary. |
424
446
  | [`docs/drill-spec.md`](docs/drill-spec.md) | Drill DSL reference. |
425
447
  | [`docs/config.md`](docs/config.md) | Current layered configuration contract. |
426
- | [`docs/reference/cli.md`](docs/reference/cli.md) | Current commands, options, and stable exit codes. |
427
- | [`docs/reference/output-schema.md`](docs/reference/output-schema.md) | Versioned machine-output envelope and the v0.9.0 compatibility boundary. |
428
- | [`docs/reference/fault-catalog.md`](docs/reference/fault-catalog.md) | Checked Kubernetes fault catalog status snapshot and capability gates. |
448
+ | `src/mayhem/cli/command_registry.py` | Current commands, options, and stable exit codes. |
449
+ | `src/mayhem/schemas/output_v1.json`(docs/reference/output-schema.md) | Versioned machine-output envelope and the v0.9.0 compatibility boundary. |
450
+ | [`docs/fault-catalog/`](docs/fault-catalog/README.md)(docs/reference/fault-catalog.md) | Checked Kubernetes fault catalog status snapshot and capability gates. |
429
451
  | [`docs/compensation.md`](docs/compensation.md) | Compensation lifecycle and verification contracts. |
430
452
 
431
453
  ---
@@ -451,8 +473,8 @@ is as small as possible:
451
473
  The [examples/k8s README](examples/k8s/README.md) and
452
474
  [documentation authority index](docs/README.md#kubernetes-status-vocabulary)
453
475
  explain the separate Kubernetes states. Historical discovery reports and the
454
- dated [grounding log](docs/grounding-log.md) are retained for traceability and
455
- must not be treated as live-cluster evidence.
476
+ discovery reports are retained in git history for traceability and must not be
477
+ treated as live-cluster evidence.
456
478
 
457
479
  ---
458
480
 
@@ -245,7 +245,9 @@ The full configuration reference is in
245
245
 
246
246
  The active CLI is workflow-oriented: `discover`, `prepare`, `experiment`, `run`, `inspect`, `recover`, and `extend`. Guided `init` and `doctor` are active, and all legacy root commands and aliases have been removed. Exit codes, machine-readable fields, and database migrations remain stable.
247
247
 
248
- See [`docs/product/cli-product-direction.md`](docs/product/cli-product-direction.md), [`docs/product/command-architecture.md`](docs/product/command-architecture.md), and [`docs/new-plan/README.md`](docs/new-plan/README.md).
248
+ The command inventory, global options, and stable exit codes are generated from
249
+ [`src/mayhem/cli/command_registry.py`](src/mayhem/cli/command_registry.py) and
250
+ [`src/mayhem/cli/exit_codes.py`](src/mayhem/cli/exit_codes.py).
249
251
 
250
252
  Root options precede the command. Unique prefixes work at the root and in the workflow groups.
251
253
 
@@ -260,14 +262,12 @@ Root options precede the command. Unique prefixes work at the root and in the wo
260
262
  | `mayhem extend` | Inspect and extend faults, capabilities, dependencies, and providers. |
261
263
  | `mayhem game-day` | Plan and run controlled game-day sessions with named approvals. |
262
264
  | `mayhem bundle` | Verify a portable evidence bundle offline. |
265
+ | `mayhem completion` | Print a bash/zsh/fish completion script. |
263
266
  | `mayhem campaign`, `mayhem commands`, `mayhem init`, `mayhem doctor`, `mayhem verify` | Manage campaigns, inspect the command map, onboard, diagnose, and verify evidence. |
264
267
 
265
- Use each command's current `--help` output for accepted arguments. The full
266
- sub-command inventory, root options, and stable exit codes are in
267
- [`docs/reference/cli.md`](docs/reference/cli.md); that inventory is compared
268
- against `src/mayhem/cli/command_registry.py` by
269
- `tests/unit/test_release_contract.py`, so a command that is not documented
270
- here fails the suite.
268
+ Use each command's current `--help` output for accepted arguments. `mayhem commands show`
269
+ prints the live command map, and `tests/unit/test_cli_exhaustive_matrix.py` fails
270
+ when a registered command is missing from the active surface.
271
271
 
272
272
  ---
273
273
 
@@ -290,7 +290,7 @@ stored spec paths, `pause` and `resume` stop and continue a running campaign,
290
290
  and `archive` or `abort` sets the corresponding terminal status. The current
291
291
  command surface does not expose campaign scheduling, priority ordering, or
292
292
  policy/window editing. See the
293
- [command inventory](docs/reference/cli.md#command-inventory).
293
+ `mayhem commands show`.
294
294
 
295
295
  ---
296
296
 
@@ -302,7 +302,7 @@ plan-only until explicitly executed, and every claim is recorded in evidence.
302
302
 
303
303
  | Area | What it gives you | Where |
304
304
  |------|-------------------|-------|
305
- | Explicit intent | Every mutating command needs an approval; `--dry-run` previews and returns before any engine exists. | `mayhem run --execute`, [`docs/reference/cli.md`](docs/reference/cli.md) |
305
+ | Explicit intent | Every mutating command needs an approval; `--dry-run` previews and returns before any engine exists. | `mayhem run --execute`, `src/mayhem/cli/command_registry.py` |
306
306
  | Runtime context | Engine, target, and namespace resolved once and propagated; a target-type mismatch is refused **before** any lease or subprocess. | `mayhem doctor`, evidence `k8s_context` |
307
307
  | Capability truth | What each fault can actually do per engine, with a reason and a source of truth for every blocked row. | `mayhem discover capabilities [--explain] [--blocked]` |
308
308
  | Replay capsules | A versioned, digest-checked capsule per run; export and validate offline. | `mayhem inspect replay export\|validate RUN_ID` |
@@ -313,8 +313,8 @@ plan-only until explicitly executed, and every claim is recorded in evidence.
313
313
  | Campaign resume | Durable checkpoints; a verified experiment is never repeated without `--retry-verified`. | `mayhem campaign resume-plan` |
314
314
  | Residual impact | Before/after comparison proving the system came back; an unavailable source reads `unavailable`, never `clean`. | `mayhem inspect residual` |
315
315
  | Game days | Sessions with a freeze window, named approvers, and dual control for critical faults. | `mayhem game-day` |
316
- | Provider sandbox | Default grant is read-only; signed fault packs; unsigned is development-only. | [`docs/provider-sdk.md`](docs/provider-sdk.md) |
317
- | Observability | Read-only Prometheus/Loki connectors and local OpenTelemetry spans. | [`docs/observability.md`](docs/observability.md) |
316
+ | Provider sandbox | Default grant is read-only; signed fault packs; unsigned is development-only. | `src/mayhem/providers/`(docs/provider-sdk.md) |
317
+ | Observability | Read-only Prometheus/Loki connectors (bounded timeout, response-size cap, redacted errors) plus local OpenTelemetry spans. | `src/mayhem/observability/` |
318
318
  | Evidence bundles | Hash-chained, offline-verifiable bundles of a run's evidence. | `mayhem bundle verify PATH` |
319
319
 
320
320
  Two honesty rules are worth stating plainly, because they change what output
@@ -327,6 +327,23 @@ means:
327
327
  dashboard reports `live=false` for every row in this repository; `live=true`
328
328
  can only come from a recorded live run.
329
329
 
330
+ ### Shell completion
331
+
332
+ `mayhem completion SHELL` prints a completion script to stdout. Nothing is
333
+ installed and nothing is executed — you choose where it goes. Completion is
334
+ dynamic, so the candidates always match the commands your installed version
335
+ actually has:
336
+
337
+ ```bash
338
+ mayhem completion bash >> ~/.bashrc
339
+ mayhem completion zsh > "${fpath[1]}/_mayhem"
340
+ mayhem completion fish > ~/.config/fish/completions/mayhem.fish
341
+ ```
342
+
343
+ `bash` needs **bash >= 4.4**; macOS ships 3.2, where dynamic completion is not
344
+ available — use `zsh` or `fish` there, or install a newer bash. The generated
345
+ bash script says so in its header.
346
+
330
347
  ```bash
331
348
  mayhem --version # installed version, or 0.0.0+source in a checkout
332
349
  mayhem discover capabilities --explain k8s.pod_kill
@@ -334,15 +351,20 @@ mayhem inspect replay export RUN_ID --out bundle/
334
351
  mayhem bundle verify bundle/
335
352
  ```
336
353
 
337
- ### v0.9.0 documentation
354
+ ### v0.9.0 status
338
355
 
339
- | Document | Contents |
340
- |----------|----------|
341
- | [`docs/v0.9.0/01-vision-and-positioning.md`](docs/v0.9.0/01-vision-and-positioning.md) | What v0.9.0 is for |
342
- | [`docs/v0.9.0/04-architecture-and-decisions.md`](docs/v0.9.0/04-architecture-and-decisions.md) | ADRs and the decisions behind them |
343
- | [`docs/v0.9.0/06-core-implementation-plan.md`](docs/v0.9.0/06-core-implementation-plan.md) | Core tasks 1-10 and the core checkpoint |
344
- | [`docs/v0.9.0/07-expansion-implementation-plan.md`](docs/v0.9.0/07-expansion-implementation-plan.md) | Expansion tasks 11-20 and the expansion checkpoint |
345
- | [`docs/v0.9.0/08-release-readiness.md`](docs/v0.9.0/08-release-readiness.md) | Gate results and what is still excluded |
356
+ The v0.9.0 planning package was scaffolding and has been removed; the behavior
357
+ it described is what is implemented and documented above. What remains verified:
358
+
359
+ | Gate | Result |
360
+ |------|--------|
361
+ | `pytest tests/unit tests/integration tests/e2e` | PASS |
362
+ | Coverage of the v0.9.0 modules | 100% on 14 of 15; `domain/scenarios.py` 99% (3 unreachable defensive lines) |
363
+ | `uv build --sdist --wheel` + `scripts/verify_release_artifacts.py` | PASS (9 checks) |
364
+ | Wheel install, import, console scripts, `mayhem --version`, `python -m mayhem` | PASS |
365
+ | GitHub Actions on `v0.9.0` | PASS — unit, integration, e2e, schema, ruff-fatal, package build, wheel smoke, artifact verification |
366
+ | Repository-wide `ruff` / `mypy` / `lint-imports` | Pre-existing failures, advisory only (not release-gating) |
367
+ | Live Kubernetes / remote-agent execution | Not claimed, and not enabled by default |
346
368
 
347
369
  ---
348
370
 
@@ -374,7 +396,7 @@ mayhem bundle verify bundle/
374
396
 
375
397
  The stable identifiers and numeric values are defined in
376
398
  [`src/mayhem/cli/exit_codes.py`](src/mayhem/cli/exit_codes.py) and documented in
377
- [`docs/reference/cli.md`](docs/reference/cli.md#exit-codes). The deterministic
399
+ `src/mayhem/cli/exit_codes.py`. The deterministic
378
400
  documentation test rejects identifiers that are not declared in source.
379
401
 
380
402
  ---
@@ -408,9 +430,9 @@ is as small as possible:
408
430
  | [`docs/README.md`](docs/README.md) | Documentation authority, classifications, source-of-truth map, and Kubernetes status vocabulary. |
409
431
  | [`docs/drill-spec.md`](docs/drill-spec.md) | Drill DSL reference. |
410
432
  | [`docs/config.md`](docs/config.md) | Current layered configuration contract. |
411
- | [`docs/reference/cli.md`](docs/reference/cli.md) | Current commands, options, and stable exit codes. |
412
- | [`docs/reference/output-schema.md`](docs/reference/output-schema.md) | Versioned machine-output envelope and the v0.9.0 compatibility boundary. |
413
- | [`docs/reference/fault-catalog.md`](docs/reference/fault-catalog.md) | Checked Kubernetes fault catalog status snapshot and capability gates. |
433
+ | `src/mayhem/cli/command_registry.py` | Current commands, options, and stable exit codes. |
434
+ | `src/mayhem/schemas/output_v1.json`(docs/reference/output-schema.md) | Versioned machine-output envelope and the v0.9.0 compatibility boundary. |
435
+ | [`docs/fault-catalog/`](docs/fault-catalog/README.md)(docs/reference/fault-catalog.md) | Checked Kubernetes fault catalog status snapshot and capability gates. |
414
436
  | [`docs/compensation.md`](docs/compensation.md) | Compensation lifecycle and verification contracts. |
415
437
 
416
438
  ---
@@ -436,8 +458,8 @@ is as small as possible:
436
458
  The [examples/k8s README](examples/k8s/README.md) and
437
459
  [documentation authority index](docs/README.md#kubernetes-status-vocabulary)
438
460
  explain the separate Kubernetes states. Historical discovery reports and the
439
- dated [grounding log](docs/grounding-log.md) are retained for traceability and
440
- must not be treated as live-cluster evidence.
461
+ discovery reports are retained in git history for traceability and must not be
462
+ treated as live-cluster evidence.
441
463
 
442
464
  ---
443
465
 
@@ -0,0 +1,59 @@
1
+ # Documentation authority
2
+
3
+ This page is the authority index for Mayhem documentation. It classifies every
4
+ Markdown document tracked in the repository and records which source files
5
+ control current behavior. When prose disagrees with one of those sources, the
6
+ source is current and the prose needs correction.
7
+
8
+ ## Source authority
9
+
10
+ | Contract | Executable authority |
11
+ |----------|----------------------|
12
+ | Layered configuration | [`src/mayhem/config.py`](../src/mayhem/config.py) |
13
+ | CLI commands and global options | [`src/mayhem/cli/app.py`](../src/mayhem/cli/app.py) and [`src/mayhem/cli/`](../src/mayhem/cli/) |
14
+ | Stable exit codes | [`src/mayhem/cli/exit_codes.py`](../src/mayhem/cli/exit_codes.py) |
15
+ | Command inventory | [`src/mayhem/cli/command_registry.py`](../src/mayhem/cli/command_registry.py) |
16
+ | Drill schema | [`src/mayhem/domain/experiments.py`](../src/mayhem/domain/experiments.py) and [`src/mayhem/spec.py`](../src/mayhem/spec.py) |
17
+ | Execution intent and approval | [`src/mayhem/domain/execution_intent.py`](../src/mayhem/domain/execution_intent.py) |
18
+ | Typed admission | [`src/mayhem/domain/admission.py`](../src/mayhem/domain/admission.py) |
19
+ | Capability truth | [`src/mayhem/domain/capability_status.py`](../src/mayhem/domain/capability_status.py) and [`src/mayhem/infra/catalog_report.py`](../src/mayhem/infra/catalog_report.py) |
20
+ | Replay capsules | [`src/mayhem/domain/replay.py`](../src/mayhem/domain/replay.py) |
21
+ | Evidence and redaction | [`src/mayhem/domain/evidence.py`](../src/mayhem/domain/evidence.py) and [`src/mayhem/domain/redaction.py`](../src/mayhem/domain/redaction.py) |
22
+ | Evidence bundles | [`src/mayhem/domain/evidence_bundle.py`](../src/mayhem/domain/evidence_bundle.py) |
23
+ | Provider sandbox and packs | [`src/mayhem/providers/permissions.py`](../src/mayhem/providers/permissions.py) and [`src/mayhem/providers/pack.py`](../src/mayhem/providers/pack.py) |
24
+ | Fault catalog and support declarations | [`src/mayhem/domain/catalog.py`](../src/mayhem/domain/catalog.py) and [`src/mayhem/controller/k8s_runtime.py`](../src/mayhem/controller/k8s_runtime.py) |
25
+ | Kubernetes planning and execution seams | [`src/mayhem/controller/planner.py`](../src/mayhem/controller/planner.py), [`src/mayhem/agents/k8s_resolve.py`](../src/mayhem/agents/k8s_resolve.py), and [`src/mayhem/agents/executors.py`](../src/mayhem/agents/executors.py) |
26
+
27
+ ## Document inventory
28
+
29
+ | Document | Classification | Current-use rule |
30
+ |----------|----------------|------------------|
31
+ | [`../README.md`](../README.md) | user guide | Start here: quickstart, CLI surface, safety model, status, and what v0.9.0 added. |
32
+ | [`../CHANGELOG.md`](../CHANGELOG.md) | historical audit | Release history up to the last generated tag; it does not describe uncommitted behavior. |
33
+ | [`drill-spec.md`](drill-spec.md) | current reference | Drill DSL reference, including the v0.9.0 `slo:` block and the scenario document format. |
34
+ | [`config.md`](config.md) | current reference | Authoritative checked-in summary of `src/mayhem/config.py`. |
35
+ | [`compensation.md`](compensation.md) | current reference | Compensation lifecycle reference; executor behavior remains authoritative in source and tests. |
36
+ | [`fault-catalog/README.md`](fault-catalog/README.md) | current reference | Fault catalog and capability snapshot. |
37
+ | [`fault-catalog/reliability-matrix.md`](fault-catalog/reliability-matrix.md) | current reference | Per-fault reliability and compensation matrix. |
38
+
39
+ Planning packages, dated discovery reports, and per-release readiness notes were
40
+ removed once their content was implemented and folded into the references above.
41
+ They remain in git history if a historical record is ever needed.
42
+
43
+ ## Kubernetes status vocabulary
44
+
45
+ These states are intentionally separate. Possessing one does not imply the
46
+ next.
47
+
48
+ | State | Current meaning | Source evidence |
49
+ |-------|-----------------|-----------------|
50
+ | Kubernetes manifest planning | A multi-document Kubernetes manifest can produce an offline blueprint graph. Workload pods are placeholders, not live pod selections. | [`k8s_manifest.py`](../src/mayhem/topology/providers/k8s_manifest.py) |
51
+ | Planner support | `targets:` drills normalize Kubernetes scopes, preserve logical target identity, and compile frozen plans. Plan-time resolution is best-effort for manifest workloads. | [`planner.py`](../src/mayhem/controller/planner.py) |
52
+ | Executor support | Kubernetes-routed fault families have dedicated dispatch registers, undo contracts, and executor classes. A registered executor does not prove that a cluster is reachable or a required capability is available. | [`executors.py`](../src/mayhem/agents/executors.py) and [`k8s_runtime.py`](../src/mayhem/controller/k8s_runtime.py) |
53
+ | Live resolution | A resolver seam can select eligible live Running pods or nodes and record resolved-target evidence when a usable client exists. No checked-in document should claim that a particular external cluster passed validation. | [`k8s_resolve.py`](../src/mayhem/agents/k8s_resolve.py) |
54
+ | Legacy adapter availability | `KubernetesAdapter` remains a registered compatibility seam with `is_available() == False`; do not use its advertised capabilities as proof that the separate resolver/executor path is available. | [`k8s_adapter.py`](../src/mayhem/domain/k8s_adapter.py) |
55
+ | Catalog-only fault | A fault can be defined, typed, and planned without being in `k8s_available_faults()`. `k8s.image_pull_slow` is the current catalog-only Kubernetes example and refuses before mutation. | [`catalog.py`](../src/mayhem/domain/catalog.py) and [`k8s_runtime.py`](../src/mayhem/controller/k8s_runtime.py) |
56
+
57
+ The Kubernetes unit suite exercises these seams with fake clients and
58
+ in-memory data. Documentation does not promote those tests into a claim of live
59
+ cluster acceptance.
@@ -123,7 +123,7 @@ Forbidden credential keys in a target profile: `password`, `secret`, `token`,
123
123
  `credentials`, `api_key`, `apikey`. A wider set is redacted when configuration
124
124
  is rendered — by `config show`, by `config explain`, and by evidence alike — so
125
125
  free-form blocks such as a profile's `observability:` are filtered by one
126
- policy; see [`policy-and-break-glass.md`](policy-and-break-glass.md).
126
+ policy; see `src/mayhem/controller/safety.py`.
127
127
 
128
128
  A drill document's own top-level `targets:` block is *not* a target-profile
129
129
  block. It declares the spec's logical targets
@@ -311,4 +311,4 @@ Current root CLI controls relate to layering and execution as follows:
311
311
  | `--skip-gate` | Controls the impact gate; it is not a configuration field. |
312
312
  | `--podman` / `--kubernetes` | Select CLI engine state; they do not rewrite `runtime`. |
313
313
 
314
- Use [`reference/cli.md`](reference/cli.md) for the executable command surface.
314
+ Use `src/mayhem/cli/command_registry.py` for the executable command surface.
@@ -27,7 +27,7 @@ mayhem maniac examples/testCase/mayhem.yaml --compose examples/testCase/docker
27
27
 
28
28
  `run` and `maniac` inject faults, so both need the explicit `--execute`
29
29
  approval; without it they stop at a preview and no lease is ever created. See
30
- [CLI reference](reference/cli.md#execution-intent).
30
+ [CLI reference](../README.md#whats-new-in-v090).
31
31
 
32
32
  The positional spec path may be omitted when the global ``--config`` flag
33
33
  names the drill spec itself — useful from a directory without a spec file:
@@ -5,7 +5,7 @@ The active CLI exposes this catalog through `mayhem discover faults`,
5
5
  runtime-free reliability contract, coverage report, maturity policy, recommendations,
6
6
  and Plan 08 family status are documented in [`reliability-matrix.md`](reliability-matrix.md).
7
7
 
8
- The current Kubernetes catalog snapshot is maintained at [`../reference/fault-catalog.md`](../reference/fault-catalog.md). Definitions are sourced from `src/mayhem/domain/catalog.py`; runtime status is sourced from `src/mayhem/controller/k8s_runtime.py`.
8
+ The current Kubernetes catalog snapshot is maintained at [`reliability-matrix.md`](reliability-matrix.md). Definitions are sourced from `src/mayhem/domain/catalog.py`; runtime status is sourced from `src/mayhem/controller/k8s_runtime.py`.
9
9
 
10
10
  ## Container and Kubernetes expansion
11
11
 
@@ -15,6 +15,7 @@ class CommandSpec:
15
15
  COMMAND_HELP: dict[str, str] = {
16
16
  "campaign": "Create, inspect, and run chaos campaigns.",
17
17
  "commands": "Show the command migration map.",
18
+ "completion": "Generate a shell completion script for this Mayhem build.",
18
19
  "discover": "Discover targets, engines, and capabilities.",
19
20
  "doctor": "Check configuration, database, engines, and permissions.",
20
21
  "experiment": "Inspect and validate authored experiment specs.",
@@ -35,6 +36,7 @@ COMMAND_HELP: dict[str, str] = {
35
36
  COMMAND_SPECS: tuple[CommandSpec, ...] = (
36
37
  CommandSpec("campaign", "run", help_group="experiments", mutating=True),
37
38
  CommandSpec("commands", "inspect", help_group="inspect"),
39
+ CommandSpec("completion", "inspect", help_group="inspect"),
38
40
  CommandSpec("discover", "discover", help_group="discovery"),
39
41
  CommandSpec("doctor", "inspect", help_group="inspect"),
40
42
  CommandSpec("experiment", "experiment", help_group="experiments"),
@@ -55,6 +57,7 @@ COMMAND_SPECS: tuple[CommandSpec, ...] = (
55
57
  def register_commands(app: Any) -> None:
56
58
  from mayhem.cli.campaign import campaign
57
59
  from mayhem.cli.commands import commands
60
+ from mayhem.cli.completion import completion
58
61
  from mayhem.cli.doctor import doctor_cmd
59
62
  from mayhem.cli.experiment import experiment
60
63
  from mayhem.cli.game_day import game_day
@@ -66,6 +69,7 @@ def register_commands(app: Any) -> None:
66
69
  command_map = {
67
70
  "campaign": campaign,
68
71
  "commands": commands,
72
+ "completion": completion,
69
73
  "discover": discover,
70
74
  "doctor": doctor_cmd,
71
75
  "experiment": experiment,
@@ -0,0 +1,76 @@
1
+ """``mayhem completion SHELL`` — print a shell completion script.
2
+
3
+ This prints Click's own completion script for the requested shell, verbatim from
4
+ :meth:`click.shell_completion.ShellComplete.source`. That is deliberate:
5
+ hand-rolled wrappers are how you end up binding a function name that does not
6
+ exist (``compdef _mayhem`` instead of ``compdef _mayhem_completion``), which
7
+ parses fine under ``zsh -n`` and then silently completes nothing.
8
+
9
+ The scripts are self-contained, so you decide where they go:
10
+
11
+ mayhem completion bash >> ~/.bashrc
12
+ mayhem completion zsh > "${fpath[1]}/_mayhem"
13
+ mayhem completion fish > ~/.config/fish/completions/mayhem.fish
14
+
15
+ Completion is dynamic: the shell asks the installed ``mayhem`` for candidates,
16
+ so the list always matches the commands that build actually has.
17
+ """
18
+
19
+ from __future__ import annotations
20
+
21
+ import click
22
+ from click.shell_completion import BashComplete, FishComplete, ShellComplete, ZshComplete
23
+
24
+ #: The executable users type. Keep in sync with ``[project.scripts]``.
25
+ PROG_NAME = "mayhem"
26
+
27
+ SUPPORTED_SHELLS: tuple[str, ...] = ("bash", "zsh", "fish")
28
+
29
+ #: ``complete_var`` Click derives from the program name: ``_<PROG>_COMPLETE``.
30
+ COMPLETE_VAR = f"_{PROG_NAME.upper()}_COMPLETE"
31
+
32
+ _COMPLETERS = {
33
+ "bash": BashComplete,
34
+ "zsh": ZshComplete,
35
+ "fish": FishComplete,
36
+ }
37
+
38
+
39
+ def _app() -> click.Command:
40
+ # Imported lazily: app -> command_registry -> completion, so a module-level
41
+ # import here would be circular.
42
+ from mayhem.cli.app import app
43
+
44
+ return app
45
+
46
+
47
+ def _source(completer: ShellComplete) -> str:
48
+ """Render the script, tolerating a host bash too old to run it.
49
+
50
+ ``BashComplete.source`` refuses to emit when the *local* bash is < 4.4
51
+ (macOS ships 3.2). The script itself is version-agnostic — it is the
52
+ running bash that must be new enough — so a warning plus the script is more
53
+ useful than a refusal.
54
+ """
55
+ try:
56
+ return completer.source()
57
+ except RuntimeError as exc:
58
+ click.echo(f"warning: {exc}", err=True)
59
+ return ShellComplete.source(completer)
60
+
61
+
62
+ @click.command("completion")
63
+ @click.argument(
64
+ "shell",
65
+ type=click.Choice(SUPPORTED_SHELLS, case_sensitive=False),
66
+ required=False,
67
+ default="bash",
68
+ )
69
+ def completion(shell: str) -> None:
70
+ """Print the completion script for SHELL (bash, zsh, or fish).
71
+
72
+ Writes to stdout only: nothing is installed, no file is touched, and
73
+ nothing is executed.
74
+ """
75
+ completer = _COMPLETERS[shell.lower()](_app(), {}, PROG_NAME, COMPLETE_VAR)
76
+ click.echo(_source(completer), nl=False)
@@ -10,6 +10,7 @@ ACTIVE_COMMANDS = {
10
10
  "bundle",
11
11
  "campaign",
12
12
  "commands",
13
+ "completion",
13
14
  "discover",
14
15
  "doctor",
15
16
  "experiment",