mayhem-cli 0.5.1__tar.gz → 0.6.2__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 (218) hide show
  1. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/.github/workflows/release.yml +32 -1
  2. mayhem_cli-0.6.2/CHANGELOG.md +415 -0
  3. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/Justfile +9 -0
  4. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/PKG-INFO +1 -1
  5. mayhem_cli-0.6.2/cliff.toml +87 -0
  6. mayhem_cli-0.6.2/docs/config.md +285 -0
  7. mayhem_cli-0.6.2/docs/features.md +408 -0
  8. mayhem_cli-0.6.2/docs/grounding-log.md +64 -0
  9. mayhem_cli-0.6.2/docs/grounding-rules.md +70 -0
  10. mayhem_cli-0.6.2/docs/re-design.md +1405 -0
  11. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/cli/app.py +24 -3
  12. mayhem_cli-0.6.2/src/mayhem/cli/coverage_cmd.py +325 -0
  13. mayhem_cli-0.6.2/src/mayhem/cli/expert.py +473 -0
  14. mayhem_cli-0.6.2/src/mayhem/cli/explore.py +378 -0
  15. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/cli/lifecycle.py +81 -1
  16. mayhem_cli-0.6.2/src/mayhem/cli/next_cmd.py +216 -0
  17. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/cli/resolver.py +1 -1
  18. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/config.py +70 -12
  19. mayhem_cli-0.6.2/src/mayhem/controller/cell_runner.py +174 -0
  20. mayhem_cli-0.6.2/src/mayhem/controller/explore_flow.py +257 -0
  21. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/controller/planner.py +42 -0
  22. mayhem_cli-0.6.2/src/mayhem/domain/cell_rules.py +48 -0
  23. mayhem_cli-0.6.2/src/mayhem/domain/coverage.py +204 -0
  24. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/infra/candidate_gates.py +20 -0
  25. mayhem_cli-0.6.2/src/mayhem/infra/coverage_repository.py +271 -0
  26. mayhem_cli-0.6.2/src/mayhem/infra/kpi.py +172 -0
  27. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/infra/migrations.py +27 -0
  28. mayhem_cli-0.6.2/src/mayhem/infra/ranking.py +150 -0
  29. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/e2e/test_cli_e2e.py +7 -5
  30. mayhem_cli-0.6.2/tests/unit/test_accept_criteria.py +158 -0
  31. mayhem_cli-0.6.2/tests/unit/test_additive_schema.py +136 -0
  32. mayhem_cli-0.6.2/tests/unit/test_cell_rules.py +86 -0
  33. mayhem_cli-0.6.2/tests/unit/test_cell_runner.py +204 -0
  34. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_cli.py +2 -1
  35. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_cli_campaign.py +3 -1
  36. mayhem_cli-0.6.2/tests/unit/test_cli_contract.py +113 -0
  37. mayhem_cli-0.6.2/tests/unit/test_command_inventory.py +117 -0
  38. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_coverage.py +79 -0
  39. mayhem_cli-0.6.2/tests/unit/test_coverage_repository.py +157 -0
  40. mayhem_cli-0.6.2/tests/unit/test_kpi.py +82 -0
  41. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_migrations.py +29 -0
  42. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_planner.py +74 -0
  43. mayhem_cli-0.6.2/tests/unit/test_ranking.py +182 -0
  44. mayhem_cli-0.5.1/src/mayhem/domain/coverage.py +0 -106
  45. mayhem_cli-0.5.1/src/mayhem/infra/coverage_repository.py +0 -101
  46. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/.gitignore +0 -0
  47. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/README.md +0 -0
  48. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/docs/compensation.md +0 -0
  49. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/docs/drill-spec.md +0 -0
  50. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/examples/k8s/README.md +0 -0
  51. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/examples/k8s/kubernetes.yaml +0 -0
  52. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/examples/k8s/mayhem.yaml +0 -0
  53. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/examples/testCase/data/hello.txt +0 -0
  54. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/examples/testCase/data/index.html +0 -0
  55. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/examples/testCase/docker-compose.mayhem.yml +0 -0
  56. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/examples/testCase/docker-compose.yml +0 -0
  57. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/examples/testCase/mayhem.yaml +0 -0
  58. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/examples/testCase/nginx.conf +0 -0
  59. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/pyproject.toml +0 -0
  60. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/agent/__init__.py +0 -0
  61. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/agent/cli.py +0 -0
  62. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/agents/__init__.py +0 -0
  63. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/agents/capabilities.py +0 -0
  64. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/agents/executors.py +0 -0
  65. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/agents/impact.py +0 -0
  66. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/agents/lease_client.py +0 -0
  67. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/agents/probes.py +0 -0
  68. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/agents/protocol.py +0 -0
  69. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/agents/server.py +0 -0
  70. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/agents/sinks.py +0 -0
  71. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/agents/transports.py +0 -0
  72. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/agents/watchdog.py +0 -0
  73. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/cli/__init__.py +0 -0
  74. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/cli/campaign.py +0 -0
  75. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/cli/config_cmd.py +0 -0
  76. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/cli/context.py +0 -0
  77. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/cli/dependency.py +0 -0
  78. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/cli/exit_codes.py +0 -0
  79. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/cli/experiment.py +0 -0
  80. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/cli/services.py +0 -0
  81. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/cli/style.py +0 -0
  82. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/cli/toolkit.py +0 -0
  83. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/cli/topology.py +0 -0
  84. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/controller/__init__.py +0 -0
  85. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/controller/compensation.py +0 -0
  86. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/controller/executor.py +0 -0
  87. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/controller/janitor.py +0 -0
  88. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/controller/observability_collector.py +0 -0
  89. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/controller/observations.py +0 -0
  90. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/controller/recovery.py +0 -0
  91. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/controller/resilience_report.py +0 -0
  92. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/controller/resource_manager.py +0 -0
  93. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/controller/safety.py +0 -0
  94. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/__init__.py +0 -0
  95. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/campaigns.py +0 -0
  96. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/cancellation.py +0 -0
  97. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/candidates.py +0 -0
  98. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/capabilities.py +0 -0
  99. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/catalog.py +0 -0
  100. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/checks.py +0 -0
  101. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/common.py +0 -0
  102. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/decisions.py +0 -0
  103. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/errors.py +0 -0
  104. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/events.py +0 -0
  105. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/execution_context.py +0 -0
  106. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/execution_loci.py +0 -0
  107. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/experiments.py +0 -0
  108. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/faults.py +0 -0
  109. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/identity.py +0 -0
  110. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/k8s_adapter.py +0 -0
  111. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/leases.py +0 -0
  112. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/load_strategy.py +0 -0
  113. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/m5_campaign.py +0 -0
  114. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/maniac.py +0 -0
  115. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/observability.py +0 -0
  116. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/outcomes.py +0 -0
  117. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/remote_agent_interface.py +0 -0
  118. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/resources.py +0 -0
  119. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/risks.py +0 -0
  120. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/run_outcome.py +0 -0
  121. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/runtime_adapter.py +0 -0
  122. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/success.py +0 -0
  123. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/domain/topology.py +0 -0
  124. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/infra/__init__.py +0 -0
  125. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/infra/campaign_engine.py +0 -0
  126. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/infra/candidate_generator.py +0 -0
  127. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/infra/lease_repository.py +0 -0
  128. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/infra/maniac.py +0 -0
  129. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/infra/migrator.py +0 -0
  130. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/infra/report.py +0 -0
  131. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/infra/store.py +0 -0
  132. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/py.typed +0 -0
  133. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/spec.py +0 -0
  134. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/toolkit/__init__.py +0 -0
  135. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/toolkit/fingerprint.py +0 -0
  136. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/toolkit/hashing.py +0 -0
  137. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/toolkit/manifests/docker.yaml +0 -0
  138. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/toolkit/manifests/podman.yaml +0 -0
  139. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/toolkit/manifests/stress-ng.yaml +0 -0
  140. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/toolkit/manifests/tc-netem.yaml +0 -0
  141. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/toolkit/manifests/toxiproxy.yaml +0 -0
  142. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/toolkit/registry.py +0 -0
  143. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/toolkit/tool_runner.py +0 -0
  144. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/topology/__init__.py +0 -0
  145. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/topology/providers/__init__.py +0 -0
  146. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/topology/providers/adapter_registry.py +0 -0
  147. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/topology/providers/base.py +0 -0
  148. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/topology/providers/compose.py +0 -0
  149. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/topology/providers/docker_adapter.py +0 -0
  150. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/topology/providers/docker_runtime.py +0 -0
  151. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/topology/providers/podman_adapter.py +0 -0
  152. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/topology/resolve.py +0 -0
  153. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/src/mayhem/topology/service.py +0 -0
  154. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/conftest.py +0 -0
  155. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/e2e/__init__.py +0 -0
  156. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/integration/test_agent_serve.py +0 -0
  157. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/integration/test_agent_watchdog_e2e.py +0 -0
  158. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/integration/test_m5_e2e.py +0 -0
  159. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/integration/test_store.py +0 -0
  160. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_agent_capabilities.py +0 -0
  161. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_agent_protocol.py +0 -0
  162. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_agents.py +0 -0
  163. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_campaign_run.py +0 -0
  164. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_campaigns.py +0 -0
  165. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_cancellation.py +0 -0
  166. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_candidates.py +0 -0
  167. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_capability_matrix.py +0 -0
  168. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_capability_registry.py +0 -0
  169. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_capability_safety.py +0 -0
  170. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_check_spec.py +0 -0
  171. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_cli_exit_codes.py +0 -0
  172. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_cli_resolver.py +0 -0
  173. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_compensation.py +0 -0
  174. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_config.py +0 -0
  175. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_container_fault_matrix.py +0 -0
  176. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_domain_properties.py +0 -0
  177. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_drill_spec.py +0 -0
  178. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_example_specs_yaml.py +0 -0
  179. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_execution_context.py +0 -0
  180. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_executor.py +0 -0
  181. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_executor_drill.py +0 -0
  182. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_fault_catalog_all.py +0 -0
  183. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_faults.py +0 -0
  184. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_fingerprint.py +0 -0
  185. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_fork_atomicity.py +0 -0
  186. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_impact_gate.py +0 -0
  187. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_janitor.py +0 -0
  188. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_lease_repository.py +0 -0
  189. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_leases.py +0 -0
  190. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_lifecycle_run_liveness.py +0 -0
  191. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_load_strategy.py +0 -0
  192. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_m12_step1_catalog.py +0 -0
  193. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_m7_k8s.py +0 -0
  194. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_m8_operations.py +0 -0
  195. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_m9_catalog.py +0 -0
  196. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_maniac.py +0 -0
  197. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_network_path_model.py +0 -0
  198. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_observability.py +0 -0
  199. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_observations.py +0 -0
  200. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_recovery.py +0 -0
  201. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_report.py +0 -0
  202. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_resilience_report.py +0 -0
  203. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_resolve.py +0 -0
  204. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_resource_conflict_exec.py +0 -0
  205. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_resource_manager.py +0 -0
  206. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_resources.py +0 -0
  207. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_risks.py +0 -0
  208. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_run_outcome.py +0 -0
  209. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_runtime_adapter.py +0 -0
  210. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_safety.py +0 -0
  211. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_success.py +0 -0
  212. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_three_locus.py +0 -0
  213. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_tool_runner.py +0 -0
  214. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_topology.py +0 -0
  215. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_topology_ctr.py +0 -0
  216. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_topology_providers.py +0 -0
  217. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/tests/unit/test_watchdog.py +0 -0
  218. {mayhem_cli-0.5.1 → mayhem_cli-0.6.2}/uv.lock +0 -0
@@ -55,4 +55,35 @@ jobs:
55
55
  # magichrist, repo Mayhem, workflow release.yml). Do NOT add a
56
56
  # username/password here — the action would try token auth.
57
57
  - name: Publish to PyPI
58
- uses: pypa/gh-action-pypi-publish@release/v1
58
+ uses: pypa/gh-action-pypi-publish@release/v1
59
+
60
+ publish-github-release:
61
+ name: Create GitHub release from cliff changelog
62
+ needs: test
63
+ runs-on: ubuntu-latest
64
+ permissions:
65
+ contents: write # create the GitHub release
66
+ steps:
67
+ # Full history + tags so git-cliff can resolve commit ranges.
68
+ - uses: actions/checkout@v4
69
+ with:
70
+ fetch-depth: 0
71
+ - name: Install git-cliff
72
+ run: |
73
+ curl -sSL -o /tmp/git-cliff.tar.gz \
74
+ https://github.com/orhun/git-cliff/releases/download/v2.14.1/git-cliff-2.14.1-x86_64-unknown-linux-gnu.tar.gz
75
+ tar -xzf /tmp/git-cliff.tar.gz -C /tmp
76
+ sudo install -m755 /tmp/git-cliff-*/git-cliff /usr/local/bin/git-cliff
77
+ git-cliff --version
78
+ # NOTE: names the invoking tag explicitly (`--tag`) instead of using
79
+ # `--latest` — when HEAD sits exactly on the tag (always true for a
80
+ # tag-push checkout) `--latest` degrades to a single-commit section.
81
+ # `--tag "$GITHUB_REF_NAME"` renders the same latest-release notes for
82
+ # both tag conventions (`0.5.1` and `v0.5.1`).
83
+ - name: Render release notes
84
+ run: git-cliff --config cliff.toml --tag "$GITHUB_REF_NAME" --strip header -o /tmp/body.md
85
+ - name: Create GitHub release
86
+ uses: softprops/action-gh-release@v2
87
+ with:
88
+ name: ${{ github.ref_name }}
89
+ body_path: /tmp/body.md
@@ -0,0 +1,415 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ This changelog is generated from the project's git history by
6
+ [git-cliff](https://git-cliff.org). Mayhem commits are grouped both by the
7
+ **drill phase** that produced them (Explore / Expert / Coverage / Next) and
8
+ by conventional-commit type — see the phase map below.
9
+
10
+ ## 0.6.0 - 2026-09-11
11
+
12
+
13
+
14
+ ### 🚀 Features
15
+
16
+ - Plan for 0.6.0
17
+
18
+
19
+
20
+ ### 📚 Documentation
21
+
22
+ - **feat-1**: Ground every §1 claim in a verification log + persona design rules
23
+
24
+ - New features dictation
25
+
26
+
27
+
28
+ ### 🧪 Testing
29
+
30
+ - Verify config absorption, CLI contract, coverage, KPI + ranking
31
+
32
+
33
+ ## 0.5.1 - 2026-09-09
34
+
35
+
36
+
37
+ ### 🚀 Features
38
+
39
+ - Add example experiment definitions (maniac-hour, proc-pause-drill)
40
+
41
+ - Add net.load fault
42
+
43
+ - Add color logs, better readability, also fix some bugs
44
+
45
+ - Add execution to agents
46
+
47
+ - Topology service is better now
48
+
49
+ - Lease now have more capabilities
50
+
51
+ - Adrs and milestones are mostly done
52
+
53
+ - Kube and other adrs applied
54
+
55
+ - Add M0011 migration for M5 run and outcome tables
56
+
57
+ - Add Run/Outcome persistence methods to Store
58
+
59
+ - Add M0012 migration for M5 coverage table
60
+
61
+ - Add candidates module
62
+
63
+ - Add coverage module
64
+
65
+ - Add m5_campaign module
66
+
67
+ - Add run_outcome module
68
+
69
+ - Add campaign_engine module
70
+
71
+ - Add candidate_gates module
72
+
73
+ - Add candidate_generator module
74
+
75
+ - Add coverage_repository module
76
+
77
+ - Add maniac module
78
+
79
+ - Add report module
80
+
81
+ - Add new faults and better tested campaign+runner
82
+
83
+ - **resilience**: Attach end-of-run resilience score + diagnosis to drill runs
84
+
85
+ - **dependency**: Add 'mayhem dependency compile' to bake fault tooling into compose
86
+
87
+ - **janitor**: Finalize ORPHANED/RELEASING and surrender stale DIRTY leases
88
+
89
+ - **lifecycle**: TTL-sweep sticky leases before every run
90
+
91
+ - **examples**: Add net.load fault to the testCase api drill
92
+
93
+ - **resilience**: Grade bands and grounded metric table in the report
94
+
95
+ - **cli**: Maniac zero-config synthesis and --ctr container scoping
96
+
97
+
98
+
99
+ ### 🐛 Bug Fixes
100
+
101
+ - **faults**: Better handling
102
+
103
+ - **app**: Fix known issues in app arch
104
+
105
+ - Minor change
106
+
107
+ - Executor is now behaving right
108
+
109
+ - Config old syntax removed, updated DSL
110
+
111
+ - Maniac cli now works as it should
112
+
113
+ - **impact**: Gate every in-container fault on its real tooling
114
+
115
+ - Net.load uses localhost if container exposes port else must gain ip
116
+
117
+ - **leases**: DIRTY is not terminal — may only be surrendered to EXPIRED
118
+
119
+ - **executor**: Resume orphan recovery from any checkpoint state
120
+
121
+ - **compensation**: Clock.skew inject must double-quote $target expansion
122
+
123
+ - **impact**: Gate SYS_TIME faults as inert under rootless engines
124
+
125
+ - **dependency**: Warn when bootstrapped service relies on image CMD only
126
+
127
+ - **examples**: Give testcase-lb an explicit command
128
+
129
+ - Clock.skew and process.stop are fixed, also add failure policy: fast-fail, continue
130
+
131
+ - **faults**: Accept numeric seconds for DURATION params
132
+
133
+ - **topology**: Container resolves as running when state inspect fails
134
+
135
+ - **janitor**: Reclaim crashed controllers' leases before TTL
136
+
137
+
138
+
139
+ ### 💼 Other
140
+
141
+ - Init
142
+
143
+ - Init
144
+
145
+ - Add more bugs
146
+
147
+ - Updated README
148
+
149
+ - Near release
150
+
151
+ - Add more bugs
152
+
153
+ - 0.2.0dev
154
+
155
+ - Update executors module
156
+
157
+ - Update compensation module
158
+
159
+ - Update catalog module
160
+
161
+ - Update faults module
162
+
163
+ - Remove cached .pyc file
164
+
165
+ - Update agent_protocol tests
166
+
167
+ - Update executor tests
168
+
169
+ - Update README
170
+
171
+ - Remove answer2 doc
172
+
173
+ - Update drill-spec doc
174
+
175
+ - Remove milestones docs
176
+
177
+ - Remove plan-drill-spec doc
178
+
179
+ - Remove runtime-adapters plan doc
180
+
181
+ - Update executors module
182
+
183
+ - Update impact module
184
+
185
+ - Update probes module
186
+
187
+ - Update compensation module
188
+
189
+ - Update executor controller module
190
+
191
+ - Update planner module
192
+
193
+ - Update resource_manager module
194
+
195
+ - Update safety module
196
+
197
+ - Update capabilities module
198
+
199
+ - Update catalog module
200
+
201
+ - Update common module
202
+
203
+ - Update events module
204
+
205
+ - Update execution_context module
206
+
207
+ - Update execution_loci module
208
+
209
+ - Update experiments module
210
+
211
+ - Update faults module
212
+
213
+ - Update k8s_adapter module
214
+
215
+ - Update topology module
216
+
217
+ - Update migrations module
218
+
219
+ - Update migrator module
220
+
221
+ - Update report module
222
+
223
+ - Update store module
224
+
225
+ - Update adapter_registry module
226
+
227
+ - Update docker_adapter module
228
+
229
+ - Update topology service module
230
+
231
+ - Update m5 e2e tests
232
+
233
+ - Update agents tests
234
+
235
+ - Update cancellation tests
236
+
237
+ - Update compensation tests
238
+
239
+ - Update coverage tests
240
+
241
+ - Update drill_spec tests
242
+
243
+ - Update executor tests
244
+
245
+ - Update faults tests
246
+
247
+ - Update maniac tests
248
+
249
+ - Update report tests
250
+
251
+ - Update run_outcome tests
252
+
253
+ - Update topology_providers tests
254
+
255
+ - Add MS-Complete doc
256
+
257
+ - Add ADR-M4-3 success criteria
258
+
259
+ - Add ADR-M4-4 observability
260
+
261
+ - Add observability_collector module
262
+
263
+ - Add decisions module
264
+
265
+ - Add observability module
266
+
267
+ - Add success module
268
+
269
+ - Add m7 k8s tests
270
+
271
+ - Add m8 operations tests
272
+
273
+ - Add observability tests
274
+
275
+ - Add success tests
276
+
277
+ - Rewrite README: drill-engine positioning, comparison table, run transcript walkthrough, quickstart
278
+
279
+ - Expand example drill: recovery off, check_spec, success criteria, observability sources, container.restart/pause faults
280
+
281
+ - Print copy-paste run handle with mayhem history command after run
282
+
283
+ - Pass spec_dir into plan_drill so relative asset paths resolve against the drill file
284
+
285
+ - Materialize user-supplied k6 script content into container instead of inline GET script
286
+
287
+ - False keeps fault in place, releases lease terminally as kept_faulted without dirty flag
288
+
289
+ - Embed net.load script content into frozen plan and propagate recovery flag per fault
290
+
291
+ - Add net.load script param for custom k6 script.js path
292
+
293
+ - Add recovery flag to DrillConfig, DrillFault override, and PlannedFault
294
+
295
+ - Emit ProcessNode with main PID so process-addressed faults resolve, matching docker provider
296
+
297
+ - Assert run output includes the mayhem history copy-paste handle
298
+
299
+ - Update README
300
+
301
+ - Remove MS-Complete.md
302
+
303
+ - Remove deprecated ADR documents
304
+
305
+ - Update drill spec documentation
306
+
307
+ - Update agents executors
308
+
309
+ - Update CLI app
310
+
311
+ - Update CLI lifecycle
312
+
313
+ - Update CLI services
314
+
315
+ - Update config
316
+
317
+ - Update controller compensation
318
+
319
+ - Update controller planner
320
+
321
+ - Update domain catalog
322
+
323
+ - Update domain decisions
324
+
325
+ - Update domain experiments
326
+
327
+ - Update unit test CLI
328
+
329
+ - Update unit test maniac
330
+
331
+ - Ongoing pypi release🎊
332
+
333
+
334
+
335
+ ### 🚜 Refactor
336
+
337
+ - Rename package tgondi to mayhem
338
+
339
+ - Ruff format
340
+
341
+
342
+
343
+ ### 📚 Documentation
344
+
345
+ - Update documentation for mayhem rename and add re-design/rename notes
346
+
347
+ - Removed old docs, new arch plan in next commit
348
+
349
+ - Document recovery control and net.load script param in drill spec
350
+
351
+
352
+
353
+ ### 🎨 Styling
354
+
355
+ - Reformat threshold type-check conditional in probes.py
356
+
357
+
358
+
359
+ ### 🧪 Testing
360
+
361
+ - Update and add tests for renamed mayhem package
362
+
363
+ - **e2e**: Automated e2e tests with justfile
364
+
365
+ - **e2e**: Fixed some errors
366
+
367
+ - **e2e**: All tests pass 🎉
368
+
369
+ - **unit**: Near pass
370
+
371
+ - Add M5 campaign semantics and execution loop tests
372
+
373
+ - Add m5 e2e integration tests
374
+
375
+ - Add candidates unit tests
376
+
377
+ - Add coverage unit tests
378
+
379
+ - Add maniac unit tests
380
+
381
+ - Add report unit tests
382
+
383
+ - Add run_outcome unit tests
384
+
385
+ - Test net.load user k6 script content embedding in inject argv
386
+
387
+ - Test recovery flag defaults and per-fault override in DrillSpec
388
+
389
+ - Test recovery:false keeps process stopped with kept_faulted lease and skipped undo
390
+
391
+ - Test net.load script embedding against spec_dir and recovery propagation to plan
392
+
393
+ - Add container x fault matrix and fix stale config-show e2e assertion
394
+
395
+ - **leases**: DIRTY surrender-only and janitor-only EXPIRED transition
396
+
397
+ - **domain**: DIRTY may transition to EXPIRED in the leak-property table
398
+
399
+ - **janitor**: Stale DIRTY surrendered, ORPHANED/RELEASING finalized
400
+
401
+ - **compensation**: Clock.skew full-script expansion regression
402
+
403
+ - **impact**: Rootless detection + SYS_TIME inert gating
404
+
405
+ - **e2e**: Compile warns on program-less service, silent when command declared
406
+
407
+
408
+
409
+ ### ⚙️ Miscellaneous Tasks
410
+
411
+ - Update gitignore for mayhem rename and local artifacts
412
+
413
+ - **examples**: Commit compiled docker-compose.mayhem.yml for testCase
414
+
415
+ <!-- generated by git-cliff -->
@@ -202,3 +202,12 @@ e2e: stack-up topology toolkit config experiment full campaign test
202
202
  @echo "╔══════════════════════════════════════════════╗"
203
203
  @echo "║ ALL E2E RECIPES PASSED ║"
204
204
  @echo "╚══════════════════════════════════════════════╝"
205
+
206
+ # ── changelog ─────────────────────────────────────────────────────────────────
207
+ # Regenerate CHANGELOG.md from git history (git-cliff)
208
+ changelog:
209
+ git-cliff --config cliff.toml -o CHANGELOG.md
210
+
211
+ # Render notes for the current release only (used as the GitHub release body)
212
+ changelog-release:
213
+ git-cliff --config cliff.toml --tag "$$(git describe --tags --abbrev=0)" --strip header
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: mayhem-cli
3
- Version: 0.5.1
3
+ Version: 0.6.2
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
@@ -0,0 +1,87 @@
1
+ # git-cliff configuration — https://git-cliff.org/docs/configuration
2
+ # Changelog is rendered by Tera templates; every `{% ... %}` / `{{ ... }}`
3
+ # block is evaluated at render time.
4
+
5
+ [changelog]
6
+ header = """\
7
+ # Changelog
8
+
9
+ All notable changes to this project will be documented in this file.
10
+
11
+ This changelog is generated from the project's git history by
12
+ [git-cliff](https://git-cliff.org). Mayhem commits are grouped both by the
13
+ **drill phase** that produced them (Explore / Expert / Coverage / Next) and
14
+ by conventional-commit type — see the phase map below.
15
+ """
16
+
17
+ body = '''{% if version %}
18
+ ## {{ version | trim_start_matches(pat='v') }} - {{ timestamp | date(format='%Y-%m-%d') }}
19
+ {% else %}
20
+ ## [unreleased]
21
+ {% endif %}
22
+ {% for group, commits in commits | group_by(attribute='group') %}
23
+
24
+ ### {{ group | striptags | trim }}
25
+ {% for commit in commits %}
26
+ - {% if commit.scope %}**{{ commit.scope }}**: {% endif %}{{ commit.message | upper_first }}
27
+ {% endfor %}
28
+ {% endfor %}
29
+ '''
30
+
31
+ footer = """\
32
+ <!-- generated by git-cliff -->
33
+ """
34
+
35
+ trim = true
36
+
37
+ # ── Phase-aware grouping ────────────────────────────────────────────────
38
+ # git-cliff assigns a commit to the group of the FIRST parser that matches.
39
+ # Cliff-phase parsers are listed first, so a commit whose scope names a
40
+ # Mayhem drill phase lands in that phase's section; anything else falls
41
+ # through to the conventional-type parsers below. The message regexes are
42
+ # deliberately permissive (`^feat\\(explore\\)`, not `^feat`) so phase
43
+ # grouping keyed on the CLI drill scope wins before type grouping.
44
+ commit_parsers = [
45
+ # ── Drill phases (scope → phase) ──
46
+ { message = "^feat\\(explore\\)", group = "Phase A · Explore" },
47
+ { message = "^fix\\(explore\\)", group = "Phase A · Explore" },
48
+ { message = "^feat\\(expert\\)", group = "Phase B · Expert" },
49
+ { message = "^fix\\(expert\\)", group = "Phase B · Expert" },
50
+ { message = "^feat\\(coverage\\)", group = "Phase C · Coverage" },
51
+ { message = "^fix\\(coverage\\)", group = "Phase C · Coverage" },
52
+ { message = "^feat\\(next\\)", group = "Phase D · Next" },
53
+ { message = "^fix\\(next\\)", group = "Phase D · Next" },
54
+ # ── Conventional-commit type fallback ──
55
+ # ── Drill: phases also ──
56
+ { message = "^feat\\(explore", group = "Phase A · Explore" },
57
+ { message = "^feat\\(expert", group = "Phase B · Expert Drill" },
58
+ { message = "^feat\\(coverage", group = "Phase C · Coverage" },
59
+ { message = "^feat\\(next", group = "Phase D · Next" },
60
+ # ── Drill: type fallthrough ──
61
+ { message = "^feat", group = "Features" },
62
+ { message = "^fix", group = "Bug Fixes" },
63
+ { message = "^perf", group = "Performance" },
64
+ { message = "^refactor", group = "Refactor" },
65
+ { message = "^docs", group = "Docs" },
66
+ { message = "^test", group = "Testing" },
67
+ { message = "^build", group = "Build" },
68
+ { message = "^ci", group = "CI" },
69
+ { message = "^style", group = "Style" },
70
+ { message = ".*", group = "Other" },
71
+ ]
72
+
73
+ # Keep everything; unconventional messages fall to the catch-all.
74
+ filter_commits = false
75
+ sort_commits = "oldest"
76
+
77
+ [git]
78
+ # Traditional commit messages are handled; Mayhem also uses
79
+ # conventional-commit prefixes for the drill scopes above.
80
+ conventional_commits = true
81
+ filter_unconventional = false
82
+
83
+ # Only true release tags (`0.5.1`) become changelog sections; the
84
+ # `0.5.0dev` / `0.2.0dev` milestones fold into their final release.
85
+ tag_pattern = "^[0-9]+(\\.[0-9]+)+$"
86
+ # Sort commits topologically inside git so ranges are stable across runs.
87
+ topo_order = true