mayhem-cli 0.8.0__tar.gz → 0.9.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.9.0/.coverage +0 -0
- mayhem_cli-0.9.0/.github/workflows/ci.yml +146 -0
- mayhem_cli-0.9.0/.github/workflows/conformance.yml +34 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/CHANGELOG.md +250 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/Justfile +39 -26
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/PKG-INFO +90 -15
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/README.md +89 -14
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/config.md +116 -14
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/drill-spec.md +142 -9
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/grounding-rules.md +10 -3
- mayhem_cli-0.9.0/docs/observability.md +44 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/policy-and-break-glass.md +6 -3
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/provider-sdk.md +36 -0
- mayhem_cli-0.9.0/docs/reference/cli.md +289 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/reference/fault-catalog.md +10 -0
- mayhem_cli-0.9.0/docs/reference/output-schema.md +76 -0
- mayhem_cli-0.9.0/docs/v0.9.0/01-vision-and-positioning.md +64 -0
- mayhem_cli-0.9.0/docs/v0.9.0/02-feature-brainstorm.md +173 -0
- mayhem_cli-0.9.0/docs/v0.9.0/03-gaps-and-standards.md +106 -0
- mayhem_cli-0.9.0/docs/v0.9.0/04-architecture-and-decisions.md +115 -0
- mayhem_cli-0.9.0/docs/v0.9.0/05-release-roadmap.md +140 -0
- mayhem_cli-0.9.0/docs/v0.9.0/06-core-implementation-plan.md +276 -0
- mayhem_cli-0.9.0/docs/v0.9.0/07-expansion-implementation-plan.md +274 -0
- mayhem_cli-0.9.0/docs/v0.9.0/08-release-readiness.md +98 -0
- mayhem_cli-0.9.0/docs/v0.9.0/09-decision-log.md +65 -0
- mayhem_cli-0.9.0/docs/v0.9.0/10-repository-evidence.md +97 -0
- mayhem_cli-0.9.0/docs/v0.9.0/README.md +38 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/pyproject.toml +10 -4
- mayhem_cli-0.9.0/scripts/verify_release_artifacts.py +91 -0
- mayhem_cli-0.9.0/src/mayhem/__main__.py +8 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/app.py +62 -2
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/campaign.py +239 -3
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/command_registry.py +8 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/dependency.py +32 -1
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/doctor.py +4 -44
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/errors.py +26 -10
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/execution.py +14 -0
- mayhem_cli-0.9.0/src/mayhem/cli/experiment.py +122 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/expert.py +1 -1
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/explore.py +30 -5
- mayhem_cli-0.9.0/src/mayhem/cli/game_day.py +330 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/init.py +2 -2
- mayhem_cli-0.9.0/src/mayhem/cli/inspect.py +526 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/lifecycle.py +585 -89
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/output.py +38 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/render.py +15 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/services.py +217 -16
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/toolkit.py +88 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/topology.py +58 -63
- mayhem_cli-0.9.0/src/mayhem/cli/verify_bundle.py +70 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/workflows.py +1 -1
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/config.py +188 -5
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/controller/cell_runner.py +24 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/controller/executor.py +152 -5
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/controller/planner.py +3 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/controller/preflight.py +58 -17
- mayhem_cli-0.9.0/src/mayhem/domain/admission.py +89 -0
- mayhem_cli-0.9.0/src/mayhem/domain/campaign_checkpoint.py +217 -0
- mayhem_cli-0.9.0/src/mayhem/domain/capability_status.py +117 -0
- mayhem_cli-0.9.0/src/mayhem/domain/coverage_graph.py +260 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/evidence.py +27 -0
- mayhem_cli-0.9.0/src/mayhem/domain/evidence_bundle.py +309 -0
- mayhem_cli-0.9.0/src/mayhem/domain/execution_intent.py +332 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/experiments.py +9 -1
- mayhem_cli-0.9.0/src/mayhem/domain/game_day.py +219 -0
- mayhem_cli-0.9.0/src/mayhem/domain/observations.py +230 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/preflight.py +10 -0
- mayhem_cli-0.9.0/src/mayhem/domain/redaction.py +85 -0
- mayhem_cli-0.9.0/src/mayhem/domain/replay.py +74 -0
- mayhem_cli-0.9.0/src/mayhem/domain/residual_impact.py +175 -0
- mayhem_cli-0.9.0/src/mayhem/domain/runtime_context.py +102 -0
- mayhem_cli-0.9.0/src/mayhem/domain/scenarios.py +345 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/target_profiles.py +83 -50
- mayhem_cli-0.9.0/src/mayhem/infra/campaign_checkpoint_repository.py +75 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/infra/catalog_report.py +110 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/infra/coverage_repository.py +166 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/infra/diagnostics.py +254 -55
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/infra/evidence.py +63 -8
- mayhem_cli-0.9.0/src/mayhem/infra/game_day_repository.py +62 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/infra/migrations.py +112 -0
- mayhem_cli-0.9.0/src/mayhem/infra/replay_repository.py +88 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/infra/report.py +6 -0
- mayhem_cli-0.9.0/src/mayhem/observability/__init__.py +20 -0
- mayhem_cli-0.9.0/src/mayhem/observability/base.py +56 -0
- mayhem_cli-0.9.0/src/mayhem/observability/loki.py +95 -0
- mayhem_cli-0.9.0/src/mayhem/observability/otel.py +72 -0
- mayhem_cli-0.9.0/src/mayhem/observability/prometheus.py +129 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/providers/builtin.py +6 -1
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/providers/loader.py +80 -0
- mayhem_cli-0.9.0/src/mayhem/providers/observation.py +234 -0
- mayhem_cli-0.9.0/src/mayhem/providers/pack.py +195 -0
- mayhem_cli-0.9.0/src/mayhem/providers/permissions.py +122 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/toolkit/tool_runner.py +7 -3
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/topology/providers/kubernetes.py +20 -10
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/conftest.py +37 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/e2e/test_cli_e2e.py +49 -25
- mayhem_cli-0.9.0/tests/integration/test_artifact_secret_sweep.py +117 -0
- mayhem_cli-0.9.0/tests/integration/test_bundle_verifier.py +181 -0
- mayhem_cli-0.9.0/tests/integration/test_campaign_resume.py +210 -0
- mayhem_cli-0.9.0/tests/integration/test_coverage_delta.py +101 -0
- mayhem_cli-0.9.0/tests/integration/test_evidence_degradation.py +52 -0
- mayhem_cli-0.9.0/tests/integration/test_game_day_approval_flow.py +224 -0
- mayhem_cli-0.9.0/tests/integration/test_observability_run.py +100 -0
- mayhem_cli-0.9.0/tests/integration/test_recovery_proof.py +177 -0
- mayhem_cli-0.9.0/tests/integration/test_replay_roundtrip.py +26 -0
- mayhem_cli-0.9.0/tests/integration/test_scenario_plan_replay.py +133 -0
- mayhem_cli-0.9.0/tests/integration/test_slo_success_criteria.py +173 -0
- mayhem_cli-0.9.0/tests/package/test_wheel_smoke.py +78 -0
- mayhem_cli-0.9.0/tests/unit/test_action_outcome_contract.py +39 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_additive_schema.py +4 -0
- mayhem_cli-0.9.0/tests/unit/test_campaign_checkpoint.py +365 -0
- mayhem_cli-0.9.0/tests/unit/test_capability_dashboard.py +145 -0
- mayhem_cli-0.9.0/tests/unit/test_capability_truth.py +89 -0
- mayhem_cli-0.9.0/tests/unit/test_ci_workflow_contract.py +44 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cli.py +40 -2
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cli_active_surface.py +2 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cli_campaign.py +20 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cli_doctor.py +2 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cli_execution.py +6 -0
- mayhem_cli-0.9.0/tests/unit/test_cli_execution_intent.py +1154 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cli_exhaustive_matrix.py +45 -13
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cli_exit_codes.py +3 -1
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_command_inventory.py +3 -1
- mayhem_cli-0.9.0/tests/unit/test_config_target_profiles.py +496 -0
- mayhem_cli-0.9.0/tests/unit/test_coverage_graph.py +372 -0
- mayhem_cli-0.9.0/tests/unit/test_diagnostics_target_profiles.py +360 -0
- mayhem_cli-0.9.0/tests/unit/test_evidence_bundle.py +208 -0
- mayhem_cli-0.9.0/tests/unit/test_execution_intent.py +328 -0
- mayhem_cli-0.9.0/tests/unit/test_executor_admission.py +164 -0
- mayhem_cli-0.9.0/tests/unit/test_expansion_checkpoint.py +335 -0
- mayhem_cli-0.9.0/tests/unit/test_fault_pack_validation.py +230 -0
- mayhem_cli-0.9.0/tests/unit/test_game_day.py +179 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_k8s_cli.py +9 -3
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_k8s_discovery.py +14 -4
- mayhem_cli-0.9.0/tests/unit/test_observability_connectors.py +275 -0
- mayhem_cli-0.9.0/tests/unit/test_observation_contract.py +281 -0
- mayhem_cli-0.9.0/tests/unit/test_provider_permissions.py +126 -0
- mayhem_cli-0.9.0/tests/unit/test_redaction_boundary.py +77 -0
- mayhem_cli-0.9.0/tests/unit/test_release_contract.py +556 -0
- mayhem_cli-0.9.0/tests/unit/test_replay_capsule.py +54 -0
- mayhem_cli-0.9.0/tests/unit/test_replay_cli.py +165 -0
- mayhem_cli-0.9.0/tests/unit/test_residual_impact.py +275 -0
- mayhem_cli-0.9.0/tests/unit/test_runtime_context.py +1286 -0
- mayhem_cli-0.9.0/tests/unit/test_scenario_compiler.py +260 -0
- mayhem_cli-0.9.0/tests/unit/test_target_profiles_config.py +287 -0
- mayhem_cli-0.9.0/tests/unit/test_v090_docs_contract.py +140 -0
- mayhem_cli-0.9.0/tests/unit/test_v090_edge_cases.py +587 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/uv.lock +26 -7
- mayhem_cli-0.8.0/docs/reference/cli.md +0 -110
- mayhem_cli-0.8.0/docs/reference/output-schema.md +0 -47
- mayhem_cli-0.8.0/src/mayhem/cli/experiment.py +0 -26
- mayhem_cli-0.8.0/src/mayhem/cli/inspect.py +0 -192
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/.github/workflows/release.yml +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/.gitignore +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/cliff.toml +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/README.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/adr/adr-m7-1-k8s-executor.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/adr-adr-m7-1-k8s-executor-flip.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/architecture/fault-taxonomy.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/architecture/safety.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/architecture/toolkit.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/compensation.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/fault-catalog/README.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/fault-catalog/reliability-matrix.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/grounding-log.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/k8s-new.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/k8s-plan-1.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/k8s-plan-2.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/m7-k8s-executor-discovery.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/new-plan/00-product-and-cli-roadmap.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/new-plan/01-workflow-command-architecture.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/new-plan/02-guided-onboarding-and-target-profiles.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/new-plan/03-plan-first-execution-and-unified-evidence.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/new-plan/04-output-errors-and-script-compatibility.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/new-plan/05-configuration-policy-and-environment-safety.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/new-plan/06-docker-podman-reliability-slice.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/new-plan/07-first-class-kubernetes-engine.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/new-plan/08-fault-catalog-reliability-matrix.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/new-plan/09-campaigns-coverage-and-explore-loop.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/new-plan/10-diagnostics-recovery-and-reporting.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/new-plan/11-extension-api-and-packaging.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/new-plan/README.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/product/cli-product-direction.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/product/command-architecture.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/reference/experiment-dsl.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/reference/sqlite-schema.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/superpowers/plans/2026-09-24-container-kubernetes-fault-expansion-plan.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/superpowers/plans/2026-09-24-documentation-to-implementation-plan.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/superpowers/specs/2026-09-24-container-kubernetes-fault-expansion-design.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/docs/superpowers/specs/2026-09-24-documentation-to-implementation-design.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/examples/k8s/README.md +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/examples/k8s/kubernetes.yaml +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/examples/k8s/mayhem.yaml +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/examples/providers/test-catalog.json +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/examples/providers/test_provider.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/examples/testCase/data/hello.txt +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/examples/testCase/data/index.html +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/examples/testCase/docker-compose.mayhem.yml +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/examples/testCase/docker-compose.yml +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/examples/testCase/mayhem-safe-docker-podman.yaml +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/examples/testCase/mayhem.yaml +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/examples/testCase/nginx.conf +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/agent/__init__.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/agent/cli.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/agents/__init__.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/agents/capabilities.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/agents/executors.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/agents/impact.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/agents/k8s_control.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/agents/k8s_resolve.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/agents/lease_client.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/agents/probes.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/agents/protocol.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/agents/server.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/agents/sinks.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/agents/transports.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/agents/watchdog.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/__init__.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/commands.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/config_cmd.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/context.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/coverage_cmd.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/exit_codes.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/extend.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/next_cmd.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/renderers.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/resolver.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/cli/style.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/controller/__init__.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/controller/compensation.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/controller/explore_flow.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/controller/janitor.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/controller/k8s_runtime.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/controller/observability_collector.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/controller/observations.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/controller/plan_diff.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/controller/recovery.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/controller/resilience_report.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/controller/resource_manager.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/controller/safety.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/controller/target_selector.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/__init__.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/campaigns.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/cancellation.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/candidates.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/capabilities.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/catalog.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/cell_rules.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/checks.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/common.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/coverage.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/decisions.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/errors.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/events.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/execution_context.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/execution_loci.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/faults.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/identity.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/k8s_adapter.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/leases.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/load_strategy.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/m5_campaign.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/maniac.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/observability.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/outcomes.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/policy.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/provider.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/remote_agent_interface.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/resolution.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/resources.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/risks.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/run_outcome.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/runtime_adapter.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/success.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/target.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/target_selector.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/domain/topology.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/infra/__init__.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/infra/campaign_engine.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/infra/candidate_gates.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/infra/candidate_generator.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/infra/kpi.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/infra/lease_repository.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/infra/maniac.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/infra/migrator.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/infra/project_detection.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/infra/ranking.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/infra/store.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/providers/__init__.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/providers/protocols.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/providers/registry.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/py.typed +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/schemas/output_v1.json +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/spec.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/toolkit/__init__.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/toolkit/fingerprint.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/toolkit/hashing.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/toolkit/manifests/docker.yaml +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/toolkit/manifests/podman.yaml +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/toolkit/manifests/stress-ng.yaml +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/toolkit/manifests/tc-netem.yaml +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/toolkit/manifests/toxiproxy.yaml +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/toolkit/registry.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/topology/__init__.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/topology/providers/__init__.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/topology/providers/adapter_registry.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/topology/providers/base.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/topology/providers/compose.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/topology/providers/docker_adapter.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/topology/providers/docker_runtime.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/topology/providers/k8s_manifest.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/topology/providers/podman_adapter.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/topology/resolve.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/src/mayhem/topology/service.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/e2e/__init__.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/fixtures/cli/commands_show.json +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/fixtures/cli/coverage.json +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/fixtures/cli/doctor.json +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/integration/test_agent_serve.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/integration/test_agent_watchdog_e2e.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/integration/test_m5_e2e.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/integration/test_store.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_accept_criteria.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_agent_capabilities.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_agent_protocol.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_agents.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_campaign_run.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_campaigns.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cancellation.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_candidates.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_capability_matrix.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_capability_registry.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_capability_safety.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cell_rules.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cell_runner.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_check_spec.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cli_config.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cli_contract.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cli_errors.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cli_extend.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cli_init.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cli_output.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cli_renderers.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cli_resolver.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cli_topology.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_cli_user_regressions.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_command_registry.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_compensation.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_config.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_container_fault_matrix.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_coverage.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_coverage_repository.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_diagnostics.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_documentation_consistency.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_domain_properties.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_drill_spec.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_example_specs_yaml.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_execution_context.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_executor.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_executor_drill.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_fault_catalog_all.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_fault_catalog_exhaustive.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_fault_catalog_metadata.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_fault_expansion_catalog.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_fault_expansion_container.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_fault_expansion_kubernetes.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_faults.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_fingerprint.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_fork_atomicity.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_impact_gate.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_janitor.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_k8s_manifest.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_k8s_plan1.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_k8s_plan2.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_k8s_selection.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_kpi.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_kplan1_targets.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_kplan2_topology.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_kplan3_resolver.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_kplan3_runtime.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_kplan5_runtime.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_kplan6_runtime.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_lease_repository.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_leases.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_lifecycle_run_liveness.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_load_strategy.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_m12_step1_catalog.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_m7_k8s.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_m8_operations.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_m9_catalog.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_maniac.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_migrations.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_network_path_model.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_observability.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_observations.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_plan_diff.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_planner.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_policy_explain.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_preflight.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_provider_loader.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_provider_registry.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_ranking.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_recovery.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_report.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_resilience_report.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_resolve.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_resource_conflict_exec.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_resource_manager.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_resources.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_risks.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_run_outcome.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_runtime_adapter.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_runtime_execution_matrix.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_safety.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_selection_modes.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_success.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_target_profiles.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_three_locus.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_tool_runner.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_topology.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_topology_ctr.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_topology_providers.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_watchdog.py +0 -0
- {mayhem_cli-0.8.0 → mayhem_cli-0.9.0}/tests/unit/test_workflow_groups.py +0 -0
|
Binary file
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [v0.9.0, main, master]
|
|
6
|
+
pull_request:
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
concurrency:
|
|
13
|
+
group: ci-${{ github.workflow }}-${{ github.ref }}
|
|
14
|
+
cancel-in-progress: true
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
unit:
|
|
18
|
+
name: unit
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
22
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
23
|
+
with:
|
|
24
|
+
python-version: "3.12"
|
|
25
|
+
- name: Install uv
|
|
26
|
+
run: python -m pip install --quiet uv
|
|
27
|
+
- run: uv sync --group dev
|
|
28
|
+
- run: uv run pytest tests/unit
|
|
29
|
+
|
|
30
|
+
integration:
|
|
31
|
+
name: integration
|
|
32
|
+
runs-on: ubuntu-latest
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
35
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
36
|
+
with:
|
|
37
|
+
python-version: "3.12"
|
|
38
|
+
- name: Install uv
|
|
39
|
+
run: python -m pip install --quiet uv
|
|
40
|
+
- run: uv sync --group dev
|
|
41
|
+
- run: uv run pytest tests/integration
|
|
42
|
+
|
|
43
|
+
e2e:
|
|
44
|
+
name: e2e (in-process)
|
|
45
|
+
runs-on: ubuntu-latest
|
|
46
|
+
steps:
|
|
47
|
+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
48
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
49
|
+
with:
|
|
50
|
+
python-version: "3.12"
|
|
51
|
+
- name: Install uv
|
|
52
|
+
run: python -m pip install --quiet uv
|
|
53
|
+
- run: uv sync --group dev
|
|
54
|
+
- run: uv run pytest tests/e2e
|
|
55
|
+
|
|
56
|
+
schema:
|
|
57
|
+
name: schema
|
|
58
|
+
runs-on: ubuntu-latest
|
|
59
|
+
steps:
|
|
60
|
+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
61
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
62
|
+
with:
|
|
63
|
+
python-version: "3.12"
|
|
64
|
+
- run: python -c "import json; json.load(open('src/mayhem/schemas/output_v1.json'))"
|
|
65
|
+
|
|
66
|
+
ruff-fatal:
|
|
67
|
+
name: ruff (fatal subset)
|
|
68
|
+
runs-on: ubuntu-latest
|
|
69
|
+
steps:
|
|
70
|
+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
71
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
72
|
+
with:
|
|
73
|
+
python-version: "3.12"
|
|
74
|
+
- name: Install uv
|
|
75
|
+
run: python -m pip install --quiet uv
|
|
76
|
+
- run: uv sync --group dev
|
|
77
|
+
- run: uv run ruff check --select E9,F63,F7,F82,F821,F811 src/ tests/
|
|
78
|
+
|
|
79
|
+
package-build:
|
|
80
|
+
name: package build
|
|
81
|
+
runs-on: ubuntu-latest
|
|
82
|
+
needs: [unit, integration, e2e, ruff-fatal]
|
|
83
|
+
steps:
|
|
84
|
+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
85
|
+
with:
|
|
86
|
+
fetch-depth: 0
|
|
87
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
88
|
+
with:
|
|
89
|
+
python-version: "3.12"
|
|
90
|
+
- name: Install build tooling
|
|
91
|
+
run: python -m pip install --upgrade build
|
|
92
|
+
- run: python -m build --sdist --wheel
|
|
93
|
+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
94
|
+
with:
|
|
95
|
+
name: dist
|
|
96
|
+
path: dist/
|
|
97
|
+
if-no-files-found: error
|
|
98
|
+
|
|
99
|
+
wheel-smoke:
|
|
100
|
+
name: wheel install smoke
|
|
101
|
+
runs-on: ubuntu-latest
|
|
102
|
+
needs: package-build
|
|
103
|
+
steps:
|
|
104
|
+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
105
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
106
|
+
with:
|
|
107
|
+
python-version: "3.12"
|
|
108
|
+
- name: Install uv
|
|
109
|
+
run: python -m pip install --quiet uv
|
|
110
|
+
- uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
|
|
111
|
+
with:
|
|
112
|
+
name: dist
|
|
113
|
+
path: dist
|
|
114
|
+
- name: Run wheel smoke test
|
|
115
|
+
run: MAYHEM_PACKAGE_SMOKE=1 uv run pytest tests/package -q -rs
|
|
116
|
+
|
|
117
|
+
verify-artifacts:
|
|
118
|
+
name: verify release artifacts
|
|
119
|
+
runs-on: ubuntu-latest
|
|
120
|
+
needs: package-build
|
|
121
|
+
steps:
|
|
122
|
+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
123
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
124
|
+
with:
|
|
125
|
+
python-version: "3.12"
|
|
126
|
+
- uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
|
|
127
|
+
with:
|
|
128
|
+
name: dist
|
|
129
|
+
path: dist
|
|
130
|
+
- run: python scripts/verify_release_artifacts.py dist
|
|
131
|
+
|
|
132
|
+
advisory:
|
|
133
|
+
name: advisory quality checks
|
|
134
|
+
runs-on: ubuntu-latest
|
|
135
|
+
continue-on-error: true
|
|
136
|
+
steps:
|
|
137
|
+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
138
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
139
|
+
with:
|
|
140
|
+
python-version: "3.12"
|
|
141
|
+
- name: Install uv
|
|
142
|
+
run: python -m pip install --quiet uv
|
|
143
|
+
- run: uv sync --group dev
|
|
144
|
+
- run: uv run ruff check src/ tests/
|
|
145
|
+
- run: uv run mypy src/mayhem
|
|
146
|
+
- run: uv run lint-imports
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Live Conformance
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
permissions:
|
|
7
|
+
contents: read
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
live-conformance:
|
|
11
|
+
name: live conformance (manual)
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
if: github.event_name == 'workflow_dispatch'
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
16
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
17
|
+
with:
|
|
18
|
+
python-version: "3.12"
|
|
19
|
+
- name: Install uv
|
|
20
|
+
run: python -m pip install --quiet uv
|
|
21
|
+
- run: uv sync --group dev
|
|
22
|
+
- name: Record conformance environment
|
|
23
|
+
run: |
|
|
24
|
+
date -u +%Y-%m-%dT%H:%M:%SZ > conformance-environment.txt
|
|
25
|
+
uname -a >> conformance-environment.txt
|
|
26
|
+
docker version --format '{{.Server.Version}}' >> conformance-environment.txt 2>&1 || true
|
|
27
|
+
kubectl version -o json >> conformance-environment.txt 2>&1 || true
|
|
28
|
+
- name: Run unit conformance profile
|
|
29
|
+
run: uv run pytest tests/unit -m nightly -q
|
|
30
|
+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
31
|
+
with:
|
|
32
|
+
name: conformance-environment
|
|
33
|
+
path: conformance-environment.txt
|
|
34
|
+
if-no-files-found: error
|
|
@@ -7,6 +7,256 @@ This changelog is generated from the project's git history by
|
|
|
7
7
|
**drill phase** that produced them (Explore / Expert / Coverage / Next) and
|
|
8
8
|
by conventional-commit type — see the phase map below.
|
|
9
9
|
|
|
10
|
+
## [unreleased]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### 📚 Documentation
|
|
15
|
+
|
|
16
|
+
- Add v0.9.0 roadmap and implementation plans
|
|
17
|
+
|
|
18
|
+
- Establish the v0.9.0 release truth baseline: checked command inventory, install
|
|
19
|
+
dependency contract, version metadata, and Justfile recipe paths
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## 0.8.0 - 2026-09-25
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### 🚀 Features
|
|
27
|
+
|
|
28
|
+
- Kubernetes targeting system
|
|
29
|
+
|
|
30
|
+
- Refined target.py
|
|
31
|
+
|
|
32
|
+
- Kube topology structure
|
|
33
|
+
|
|
34
|
+
- Kube topology for cli
|
|
35
|
+
|
|
36
|
+
- **k8s**: K-plan-3 container-level signal execution
|
|
37
|
+
|
|
38
|
+
- Update executors.py
|
|
39
|
+
|
|
40
|
+
- Update k8s_resolve.py
|
|
41
|
+
|
|
42
|
+
- Update lease_client.py
|
|
43
|
+
|
|
44
|
+
- Update campaign.py
|
|
45
|
+
|
|
46
|
+
- Update lifecycle.py
|
|
47
|
+
|
|
48
|
+
- Update services.py
|
|
49
|
+
|
|
50
|
+
- Update config.py
|
|
51
|
+
|
|
52
|
+
- Update cell_runner.py
|
|
53
|
+
|
|
54
|
+
- Update executor.py
|
|
55
|
+
|
|
56
|
+
- Update k8s_runtime.py
|
|
57
|
+
|
|
58
|
+
- Update safety.py
|
|
59
|
+
|
|
60
|
+
- Update leases.py
|
|
61
|
+
|
|
62
|
+
- Update resolution.py
|
|
63
|
+
|
|
64
|
+
- Update lease_repository.py
|
|
65
|
+
|
|
66
|
+
- Extend executor agents with K8s runtime support
|
|
67
|
+
|
|
68
|
+
- Add K8s control plane agent
|
|
69
|
+
|
|
70
|
+
- Update CLI app for K8s executor integration
|
|
71
|
+
|
|
72
|
+
- Update coverage command for K8s runtime
|
|
73
|
+
|
|
74
|
+
- Update explore command for K8s runtime
|
|
75
|
+
|
|
76
|
+
- Update next command for K8s runtime
|
|
77
|
+
|
|
78
|
+
- Update services command for K8s runtime
|
|
79
|
+
|
|
80
|
+
- Update toolkit for K8s runtime
|
|
81
|
+
|
|
82
|
+
- Update topology for K8s runtime
|
|
83
|
+
|
|
84
|
+
- Update controller executor for K8s runtime
|
|
85
|
+
|
|
86
|
+
- Extend K8s runtime with execution support
|
|
87
|
+
|
|
88
|
+
- Extend fault catalog with K8s faults
|
|
89
|
+
|
|
90
|
+
- Update K8s example spec
|
|
91
|
+
|
|
92
|
+
- Update executor agents
|
|
93
|
+
|
|
94
|
+
- Update dependencies for K8s runtime
|
|
95
|
+
|
|
96
|
+
- Update K8s control agent
|
|
97
|
+
|
|
98
|
+
- Update lifecycle CLI for K8s
|
|
99
|
+
|
|
100
|
+
- Update services CLI for K8s
|
|
101
|
+
|
|
102
|
+
- Update K8s runtime controller
|
|
103
|
+
|
|
104
|
+
- Update planner for K8s runtime
|
|
105
|
+
|
|
106
|
+
- Extend fault catalog
|
|
107
|
+
|
|
108
|
+
- Update common domain for K8s
|
|
109
|
+
|
|
110
|
+
- Add K8s adapter domain
|
|
111
|
+
|
|
112
|
+
- Update maniac domain for K8s
|
|
113
|
+
|
|
114
|
+
- Add runtime adapter for K8s
|
|
115
|
+
|
|
116
|
+
- Update target selector for K8s
|
|
117
|
+
|
|
118
|
+
- Add K8s manifest topology provider
|
|
119
|
+
|
|
120
|
+
- Add policy, evidence, provider, and schema foundations
|
|
121
|
+
|
|
122
|
+
- Expand agent and controller execution flows
|
|
123
|
+
|
|
124
|
+
- Expand CLI commands and output handling
|
|
125
|
+
|
|
126
|
+
- Finalize active CLI workflow surface
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
### 🐛 Bug Fixes
|
|
131
|
+
|
|
132
|
+
- Release.yml
|
|
133
|
+
|
|
134
|
+
- Initialize slotted CLI exceptions safely
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
### 💼 Other
|
|
139
|
+
|
|
140
|
+
- Update docs/adr-adr-m7-1-k8s-executor-flip.md
|
|
141
|
+
|
|
142
|
+
- Delete docs/features.md
|
|
143
|
+
|
|
144
|
+
- Delete docs/k-plan-1.md
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
### 🚜 Refactor
|
|
149
|
+
|
|
150
|
+
- Format and ruff-fix
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
### 📚 Documentation
|
|
155
|
+
|
|
156
|
+
- Enhance readme file, removed dev version stuff
|
|
157
|
+
|
|
158
|
+
- Kubernetes plans/spec/adrs
|
|
159
|
+
|
|
160
|
+
- Update README.md
|
|
161
|
+
|
|
162
|
+
- Update adr-m7-1-k8s-executor.md
|
|
163
|
+
|
|
164
|
+
- Update config.md
|
|
165
|
+
|
|
166
|
+
- Update drill-spec.md
|
|
167
|
+
|
|
168
|
+
- Remove k-plan-2.md
|
|
169
|
+
|
|
170
|
+
- Remove k-plan-3-implementation-subplans.md
|
|
171
|
+
|
|
172
|
+
- Remove k-plan-3-sub-plans-k8s-executor-flip.md
|
|
173
|
+
|
|
174
|
+
- Remove k-plan-3-sub-plans.md
|
|
175
|
+
|
|
176
|
+
- Remove k-plan-3.md
|
|
177
|
+
|
|
178
|
+
- Remove k-plan-4-sub-plans.md
|
|
179
|
+
|
|
180
|
+
- Remove k-plan-4.md
|
|
181
|
+
|
|
182
|
+
- Remove k-plan-5.md
|
|
183
|
+
|
|
184
|
+
- Add k8s-plan-1.md
|
|
185
|
+
|
|
186
|
+
- Add k8s-plan-2.md
|
|
187
|
+
|
|
188
|
+
- Update architecture and reference documentation
|
|
189
|
+
|
|
190
|
+
- Clarify the default installation bundle
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
### 🎨 Styling
|
|
195
|
+
|
|
196
|
+
- Remove obsolete noqa suppressions
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
### 🧪 Testing
|
|
201
|
+
|
|
202
|
+
- Add tests for kube
|
|
203
|
+
|
|
204
|
+
- Update test_kplan3_runtime.py
|
|
205
|
+
|
|
206
|
+
- Update test_m7_k8s.py
|
|
207
|
+
|
|
208
|
+
- Update test_safety.py
|
|
209
|
+
|
|
210
|
+
- Add test_kplan5_runtime.py
|
|
211
|
+
|
|
212
|
+
- Update CLI tests for K8s runtime
|
|
213
|
+
|
|
214
|
+
- Update container fault matrix tests for K8s
|
|
215
|
+
|
|
216
|
+
- Update example specs YAML tests for K8s
|
|
217
|
+
|
|
218
|
+
- Update fault catalog tests for K8s faults
|
|
219
|
+
|
|
220
|
+
- Update K8s plan-3 runtime tests
|
|
221
|
+
|
|
222
|
+
- Update K8s plan-5 runtime tests
|
|
223
|
+
|
|
224
|
+
- Add K8s plan-6 runtime tests
|
|
225
|
+
|
|
226
|
+
- Update CLI tests for K8s runtime
|
|
227
|
+
|
|
228
|
+
- Update K8s plan-6 runtime tests
|
|
229
|
+
|
|
230
|
+
- Add K8s manifest topology tests
|
|
231
|
+
|
|
232
|
+
- Expand runtime, CLI, provider, and policy coverage
|
|
233
|
+
|
|
234
|
+
- Add exhaustive CLI and runtime coverage
|
|
235
|
+
|
|
236
|
+
- Pin compose topology discovery runtime
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
### ⚙️ Miscellaneous Tasks
|
|
241
|
+
|
|
242
|
+
- Update development tooling and package metadata
|
|
243
|
+
|
|
244
|
+
- Add provider and container examples
|
|
245
|
+
|
|
246
|
+
- **release**: Bundle Kubernetes and parallelize unit tests
|
|
247
|
+
|
|
248
|
+
- Remove broken architecture gate from release
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
## 0.6.2 - 2026-09-11
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
### 🐛 Bug Fixes
|
|
256
|
+
|
|
257
|
+
- ApiVersion was not added to tests
|
|
258
|
+
|
|
259
|
+
|
|
10
260
|
## 0.6.0 - 2026-09-11
|
|
11
261
|
|
|
12
262
|
|
|
@@ -27,33 +27,33 @@ setup:
|
|
|
27
27
|
# Discover topology from compose + live runtime (containers, processes, services)
|
|
28
28
|
topology:
|
|
29
29
|
@echo "=== topology discover ==="
|
|
30
|
-
mayhem topology
|
|
30
|
+
mayhem discover topology --compose {{ _compose }} | python3 -m json.tool > /dev/null
|
|
31
31
|
@echo "✓ topology discover"
|
|
32
32
|
|
|
33
33
|
# Topology with prefix shorthand
|
|
34
34
|
topology-prefix:
|
|
35
35
|
@echo "=== topology prefix ==="
|
|
36
|
-
mayhem
|
|
36
|
+
mayhem disc topo --compose {{ _compose }} | python3 -m json.tool > /dev/null
|
|
37
37
|
@echo "✓ topology prefix"
|
|
38
38
|
|
|
39
39
|
# ── toolkit ──────────────────────────────────────────────────────────────────
|
|
40
40
|
|
|
41
|
-
# List available faults and capabilities
|
|
41
|
+
# List available faults and capabilities (`mayhem discover`)
|
|
42
42
|
toolkit:
|
|
43
43
|
@echo "=== toolkit ==="
|
|
44
|
-
mayhem
|
|
45
|
-
mayhem
|
|
44
|
+
mayhem discover faults
|
|
45
|
+
mayhem discover capabilities --json | python3 -m json.tool > /dev/null
|
|
46
46
|
@echo "✓ toolkit"
|
|
47
47
|
|
|
48
48
|
# ── config ───────────────────────────────────────────────────────────────────
|
|
49
49
|
|
|
50
|
-
# Show and validate effective config (default + testCase)
|
|
50
|
+
# Show and validate effective config (default + testCase) via `mayhem prepare config`
|
|
51
51
|
config:
|
|
52
52
|
@echo "=== config ==="
|
|
53
|
-
mayhem config show --json | python3 -m json.tool > /dev/null
|
|
54
|
-
mayhem --config {{ _config }} config show --json | python3 -m json.tool > /dev/null
|
|
55
|
-
mayhem config validate
|
|
56
|
-
mayhem --config {{ _config }} config validate
|
|
53
|
+
mayhem prepare config show --json | python3 -m json.tool > /dev/null
|
|
54
|
+
mayhem --config {{ _config }} prepare config show --json | python3 -m json.tool > /dev/null
|
|
55
|
+
mayhem prepare config validate
|
|
56
|
+
mayhem --config {{ _config }} prepare config validate
|
|
57
57
|
@echo "✓ config"
|
|
58
58
|
|
|
59
59
|
# ── experiment ───────────────────────────────────────────────────────────────
|
|
@@ -67,38 +67,39 @@ experiment:
|
|
|
67
67
|
|
|
68
68
|
# ── lifecycle: validate → plan → run → status → history → recover ────────────
|
|
69
69
|
|
|
70
|
-
# Validate spec against live topology
|
|
70
|
+
# Validate spec against live topology (`mayhem prepare validate`)
|
|
71
71
|
validate: setup
|
|
72
72
|
@echo "=== validate ==="
|
|
73
|
-
mayhem --db {{ _db }} validate {{ _spec }} --compose {{ _compose }}
|
|
73
|
+
mayhem --db {{ _db }} prepare validate {{ _spec }} --compose {{ _compose }}
|
|
74
74
|
@echo "✓ validate"
|
|
75
75
|
|
|
76
|
-
# Plan the experiment
|
|
76
|
+
# Plan the experiment (`mayhem prepare plan`)
|
|
77
77
|
plan:
|
|
78
78
|
@echo "=== plan ==="
|
|
79
|
-
mayhem plan {{ _spec }} --compose {{ _compose }}
|
|
79
|
+
mayhem prepare plan {{ _spec }} --compose {{ _compose }}
|
|
80
80
|
@echo "✓ plan"
|
|
81
81
|
|
|
82
82
|
# Full run: inject faults, record events, compensate
|
|
83
83
|
run: setup
|
|
84
84
|
@echo "=== run ==="
|
|
85
|
-
mayhem --db {{ _db }} run {{ _spec }} --compose {{ _compose }}
|
|
85
|
+
mayhem --db {{ _db }} run {{ _spec }} --compose {{ _compose }} --execute
|
|
86
86
|
@echo "✓ run"
|
|
87
87
|
|
|
88
|
-
# Show run status (
|
|
88
|
+
# Show run status (text + JSON) via `mayhem inspect runs`
|
|
89
89
|
status: setup
|
|
90
90
|
@echo "=== status ==="
|
|
91
|
-
mayhem --db {{ _db }}
|
|
91
|
+
mayhem --db {{ _db }} inspect runs
|
|
92
|
+
mayhem --db {{ _db }} inspect runs --json | python3 -m json.tool > /dev/null
|
|
92
93
|
@echo "✓ status"
|
|
93
94
|
|
|
94
|
-
# Show detailed run history (
|
|
95
|
+
# Show detailed run history (text + JSON) via `mayhem inspect history`
|
|
95
96
|
history:
|
|
96
97
|
@echo "=== history ==="
|
|
97
98
|
@run_id=$$(sqlite3 {{ _db }} "SELECT id FROM runs ORDER BY rowid DESC LIMIT 1" 2>/dev/null || echo ""); \
|
|
98
99
|
if [ -z "$$run_id" ]; then \
|
|
99
100
|
echo "⚠ no runs in DB — skipping history"; \
|
|
100
101
|
else \
|
|
101
|
-
mayhem --db {{ _db }} history "$$run_id"; \
|
|
102
|
+
mayhem --db {{ _db }} inspect history "$$run_id"; \
|
|
102
103
|
echo "✓ history"; \
|
|
103
104
|
fi
|
|
104
105
|
|
|
@@ -109,7 +110,7 @@ recover:
|
|
|
109
110
|
if [ -z "$$run_id" ]; then \
|
|
110
111
|
echo "⚠ no runs in DB — skipping recover"; \
|
|
111
112
|
else \
|
|
112
|
-
mayhem --db {{ _db }} recover "$$run_id"; \
|
|
113
|
+
mayhem --db {{ _db }} recover execute "$$run_id"; \
|
|
113
114
|
fi
|
|
114
115
|
@echo "✓ recover"
|
|
115
116
|
|
|
@@ -141,13 +142,13 @@ campaign: setup
|
|
|
141
142
|
# Full lifecycle: validate → plan → run → status → history → recover
|
|
142
143
|
full: setup
|
|
143
144
|
@echo "=== full round-trip ==="
|
|
144
|
-
mayhem --db {{ _db }} validate {{ _spec }} --compose {{ _compose }}
|
|
145
|
-
mayhem --db {{ _db }} plan {{ _spec }} --compose {{ _compose }}
|
|
146
|
-
mayhem --db {{ _db }} run {{ _spec }} --compose {{ _compose }}
|
|
147
|
-
mayhem --db {{ _db }}
|
|
145
|
+
mayhem --db {{ _db }} prepare validate {{ _spec }} --compose {{ _compose }}
|
|
146
|
+
mayhem --db {{ _db }} prepare plan {{ _spec }} --compose {{ _compose }}
|
|
147
|
+
mayhem --db {{ _db }} run {{ _spec }} --compose {{ _compose }} --execute
|
|
148
|
+
mayhem --db {{ _db }} inspect runs
|
|
148
149
|
@run_id=$$(sqlite3 {{ _db }} "SELECT id FROM runs ORDER BY rowid DESC LIMIT 1"); \
|
|
149
|
-
mayhem --db {{ _db }} history "$$run_id"; \
|
|
150
|
-
mayhem --db {{ _db }} recover "$$run_id"
|
|
150
|
+
mayhem --db {{ _db }} inspect history "$$run_id"; \
|
|
151
|
+
mayhem --db {{ _db }} recover execute "$$run_id"
|
|
151
152
|
@echo "✓ full round-trip"
|
|
152
153
|
|
|
153
154
|
# ── stack management ─────────────────────────────────────────────────────────
|
|
@@ -191,6 +192,18 @@ lint:
|
|
|
191
192
|
ruff check src/ tests/
|
|
192
193
|
@echo "✓ lint"
|
|
193
194
|
|
|
195
|
+
# Check the release truth baseline (docs/Justfile/packaging vs. the source)
|
|
196
|
+
contract:
|
|
197
|
+
@echo "=== release contract ==="
|
|
198
|
+
python3 -m pytest tests/unit/test_release_contract.py -v --tb=short
|
|
199
|
+
@echo "✓ release contract"
|
|
200
|
+
|
|
201
|
+
# Build the sdist and wheel
|
|
202
|
+
build:
|
|
203
|
+
@echo "=== build ==="
|
|
204
|
+
python3 -m build --sdist --wheel
|
|
205
|
+
@echo "✓ build"
|
|
206
|
+
|
|
194
207
|
# ── aggregate targets ────────────────────────────────────────────────────────
|
|
195
208
|
|
|
196
209
|
# Quick smoke: topology + toolkit + config + experiment + validate + plan
|