mayhem-cli 0.5.1__tar.gz → 0.8.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/.github/workflows/release.yml +36 -5
- mayhem_cli-0.8.0/CHANGELOG.md +415 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/Justfile +29 -19
- mayhem_cli-0.8.0/PKG-INFO +404 -0
- mayhem_cli-0.8.0/README.md +389 -0
- mayhem_cli-0.8.0/cliff.toml +87 -0
- mayhem_cli-0.8.0/docs/README.md +74 -0
- mayhem_cli-0.8.0/docs/adr/adr-m7-1-k8s-executor.md +98 -0
- mayhem_cli-0.8.0/docs/adr-adr-m7-1-k8s-executor-flip.md +172 -0
- mayhem_cli-0.8.0/docs/architecture/fault-taxonomy.md +5 -0
- mayhem_cli-0.8.0/docs/architecture/safety.md +12 -0
- mayhem_cli-0.8.0/docs/architecture/toolkit.md +5 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/docs/compensation.md +6 -2
- mayhem_cli-0.8.0/docs/config.md +212 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/docs/drill-spec.md +105 -23
- mayhem_cli-0.8.0/docs/fault-catalog/README.md +21 -0
- mayhem_cli-0.8.0/docs/fault-catalog/reliability-matrix.md +64 -0
- mayhem_cli-0.8.0/docs/grounding-log.md +69 -0
- mayhem_cli-0.8.0/docs/grounding-rules.md +70 -0
- mayhem_cli-0.8.0/docs/k8s-new.md +5 -0
- mayhem_cli-0.8.0/docs/k8s-plan-1.md +437 -0
- mayhem_cli-0.8.0/docs/k8s-plan-2.md +387 -0
- mayhem_cli-0.8.0/docs/m7-k8s-executor-discovery.md +164 -0
- mayhem_cli-0.8.0/docs/new-plan/00-product-and-cli-roadmap.md +84 -0
- mayhem_cli-0.8.0/docs/new-plan/01-workflow-command-architecture.md +84 -0
- mayhem_cli-0.8.0/docs/new-plan/02-guided-onboarding-and-target-profiles.md +75 -0
- mayhem_cli-0.8.0/docs/new-plan/03-plan-first-execution-and-unified-evidence.md +77 -0
- mayhem_cli-0.8.0/docs/new-plan/04-output-errors-and-script-compatibility.md +77 -0
- mayhem_cli-0.8.0/docs/new-plan/05-configuration-policy-and-environment-safety.md +73 -0
- mayhem_cli-0.8.0/docs/new-plan/06-docker-podman-reliability-slice.md +75 -0
- mayhem_cli-0.8.0/docs/new-plan/07-first-class-kubernetes-engine.md +78 -0
- mayhem_cli-0.8.0/docs/new-plan/08-fault-catalog-reliability-matrix.md +83 -0
- mayhem_cli-0.8.0/docs/new-plan/09-campaigns-coverage-and-explore-loop.md +79 -0
- mayhem_cli-0.8.0/docs/new-plan/10-diagnostics-recovery-and-reporting.md +76 -0
- mayhem_cli-0.8.0/docs/new-plan/11-extension-api-and-packaging.md +88 -0
- mayhem_cli-0.8.0/docs/new-plan/README.md +52 -0
- mayhem_cli-0.8.0/docs/policy-and-break-glass.md +28 -0
- mayhem_cli-0.8.0/docs/product/cli-product-direction.md +64 -0
- mayhem_cli-0.8.0/docs/product/command-architecture.md +100 -0
- mayhem_cli-0.8.0/docs/provider-sdk.md +217 -0
- mayhem_cli-0.8.0/docs/reference/cli.md +110 -0
- mayhem_cli-0.8.0/docs/reference/experiment-dsl.md +10 -0
- mayhem_cli-0.8.0/docs/reference/fault-catalog.md +82 -0
- mayhem_cli-0.8.0/docs/reference/output-schema.md +47 -0
- mayhem_cli-0.8.0/docs/reference/sqlite-schema.md +15 -0
- mayhem_cli-0.8.0/docs/superpowers/plans/2026-09-24-container-kubernetes-fault-expansion-plan.md +267 -0
- mayhem_cli-0.8.0/docs/superpowers/plans/2026-09-24-documentation-to-implementation-plan.md +406 -0
- mayhem_cli-0.8.0/docs/superpowers/specs/2026-09-24-container-kubernetes-fault-expansion-design.md +61 -0
- mayhem_cli-0.8.0/docs/superpowers/specs/2026-09-24-documentation-to-implementation-design.md +91 -0
- mayhem_cli-0.8.0/examples/k8s/README.md +39 -0
- mayhem_cli-0.8.0/examples/k8s/mayhem.yaml +207 -0
- mayhem_cli-0.8.0/examples/providers/test-catalog.json +40 -0
- mayhem_cli-0.8.0/examples/providers/test_provider.py +19 -0
- mayhem_cli-0.8.0/examples/testCase/mayhem-safe-docker-podman.yaml +50 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/pyproject.toml +46 -5
- mayhem_cli-0.8.0/src/mayhem/agents/executors.py +3931 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/agents/impact.py +37 -1
- mayhem_cli-0.8.0/src/mayhem/agents/k8s_control.py +411 -0
- mayhem_cli-0.8.0/src/mayhem/agents/k8s_resolve.py +947 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/agents/lease_client.py +7 -0
- mayhem_cli-0.8.0/src/mayhem/cli/app.py +226 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/cli/campaign.py +234 -59
- mayhem_cli-0.8.0/src/mayhem/cli/command_registry.py +79 -0
- mayhem_cli-0.8.0/src/mayhem/cli/commands.py +48 -0
- mayhem_cli-0.8.0/src/mayhem/cli/config_cmd.py +71 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/cli/context.py +3 -0
- mayhem_cli-0.8.0/src/mayhem/cli/coverage_cmd.py +262 -0
- mayhem_cli-0.8.0/src/mayhem/cli/doctor.py +128 -0
- mayhem_cli-0.8.0/src/mayhem/cli/errors.py +196 -0
- mayhem_cli-0.8.0/src/mayhem/cli/execution.py +129 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/cli/experiment.py +2 -0
- mayhem_cli-0.8.0/src/mayhem/cli/expert.py +553 -0
- mayhem_cli-0.8.0/src/mayhem/cli/explore.py +412 -0
- mayhem_cli-0.8.0/src/mayhem/cli/extend.py +153 -0
- mayhem_cli-0.8.0/src/mayhem/cli/init.py +138 -0
- mayhem_cli-0.8.0/src/mayhem/cli/inspect.py +192 -0
- mayhem_cli-0.8.0/src/mayhem/cli/lifecycle.py +1745 -0
- mayhem_cli-0.8.0/src/mayhem/cli/next_cmd.py +271 -0
- mayhem_cli-0.8.0/src/mayhem/cli/output.py +111 -0
- mayhem_cli-0.8.0/src/mayhem/cli/render.py +151 -0
- mayhem_cli-0.8.0/src/mayhem/cli/renderers.py +193 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/cli/resolver.py +11 -1
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/cli/services.py +167 -19
- mayhem_cli-0.8.0/src/mayhem/cli/toolkit.py +139 -0
- mayhem_cli-0.8.0/src/mayhem/cli/topology.py +334 -0
- mayhem_cli-0.8.0/src/mayhem/cli/workflows.py +110 -0
- mayhem_cli-0.8.0/src/mayhem/config.py +401 -0
- mayhem_cli-0.8.0/src/mayhem/controller/cell_runner.py +187 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/controller/compensation.py +180 -7
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/controller/executor.py +748 -9
- mayhem_cli-0.8.0/src/mayhem/controller/explore_flow.py +280 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/controller/janitor.py +49 -0
- mayhem_cli-0.8.0/src/mayhem/controller/k8s_runtime.py +859 -0
- mayhem_cli-0.8.0/src/mayhem/controller/plan_diff.py +79 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/controller/planner.py +599 -59
- mayhem_cli-0.8.0/src/mayhem/controller/preflight.py +381 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/controller/recovery.py +210 -0
- mayhem_cli-0.8.0/src/mayhem/controller/safety.py +576 -0
- mayhem_cli-0.8.0/src/mayhem/controller/target_selector.py +3 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/campaigns.py +46 -0
- mayhem_cli-0.8.0/src/mayhem/domain/catalog.py +1851 -0
- mayhem_cli-0.8.0/src/mayhem/domain/cell_rules.py +48 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/common.py +12 -7
- mayhem_cli-0.8.0/src/mayhem/domain/coverage.py +314 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/decisions.py +33 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/errors.py +28 -0
- mayhem_cli-0.8.0/src/mayhem/domain/evidence.py +57 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/experiments.py +172 -11
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/faults.py +91 -9
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/identity.py +15 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/k8s_adapter.py +62 -6
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/leases.py +50 -1
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/m5_campaign.py +73 -3
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/maniac.py +52 -1
- mayhem_cli-0.8.0/src/mayhem/domain/policy.py +140 -0
- mayhem_cli-0.8.0/src/mayhem/domain/preflight.py +123 -0
- mayhem_cli-0.8.0/src/mayhem/domain/provider.py +323 -0
- mayhem_cli-0.8.0/src/mayhem/domain/resolution.py +72 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/runtime_adapter.py +117 -0
- mayhem_cli-0.8.0/src/mayhem/domain/target.py +125 -0
- mayhem_cli-0.8.0/src/mayhem/domain/target_profiles.py +221 -0
- mayhem_cli-0.8.0/src/mayhem/domain/target_selector.py +283 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/topology.py +8 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/infra/campaign_engine.py +77 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/infra/candidate_gates.py +20 -0
- mayhem_cli-0.8.0/src/mayhem/infra/catalog_report.py +277 -0
- mayhem_cli-0.8.0/src/mayhem/infra/coverage_repository.py +397 -0
- mayhem_cli-0.8.0/src/mayhem/infra/diagnostics.py +963 -0
- mayhem_cli-0.8.0/src/mayhem/infra/evidence.py +241 -0
- mayhem_cli-0.8.0/src/mayhem/infra/kpi.py +172 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/infra/lease_repository.py +34 -2
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/infra/migrations.py +40 -0
- mayhem_cli-0.8.0/src/mayhem/infra/project_detection.py +115 -0
- mayhem_cli-0.8.0/src/mayhem/infra/ranking.py +192 -0
- mayhem_cli-0.8.0/src/mayhem/infra/report.py +543 -0
- mayhem_cli-0.8.0/src/mayhem/providers/__init__.py +19 -0
- mayhem_cli-0.8.0/src/mayhem/providers/builtin.py +126 -0
- mayhem_cli-0.8.0/src/mayhem/providers/loader.py +316 -0
- mayhem_cli-0.8.0/src/mayhem/providers/protocols.py +36 -0
- mayhem_cli-0.8.0/src/mayhem/providers/registry.py +80 -0
- mayhem_cli-0.8.0/src/mayhem/schemas/output_v1.json +43 -0
- mayhem_cli-0.8.0/src/mayhem/topology/providers/adapter_registry.py +86 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/topology/providers/docker_adapter.py +17 -0
- mayhem_cli-0.8.0/src/mayhem/topology/providers/k8s_manifest.py +229 -0
- mayhem_cli-0.8.0/src/mayhem/topology/providers/kubernetes.py +406 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/e2e/test_cli_e2e.py +84 -72
- mayhem_cli-0.8.0/tests/fixtures/cli/commands_show.json +37 -0
- mayhem_cli-0.8.0/tests/fixtures/cli/coverage.json +22 -0
- mayhem_cli-0.8.0/tests/fixtures/cli/doctor.json +18 -0
- mayhem_cli-0.8.0/tests/unit/test_accept_criteria.py +162 -0
- mayhem_cli-0.8.0/tests/unit/test_additive_schema.py +137 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_campaigns.py +91 -4
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_capability_safety.py +17 -0
- mayhem_cli-0.8.0/tests/unit/test_cell_rules.py +86 -0
- mayhem_cli-0.8.0/tests/unit/test_cell_runner.py +204 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_cli.py +193 -8
- mayhem_cli-0.8.0/tests/unit/test_cli_active_surface.py +60 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_cli_campaign.py +3 -1
- mayhem_cli-0.8.0/tests/unit/test_cli_config.py +44 -0
- mayhem_cli-0.8.0/tests/unit/test_cli_contract.py +114 -0
- mayhem_cli-0.8.0/tests/unit/test_cli_doctor.py +143 -0
- mayhem_cli-0.8.0/tests/unit/test_cli_errors.py +132 -0
- mayhem_cli-0.8.0/tests/unit/test_cli_execution.py +216 -0
- mayhem_cli-0.8.0/tests/unit/test_cli_exhaustive_matrix.py +735 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_cli_exit_codes.py +11 -11
- mayhem_cli-0.8.0/tests/unit/test_cli_extend.py +149 -0
- mayhem_cli-0.8.0/tests/unit/test_cli_init.py +123 -0
- mayhem_cli-0.8.0/tests/unit/test_cli_output.py +75 -0
- mayhem_cli-0.8.0/tests/unit/test_cli_renderers.py +124 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_cli_resolver.py +7 -7
- mayhem_cli-0.8.0/tests/unit/test_cli_topology.py +139 -0
- mayhem_cli-0.8.0/tests/unit/test_cli_user_regressions.py +59 -0
- mayhem_cli-0.8.0/tests/unit/test_command_inventory.py +56 -0
- mayhem_cli-0.8.0/tests/unit/test_command_registry.py +33 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_config.py +58 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_container_fault_matrix.py +15 -8
- mayhem_cli-0.8.0/tests/unit/test_coverage.py +310 -0
- mayhem_cli-0.8.0/tests/unit/test_coverage_repository.py +157 -0
- mayhem_cli-0.8.0/tests/unit/test_diagnostics.py +330 -0
- mayhem_cli-0.8.0/tests/unit/test_documentation_consistency.py +58 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_example_specs_yaml.py +5 -3
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_fault_catalog_all.py +56 -8
- mayhem_cli-0.8.0/tests/unit/test_fault_catalog_exhaustive.py +946 -0
- mayhem_cli-0.8.0/tests/unit/test_fault_catalog_metadata.py +126 -0
- mayhem_cli-0.8.0/tests/unit/test_fault_expansion_catalog.py +91 -0
- mayhem_cli-0.8.0/tests/unit/test_fault_expansion_container.py +161 -0
- mayhem_cli-0.8.0/tests/unit/test_fault_expansion_kubernetes.py +183 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_impact_gate.py +1 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_janitor.py +12 -0
- mayhem_cli-0.8.0/tests/unit/test_k8s_cli.py +150 -0
- mayhem_cli-0.8.0/tests/unit/test_k8s_discovery.py +360 -0
- mayhem_cli-0.8.0/tests/unit/test_k8s_manifest.py +512 -0
- mayhem_cli-0.8.0/tests/unit/test_k8s_plan1.py +285 -0
- mayhem_cli-0.8.0/tests/unit/test_k8s_plan2.py +210 -0
- mayhem_cli-0.8.0/tests/unit/test_k8s_selection.py +155 -0
- mayhem_cli-0.8.0/tests/unit/test_kpi.py +82 -0
- mayhem_cli-0.8.0/tests/unit/test_kplan1_targets.py +453 -0
- mayhem_cli-0.8.0/tests/unit/test_kplan2_topology.py +89 -0
- mayhem_cli-0.8.0/tests/unit/test_kplan3_resolver.py +203 -0
- mayhem_cli-0.8.0/tests/unit/test_kplan3_runtime.py +644 -0
- mayhem_cli-0.8.0/tests/unit/test_kplan5_runtime.py +508 -0
- mayhem_cli-0.8.0/tests/unit/test_kplan6_runtime.py +1205 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_lifecycle_run_liveness.py +66 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_m7_k8s.py +50 -6
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_maniac.py +1 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_migrations.py +29 -0
- mayhem_cli-0.8.0/tests/unit/test_plan_diff.py +55 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_planner.py +98 -0
- mayhem_cli-0.8.0/tests/unit/test_policy_explain.py +243 -0
- mayhem_cli-0.8.0/tests/unit/test_preflight.py +154 -0
- mayhem_cli-0.8.0/tests/unit/test_provider_loader.py +222 -0
- mayhem_cli-0.8.0/tests/unit/test_provider_registry.py +136 -0
- mayhem_cli-0.8.0/tests/unit/test_ranking.py +213 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_recovery.py +104 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_report.py +133 -1
- mayhem_cli-0.8.0/tests/unit/test_runtime_execution_matrix.py +2311 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_safety.py +18 -4
- mayhem_cli-0.8.0/tests/unit/test_selection_modes.py +352 -0
- mayhem_cli-0.8.0/tests/unit/test_target_profiles.py +141 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_topology_providers.py +6 -1
- mayhem_cli-0.8.0/tests/unit/test_workflow_groups.py +47 -0
- mayhem_cli-0.8.0/uv.lock +1619 -0
- mayhem_cli-0.5.1/PKG-INFO +0 -555
- mayhem_cli-0.5.1/README.md +0 -541
- mayhem_cli-0.5.1/examples/k8s/README.md +0 -32
- mayhem_cli-0.5.1/examples/k8s/mayhem.yaml +0 -76
- mayhem_cli-0.5.1/src/mayhem/agents/executors.py +0 -430
- mayhem_cli-0.5.1/src/mayhem/cli/app.py +0 -154
- mayhem_cli-0.5.1/src/mayhem/cli/config_cmd.py +0 -47
- mayhem_cli-0.5.1/src/mayhem/cli/lifecycle.py +0 -805
- mayhem_cli-0.5.1/src/mayhem/cli/toolkit.py +0 -41
- mayhem_cli-0.5.1/src/mayhem/cli/topology.py +0 -127
- mayhem_cli-0.5.1/src/mayhem/config.py +0 -208
- mayhem_cli-0.5.1/src/mayhem/controller/safety.py +0 -392
- mayhem_cli-0.5.1/src/mayhem/domain/catalog.py +0 -727
- mayhem_cli-0.5.1/src/mayhem/domain/coverage.py +0 -106
- mayhem_cli-0.5.1/src/mayhem/infra/coverage_repository.py +0 -101
- mayhem_cli-0.5.1/src/mayhem/infra/report.py +0 -227
- mayhem_cli-0.5.1/src/mayhem/topology/providers/adapter_registry.py +0 -60
- mayhem_cli-0.5.1/tests/unit/test_coverage.py +0 -156
- mayhem_cli-0.5.1/uv.lock +0 -819
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/.gitignore +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/examples/k8s/kubernetes.yaml +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/examples/testCase/data/hello.txt +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/examples/testCase/data/index.html +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/examples/testCase/docker-compose.mayhem.yml +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/examples/testCase/docker-compose.yml +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/examples/testCase/mayhem.yaml +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/examples/testCase/nginx.conf +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/agent/__init__.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/agent/cli.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/agents/__init__.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/agents/capabilities.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/agents/probes.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/agents/protocol.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/agents/server.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/agents/sinks.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/agents/transports.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/agents/watchdog.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/cli/__init__.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/cli/dependency.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/cli/exit_codes.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/cli/style.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/controller/__init__.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/controller/observability_collector.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/controller/observations.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/controller/resilience_report.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/controller/resource_manager.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/__init__.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/cancellation.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/candidates.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/capabilities.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/checks.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/events.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/execution_context.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/execution_loci.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/load_strategy.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/observability.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/outcomes.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/remote_agent_interface.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/resources.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/risks.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/run_outcome.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/domain/success.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/infra/__init__.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/infra/candidate_generator.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/infra/maniac.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/infra/migrator.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/infra/store.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/py.typed +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/spec.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/toolkit/__init__.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/toolkit/fingerprint.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/toolkit/hashing.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/toolkit/manifests/docker.yaml +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/toolkit/manifests/podman.yaml +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/toolkit/manifests/stress-ng.yaml +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/toolkit/manifests/tc-netem.yaml +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/toolkit/manifests/toxiproxy.yaml +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/toolkit/registry.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/toolkit/tool_runner.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/topology/__init__.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/topology/providers/__init__.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/topology/providers/base.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/topology/providers/compose.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/topology/providers/docker_runtime.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/topology/providers/podman_adapter.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/topology/resolve.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/src/mayhem/topology/service.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/conftest.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/e2e/__init__.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/integration/test_agent_serve.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/integration/test_agent_watchdog_e2e.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/integration/test_m5_e2e.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/integration/test_store.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_agent_capabilities.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_agent_protocol.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_agents.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_campaign_run.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_cancellation.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_candidates.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_capability_matrix.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_capability_registry.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_check_spec.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_compensation.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_domain_properties.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_drill_spec.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_execution_context.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_executor.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_executor_drill.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_faults.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_fingerprint.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_fork_atomicity.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_lease_repository.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_leases.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_load_strategy.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_m12_step1_catalog.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_m8_operations.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_m9_catalog.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_network_path_model.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_observability.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_observations.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_resilience_report.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_resolve.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_resource_conflict_exec.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_resource_manager.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_resources.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_risks.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_run_outcome.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_runtime_adapter.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_success.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_three_locus.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_tool_runner.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_topology.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_topology_ctr.py +0 -0
- {mayhem_cli-0.5.1 → mayhem_cli-0.8.0}/tests/unit/test_watchdog.py +0 -0
|
@@ -25,14 +25,14 @@ jobs:
|
|
|
25
25
|
run: python -m pip install --quiet uv
|
|
26
26
|
- name: Sync dev dependencies
|
|
27
27
|
run: uv sync --group dev
|
|
28
|
-
- name: Run tests
|
|
29
|
-
run: uv run pytest tests/unit
|
|
28
|
+
- name: Run unit tests
|
|
29
|
+
run: uv run pytest tests/unit
|
|
30
|
+
- name: Run integration tests
|
|
31
|
+
run: uv run pytest tests/integration
|
|
30
32
|
# NOTE: `ruff check src/` is NOT gated here — the repository's committed
|
|
31
33
|
# ruff config currently reports 30-49 pre-existing violations under every
|
|
32
34
|
# ruff generation (0.8-0.16); the project has no lint-green baseline in
|
|
33
35
|
# its history. Land a lint-cleanup first, then re-add `ruff check src/`.
|
|
34
|
-
- name: Architectural contracts
|
|
35
|
-
run: uv run lint-imports
|
|
36
36
|
|
|
37
37
|
build-and-publish:
|
|
38
38
|
name: Build and publish to PyPI
|
|
@@ -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 -->
|
|
@@ -9,9 +9,10 @@ set shell := ["bash", "-euo", "pipefail", "-c"]
|
|
|
9
9
|
|
|
10
10
|
_testcase := "examples/testCase"
|
|
11
11
|
_compose := _testcase / "docker-compose.yml"
|
|
12
|
-
_config := _testcase / "mayhem.
|
|
12
|
+
_config := _testcase / "mayhem.yaml"
|
|
13
13
|
_spec := _testcase / "mayhem.yaml"
|
|
14
14
|
_db := ".mayhem/e2e.db"
|
|
15
|
+
_workers := "5"
|
|
15
16
|
|
|
16
17
|
# ── setup ────────────────────────────────────────────────────────────────────
|
|
17
18
|
|
|
@@ -72,13 +73,6 @@ validate: setup
|
|
|
72
73
|
mayhem --db {{ _db }} validate {{ _spec }} --compose {{ _compose }}
|
|
73
74
|
@echo "✓ validate"
|
|
74
75
|
|
|
75
|
-
# Validate with explicit process topology (no compose auto-detect)
|
|
76
|
-
validate-process:
|
|
77
|
-
@echo "=== validate --process ==="
|
|
78
|
-
mayhem validate {{ _spec }} \
|
|
79
|
-
--process "download-1=10001" --process "download-2=10002"
|
|
80
|
-
@echo "✓ validate --process"
|
|
81
|
-
|
|
82
76
|
# Plan the experiment
|
|
83
77
|
plan:
|
|
84
78
|
@echo "=== plan ==="
|
|
@@ -108,16 +102,21 @@ history:
|
|
|
108
102
|
echo "✓ history"; \
|
|
109
103
|
fi
|
|
110
104
|
|
|
111
|
-
# Recovery sweep (orphaned fault leases)
|
|
112
|
-
recover:
|
|
105
|
+
# Recovery sweep (orphaned fault leases for the most recent run)
|
|
106
|
+
recover:
|
|
113
107
|
@echo "=== recover ==="
|
|
114
|
-
|
|
108
|
+
@run_id=$$(sqlite3 {{ _db }} "SELECT id FROM runs ORDER BY rowid DESC LIMIT 1" 2>/dev/null || echo ""); \
|
|
109
|
+
if [ -z "$$run_id" ]; then \
|
|
110
|
+
echo "⚠ no runs in DB — skipping recover"; \
|
|
111
|
+
else \
|
|
112
|
+
mayhem --db {{ _db }} recover "$$run_id"; \
|
|
113
|
+
fi
|
|
115
114
|
@echo "✓ recover"
|
|
116
115
|
|
|
117
116
|
# Janitor sweep (stale runs / resources)
|
|
118
117
|
janitor: setup
|
|
119
118
|
@echo "=== janitor ==="
|
|
120
|
-
mayhem --db {{ _db }} janitor
|
|
119
|
+
mayhem --db {{ _db }} janitor
|
|
121
120
|
@echo "✓ janitor"
|
|
122
121
|
|
|
123
122
|
# ── campaign CRUD ────────────────────────────────────────────────────────────
|
|
@@ -125,14 +124,16 @@ janitor: setup
|
|
|
125
124
|
# Create, list, show, start, abort, delete a campaign
|
|
126
125
|
campaign: setup
|
|
127
126
|
@echo "=== campaign ==="
|
|
128
|
-
mayhem --db {{ _db }} campaign create
|
|
127
|
+
mayhem --db {{ _db }} campaign create "e2e-campaign" --hypothesis "stack survives chaos"
|
|
129
128
|
mayhem --db {{ _db }} campaign list
|
|
130
|
-
@cid=$$(sqlite3 {{ _db }} "SELECT id FROM campaigns ORDER BY rowid DESC LIMIT 1"); \
|
|
129
|
+
@cid=$$(sqlite3 {{ _db }} "SELECT id FROM campaigns WHERE name = 'e2e-campaign' ORDER BY rowid DESC LIMIT 1"); \
|
|
131
130
|
mayhem --db {{ _db }} campaign show "$$cid"; \
|
|
132
131
|
mayhem --db {{ _db }} campaign status "$$cid"; \
|
|
133
132
|
mayhem --db {{ _db }} campaign start "$$cid" || true; \
|
|
134
|
-
mayhem --db {{ _db }} campaign abort "$$cid" || true
|
|
135
|
-
mayhem --db {{ _db }} campaign
|
|
133
|
+
mayhem --db {{ _db }} campaign abort "$$cid" || true
|
|
134
|
+
mayhem --db {{ _db }} campaign create "e2e-delete-campaign"
|
|
135
|
+
@delete_cid=$$(sqlite3 {{ _db }} "SELECT id FROM campaigns WHERE name = 'e2e-delete-campaign' ORDER BY rowid DESC LIMIT 1"); \
|
|
136
|
+
mayhem --db {{ _db }} campaign delete --yes "$$delete_cid"
|
|
136
137
|
@echo "✓ campaign"
|
|
137
138
|
|
|
138
139
|
# ── full round-trip ─────────────────────────────────────────────────────────
|
|
@@ -145,8 +146,8 @@ full: setup
|
|
|
145
146
|
mayhem --db {{ _db }} run {{ _spec }} --compose {{ _compose }}
|
|
146
147
|
mayhem --db {{ _db }} status
|
|
147
148
|
@run_id=$$(sqlite3 {{ _db }} "SELECT id FROM runs ORDER BY rowid DESC LIMIT 1"); \
|
|
148
|
-
mayhem --db {{ _db }} history "$$run_id"
|
|
149
|
-
mayhem --db {{ _db }} recover
|
|
149
|
+
mayhem --db {{ _db }} history "$$run_id"; \
|
|
150
|
+
mayhem --db {{ _db }} recover "$$run_id"
|
|
150
151
|
@echo "✓ full round-trip"
|
|
151
152
|
|
|
152
153
|
# ── stack management ─────────────────────────────────────────────────────────
|
|
@@ -169,7 +170,7 @@ stack-down:
|
|
|
169
170
|
# Run unit tests
|
|
170
171
|
test-unit:
|
|
171
172
|
@echo "=== unit tests ==="
|
|
172
|
-
python3 -m pytest tests/unit/ -v --tb=short
|
|
173
|
+
python3 -m pytest tests/unit/ -n {{ _workers }} --dist loadfile -v --tb=short
|
|
173
174
|
@echo "✓ unit tests"
|
|
174
175
|
|
|
175
176
|
# Run e2e tests (in-process, no containers needed)
|
|
@@ -202,3 +203,12 @@ e2e: stack-up topology toolkit config experiment full campaign test
|
|
|
202
203
|
@echo "╔══════════════════════════════════════════════╗"
|
|
203
204
|
@echo "║ ALL E2E RECIPES PASSED ║"
|
|
204
205
|
@echo "╚══════════════════════════════════════════════╝"
|
|
206
|
+
|
|
207
|
+
# ── changelog ─────────────────────────────────────────────────────────────────
|
|
208
|
+
# Regenerate CHANGELOG.md from git history (git-cliff)
|
|
209
|
+
changelog:
|
|
210
|
+
git-cliff --config cliff.toml -o CHANGELOG.md
|
|
211
|
+
|
|
212
|
+
# Render notes for the current release only (used as the GitHub release body)
|
|
213
|
+
changelog-release:
|
|
214
|
+
git-cliff --config cliff.toml --tag "$$(git describe --tags --abbrev=0)" --strip header
|