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