LICENSE
README.md
pyproject.toml
src/devopsmind/__init__.py
src/devopsmind/__main__.py
src/devopsmind/auth_recovery.py
src/devopsmind/badges.py
src/devopsmind/challenge_resolver.py
src/devopsmind/cli.py
src/devopsmind/cloud_restore.py
src/devopsmind/constants.py
src/devopsmind/describe.py
src/devopsmind/doctor.py
src/devopsmind/engine.py
src/devopsmind/entrypoint.py
src/devopsmind/first_run.py
src/devopsmind/help.py
src/devopsmind/hint.py
src/devopsmind/introduce.py
src/devopsmind/leaderboard.py
src/devopsmind/list.py
src/devopsmind/mode.py
src/devopsmind/play.py
src/devopsmind/profiles.py
src/devopsmind/progress.py
src/devopsmind/remote.py
src/devopsmind/signer.py
src/devopsmind/snapshot.py
src/devopsmind/stacks.py
src/devopsmind/state.py
src/devopsmind/state_normalizer.py
src/devopsmind/stats.py
src/devopsmind/submit.py
src/devopsmind/sync.py
src/devopsmind/telemetry.py
src/devopsmind/ui.py
src/devopsmind/ui_icons.py
src/devopsmind/update_check.py
src/devopsmind/update_notify.py
src/devopsmind/utils.py
src/devopsmind/validator.py
src/devopsmind.egg-info/PKG-INFO
src/devopsmind.egg-info/SOURCES.txt
src/devopsmind.egg-info/dependency_links.txt
src/devopsmind.egg-info/entry_points.txt
src/devopsmind.egg-info/requires.txt
src/devopsmind.egg-info/top_level.txt
src/devopsmind/achievements/__init__.py
src/devopsmind/achievements/challenges.yaml
src/devopsmind/achievements/difficulty.yaml
src/devopsmind/achievements/rank.yaml
src/devopsmind/achievements/schema.py
src/devopsmind/achievements/secret.yaml
src/devopsmind/achievements/skills.yaml
src/devopsmind/achievements/stacks.yaml
src/devopsmind/challenges/Ansible/Easy/basic_playbook/challenge.yaml
src/devopsmind/challenges/Ansible/Easy/basic_playbook/description.md
src/devopsmind/challenges/Ansible/Easy/basic_playbook/validator.py
src/devopsmind/challenges/Ansible/Easy/basic_playbook/__pycache__/validator.cpython-312.pyc
src/devopsmind/challenges/Ansible/Expert/conditional_handlers/challenge.yaml
src/devopsmind/challenges/Ansible/Expert/conditional_handlers/description.md
src/devopsmind/challenges/Ansible/Expert/conditional_handlers/validator.py
src/devopsmind/challenges/Ansible/Hard/user_dir/challenge.yaml
src/devopsmind/challenges/Ansible/Hard/user_dir/description.md
src/devopsmind/challenges/Ansible/Hard/user_dir/validator.py
src/devopsmind/challenges/Ansible/Master/role_structure_vars/challenge.yaml
src/devopsmind/challenges/Ansible/Master/role_structure_vars/description.md
src/devopsmind/challenges/Ansible/Master/role_structure_vars/validator.py
src/devopsmind/challenges/Ansible/Medium/pkg_file/challenge.yaml
src/devopsmind/challenges/Ansible/Medium/pkg_file/description.md
src/devopsmind/challenges/Ansible/Medium/pkg_file/validator.py
src/devopsmind/challenges/Ansible/Medium/pkg_file/__pycache__/validator.cpython-312.pyc
src/devopsmind/challenges/Bash/Easy/easy_echo/challenge.yaml
src/devopsmind/challenges/Bash/Easy/easy_echo/description.md
src/devopsmind/challenges/Bash/Easy/easy_echo/validator.py
src/devopsmind/challenges/Bash/Easy/easy_echo/__pycache__/validator.cpython-312.pyc
src/devopsmind/challenges/Bash/Expert/pipeline_builder/challenge.yaml
src/devopsmind/challenges/Bash/Expert/pipeline_builder/description.md
src/devopsmind/challenges/Bash/Expert/pipeline_builder/numbers.txt
src/devopsmind/challenges/Bash/Expert/pipeline_builder/validator.py
src/devopsmind/challenges/Bash/Hard/dir_backup/challenge.yaml
src/devopsmind/challenges/Bash/Hard/dir_backup/description.md
src/devopsmind/challenges/Bash/Hard/dir_backup/validator.py
src/devopsmind/challenges/Bash/Hard/dir_backup/data/sample1.txt
src/devopsmind/challenges/Bash/Hard/dir_backup/data/sample2.txt
src/devopsmind/challenges/Bash/Master/log_analyzer/challenge.yaml
src/devopsmind/challenges/Bash/Master/log_analyzer/description.md
src/devopsmind/challenges/Bash/Master/log_analyzer/system.log
src/devopsmind/challenges/Bash/Master/log_analyzer/validator.py
src/devopsmind/challenges/Bash/Medium/proc_count/challenge.yaml
src/devopsmind/challenges/Bash/Medium/proc_count/description.md
src/devopsmind/challenges/Bash/Medium/proc_count/validator.py
src/devopsmind/challenges/Docker/Easy/basic_dockerfile/challenge.yaml
src/devopsmind/challenges/Docker/Easy/basic_dockerfile/description.md
src/devopsmind/challenges/Docker/Easy/basic_dockerfile/validator.py
src/devopsmind/challenges/Docker/Expert/secure_multistage/challenge.yaml
src/devopsmind/challenges/Docker/Expert/secure_multistage/description.md
src/devopsmind/challenges/Docker/Expert/secure_multistage/validator.py
src/devopsmind/challenges/Docker/Expert/secure_multistage/__pycache__/validator.cpython-312.pyc
src/devopsmind/challenges/Docker/Hard/multistage/app.py
src/devopsmind/challenges/Docker/Hard/multistage/challenge.yaml
src/devopsmind/challenges/Docker/Hard/multistage/description.md
src/devopsmind/challenges/Docker/Hard/multistage/requirements.txt
src/devopsmind/challenges/Docker/Hard/multistage/validator.py
src/devopsmind/challenges/Docker/Master/optimized_dockerfile/challenge.yaml
src/devopsmind/challenges/Docker/Master/optimized_dockerfile/description.md
src/devopsmind/challenges/Docker/Master/optimized_dockerfile/validator.py
src/devopsmind/challenges/Docker/Medium/copy_run/app.py
src/devopsmind/challenges/Docker/Medium/copy_run/challenge.yaml
src/devopsmind/challenges/Docker/Medium/copy_run/description.md
src/devopsmind/challenges/Docker/Medium/copy_run/validator.py
src/devopsmind/challenges/Git/Easy/init_commit/challenge.yaml
src/devopsmind/challenges/Git/Easy/init_commit/description.md
src/devopsmind/challenges/Git/Easy/init_commit/validator.py
src/devopsmind/challenges/Git/Easy/init_commit/__pycache__/validator.cpython-312.pyc
src/devopsmind/challenges/Git/Expert/bisect_bug_hunt/challenge.yaml
src/devopsmind/challenges/Git/Expert/bisect_bug_hunt/description.md
src/devopsmind/challenges/Git/Expert/bisect_bug_hunt/validator.py
src/devopsmind/challenges/Git/Expert/bisect_bug_hunt/seed/seed.py
src/devopsmind/challenges/Git/Hard/squash_merge/challenge.yaml
src/devopsmind/challenges/Git/Hard/squash_merge/description.md
src/devopsmind/challenges/Git/Hard/squash_merge/validator.py
src/devopsmind/challenges/Git/Master/clean_history_interactive/challenge.yaml
src/devopsmind/challenges/Git/Master/clean_history_interactive/description.md
src/devopsmind/challenges/Git/Master/clean_history_interactive/validator.py
src/devopsmind/challenges/Git/Master/clean_history_interactive/seed/seed.py
src/devopsmind/challenges/Git/Medium/feature_rebase/challenge.yaml
src/devopsmind/challenges/Git/Medium/feature_rebase/description.md
src/devopsmind/challenges/Git/Medium/feature_rebase/validator.py
src/devopsmind/challenges/Helm/Easy/basic_chart/challenge.yaml
src/devopsmind/challenges/Helm/Easy/basic_chart/description.md
src/devopsmind/challenges/Helm/Easy/basic_chart/validator.py
src/devopsmind/challenges/Helm/Expert/conditional_resources/challenge.yaml
src/devopsmind/challenges/Helm/Expert/conditional_resources/description.md
src/devopsmind/challenges/Helm/Expert/conditional_resources/validator.py
src/devopsmind/challenges/Helm/Hard/configmap_integrate/challenge.yaml
src/devopsmind/challenges/Helm/Hard/configmap_integrate/description.md
src/devopsmind/challenges/Helm/Hard/configmap_integrate/validator.py
src/devopsmind/challenges/Helm/Master/values_driven_chart/challenge.yaml
src/devopsmind/challenges/Helm/Master/values_driven_chart/description.md
src/devopsmind/challenges/Helm/Master/values_driven_chart/validator.py
src/devopsmind/challenges/Helm/Medium/values_template/challenge.yaml
src/devopsmind/challenges/Helm/Medium/values_template/description.md
src/devopsmind/challenges/Helm/Medium/values_template/validator.py
src/devopsmind/challenges/K8s/Easy/basic_pod/challenge.yaml
src/devopsmind/challenges/K8s/Easy/basic_pod/description.md
src/devopsmind/challenges/K8s/Easy/basic_pod/validator.py
src/devopsmind/challenges/K8s/Expert/secure_pod_design/challenge.yaml
src/devopsmind/challenges/K8s/Expert/secure_pod_design/description.md
src/devopsmind/challenges/K8s/Expert/secure_pod_design/validator.py
src/devopsmind/challenges/K8s/Hard/service_deploy/challenge.yaml
src/devopsmind/challenges/K8s/Hard/service_deploy/description.md
src/devopsmind/challenges/K8s/Hard/service_deploy/validator.py
src/devopsmind/challenges/K8s/Master/deployment_with_resources/challenge.yaml
src/devopsmind/challenges/K8s/Master/deployment_with_resources/description.md
src/devopsmind/challenges/K8s/Master/deployment_with_resources/validator.py
src/devopsmind/challenges/K8s/Medium/deployment/challenge.yaml
src/devopsmind/challenges/K8s/Medium/deployment/description.md
src/devopsmind/challenges/K8s/Medium/deployment/validator.py
src/devopsmind/challenges/Linux/Easy/basic_fs/challenge.yaml
src/devopsmind/challenges/Linux/Easy/basic_fs/description.md
src/devopsmind/challenges/Linux/Easy/basic_fs/validator.py
src/devopsmind/challenges/Linux/Easy/basic_fs/__pycache__/validator.cpython-312.pyc
src/devopsmind/challenges/Linux/Expert/safe_cleanup_simulation/challenge.yaml
src/devopsmind/challenges/Linux/Expert/safe_cleanup_simulation/description.md
src/devopsmind/challenges/Linux/Expert/safe_cleanup_simulation/validator.py
src/devopsmind/challenges/Linux/Hard/error_extract/app.log
src/devopsmind/challenges/Linux/Hard/error_extract/challenge.yaml
src/devopsmind/challenges/Linux/Hard/error_extract/description.md
src/devopsmind/challenges/Linux/Hard/error_extract/validator.py
src/devopsmind/challenges/Linux/Master/log_metrics_pipeline/access.log
src/devopsmind/challenges/Linux/Master/log_metrics_pipeline/challenge.yaml
src/devopsmind/challenges/Linux/Master/log_metrics_pipeline/description.md
src/devopsmind/challenges/Linux/Master/log_metrics_pipeline/validator.py
src/devopsmind/challenges/Linux/Medium/permissions/challenge.yaml
src/devopsmind/challenges/Linux/Medium/permissions/description.md
src/devopsmind/challenges/Linux/Medium/permissions/validator.py
src/devopsmind/challenges/Networking/Easy/open_ports/challenge.yaml
src/devopsmind/challenges/Networking/Easy/open_ports/description.md
src/devopsmind/challenges/Networking/Easy/open_ports/validator.py
src/devopsmind/challenges/Networking/Expert/network_incident_timeline/app.log
src/devopsmind/challenges/Networking/Expert/network_incident_timeline/challenge.yaml
src/devopsmind/challenges/Networking/Expert/network_incident_timeline/description.md
src/devopsmind/challenges/Networking/Expert/network_incident_timeline/dns.log
src/devopsmind/challenges/Networking/Expert/network_incident_timeline/firewall.log
src/devopsmind/challenges/Networking/Expert/network_incident_timeline/validator.py
src/devopsmind/challenges/Networking/Hard/firewall_http/challenge.yaml
src/devopsmind/challenges/Networking/Hard/firewall_http/description.md
src/devopsmind/challenges/Networking/Hard/firewall_http/iptables_rules.txt
src/devopsmind/challenges/Networking/Hard/firewall_http/ufw_status.txt
src/devopsmind/challenges/Networking/Hard/firewall_http/validator.py
src/devopsmind/challenges/Networking/Master/dns_vs_network/challenge.yaml
src/devopsmind/challenges/Networking/Master/dns_vs_network/description.md
src/devopsmind/challenges/Networking/Master/dns_vs_network/dns.log
src/devopsmind/challenges/Networking/Master/dns_vs_network/ping.log
src/devopsmind/challenges/Networking/Master/dns_vs_network/validator.py
src/devopsmind/challenges/Networking/Medium/dns_debug/challenge.yaml
src/devopsmind/challenges/Networking/Medium/dns_debug/description.md
src/devopsmind/challenges/Networking/Medium/dns_debug/dns_failure.log
src/devopsmind/challenges/Networking/Medium/dns_debug/validator.py
src/devopsmind/challenges/Python/Easy/add_function/challenge.yaml
src/devopsmind/challenges/Python/Easy/add_function/description.md
src/devopsmind/challenges/Python/Easy/add_function/validator.py
src/devopsmind/challenges/Python/Expert/dependency_resolver/challenge.yaml
src/devopsmind/challenges/Python/Expert/dependency_resolver/deps.txt
src/devopsmind/challenges/Python/Expert/dependency_resolver/description.md
src/devopsmind/challenges/Python/Expert/dependency_resolver/validator.py
src/devopsmind/challenges/Python/Hard/unit_test/challenge.yaml
src/devopsmind/challenges/Python/Hard/unit_test/description.md
src/devopsmind/challenges/Python/Hard/unit_test/test_utils.py
src/devopsmind/challenges/Python/Hard/unit_test/validator.py
src/devopsmind/challenges/Python/Master/log_parser/app.log
src/devopsmind/challenges/Python/Master/log_parser/challenge.yaml
src/devopsmind/challenges/Python/Master/log_parser/description.md
src/devopsmind/challenges/Python/Master/log_parser/validator.py
src/devopsmind/challenges/Python/Medium/readfile/challenge.yaml
src/devopsmind/challenges/Python/Medium/readfile/description.md
src/devopsmind/challenges/Python/Medium/readfile/validator.py
src/devopsmind/challenges/Terraform/Easy/easy_basic/challenge.yaml
src/devopsmind/challenges/Terraform/Easy/easy_basic/description.md
src/devopsmind/challenges/Terraform/Easy/easy_basic/validator.py
src/devopsmind/challenges/Terraform/Easy/easy_basic/__pycache__/validator.cpython-312.pyc
src/devopsmind/challenges/Terraform/Expert/multi_env_design/challenge.yaml
src/devopsmind/challenges/Terraform/Expert/multi_env_design/description.md
src/devopsmind/challenges/Terraform/Expert/multi_env_design/validator.py
src/devopsmind/challenges/Terraform/Hard/ec2_vars_outputs/challenge.yaml
src/devopsmind/challenges/Terraform/Hard/ec2_vars_outputs/description.md
src/devopsmind/challenges/Terraform/Hard/ec2_vars_outputs/validator.py
src/devopsmind/challenges/Terraform/Master/modules_and_locals/challenge.yaml
src/devopsmind/challenges/Terraform/Master/modules_and_locals/description.md
src/devopsmind/challenges/Terraform/Master/modules_and_locals/validator.py
src/devopsmind/challenges/Terraform/Medium/s3_bucket/challenge.yaml
src/devopsmind/challenges/Terraform/Medium/s3_bucket/description.md
src/devopsmind/challenges/Terraform/Medium/s3_bucket/validator.py
src/devopsmind/mentor/__init__.py
src/devopsmind/mentor/diagnostics.py
src/devopsmind/mentor/engine.py
src/devopsmind/mentor/mentor.py
src/devopsmind/mentor/rotation.py
src/devopsmind/mentor/schema.py
src/devopsmind/mentor/stagnation.py
src/devopsmind/mentor/utils.py
src/devopsmind/mentor/providers/ember_stub.py
src/devopsmind/mentor/providers/paid_stub.py
src/devopsmind/mentor/providers/rule_based.py