cloudfall 0.5.0__tar.gz → 0.6.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.
- {cloudfall-0.5.0 → cloudfall-0.6.0}/ARCHITECTURE.md +4 -3
- cloudfall-0.6.0/CHANGELOG.md +839 -0
- cloudfall-0.6.0/CODE_OF_CONDUCT.md +83 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/CONTRIBUTING.md +13 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/MANIFESTO.md +4 -6
- cloudfall-0.6.0/PKG-INFO +322 -0
- cloudfall-0.6.0/README.md +294 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/ROADMAP.md +7 -4
- {cloudfall-0.5.0 → cloudfall-0.6.0}/Taskfile.yml +5 -5
- cloudfall-0.6.0/config/schemas/v1/agent-investigation.schema.json +235 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/operation-decision.schema.json +63 -1
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/operator-proposal.schema.json +25 -0
- cloudfall-0.6.0/demo/README.md +36 -0
- cloudfall-0.6.0/demo/incident/.gitignore +3 -0
- cloudfall-0.6.0/demo/incident/ansible.cfg +6 -0
- cloudfall-0.6.0/demo/incident/inventories/production/hosts.yml +7 -0
- cloudfall-0.6.0/demo/incident/operations/converge.yml +7 -0
- cloudfall-0.6.0/demo/incident/operations/disk-report.yml +5 -0
- cloudfall-0.6.0/demo/incident/operations/journal-vacuum.yml +7 -0
- cloudfall-0.6.0/demo/incident/operations/postgresql-reinit.yml +7 -0
- cloudfall-0.6.0/demo/incident/operations/postgresql-restart.yml +7 -0
- cloudfall-0.6.0/demo/incident/operations/service-logs.yml +10 -0
- cloudfall-0.6.0/demo/incident/operations/shop-logrotate.yml +7 -0
- cloudfall-0.6.0/demo/incident/playbooks/disk-report.yml +31 -0
- cloudfall-0.6.0/demo/incident/playbooks/journal-vacuum.yml +6 -0
- cloudfall-0.6.0/demo/incident/playbooks/postgresql-reinit.yml +10 -0
- cloudfall-0.6.0/demo/incident/playbooks/postgresql-restart.yml +8 -0
- cloudfall-0.6.0/demo/incident/playbooks/postgresql.yml +12 -0
- cloudfall-0.6.0/demo/incident/playbooks/service-logs.yml +12 -0
- cloudfall-0.6.0/demo/incident/playbooks/shop-logrotate.yml +46 -0
- cloudfall-0.6.0/demo/incident/playbooks/shop.yml +26 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/disk-report-20261008170744.diff +53 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/disk-report-20261008170744.json +41 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/journal-vacuum-20261008171016.diff +12 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/journal-vacuum-20261008171016.json +40 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/postgresql-reinit-20261008171010.diff +15 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/postgresql-reinit-20261008171010.json +40 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/postgresql-restart-20261008170624.diff +12 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/postgresql-restart-20261008170624.json +42 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170612.diff +31 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170612.json +43 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170740.diff +19 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170740.json +43 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170742.diff +20 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170742.json +43 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170838.diff +31 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170838.json +43 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170920.diff +20 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170920.json +43 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/shop-logrotate-20261008170752.diff +70 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full/shop-logrotate-20261008170752.json +42 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full-approved/disk-report-20261008204348.diff +53 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full-approved/disk-report-20261008204348.json +41 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full-approved/disk-report-20261008204421.diff +51 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full-approved/disk-report-20261008204421.json +41 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full-approved/postgresql-restart-20261008204358.diff +12 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full-approved/postgresql-restart-20261008204358.json +73 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full-approved/shop-logrotate-20261008204351.diff +73 -0
- cloudfall-0.6.0/demo/incident/recordings/disk-full-approved/shop-logrotate-20261008204351.json +73 -0
- cloudfall-0.6.0/demo/incident/scenario/break.yml +20 -0
- cloudfall-0.6.0/demo/incident/site.yml +2 -0
- cloudfall-0.6.0/demo/pyproject.toml +37 -0
- cloudfall-0.6.0/demo/src/cloudfall_demo/__init__.py +1 -0
- cloudfall-0.6.0/demo/src/cloudfall_demo/server.py +392 -0
- cloudfall-0.6.0/demo/src/cloudfall_demo/static/evaluation.json +42 -0
- cloudfall-0.6.0/demo/src/cloudfall_demo/static/index.html +418 -0
- cloudfall-0.6.0/demo/tests/test_demo.py +150 -0
- cloudfall-0.6.0/demo/uv.lock +858 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/brownfield-design.md +1 -1
- cloudfall-0.6.0/docs/decisions.md +69 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/fleet-goals.md +2 -2
- cloudfall-0.6.0/docs/getting-started.md +149 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/landscape.md +4 -4
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/logging-service-guide.md +10 -10
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/neon-migration-guide.md +10 -10
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/operator-guide.md +37 -24
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/render-migration-guide.md +9 -8
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/secrets-guide.md +6 -6
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/README.md +26 -2
- cloudfall-0.6.0/engine/ansible/roles/cloudfall_nginx_site/tasks/apply_virtual_host.yml +89 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_nginx_site/tasks/main.yml +60 -45
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_nginx_site/templates/domain-site.conf.j2 +5 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_time/tasks/main.yml +33 -1
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/src/cloudfall_engine/artifact.py +38 -29
- cloudfall-0.6.0/engine/src/cloudfall_engine/cli.py +473 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/src/cloudfall_engine/playbook.py +2 -12
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/tests/test_ansible_inventory.py +47 -11
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/tests/test_artifact_builder.py +62 -23
- cloudfall-0.6.0/engine/tests/test_nginx_site_role.py +203 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/tests/test_nginx_site_templates.py +40 -1
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/tests/test_playbook.py +126 -8
- cloudfall-0.6.0/engine/tests/test_time_role.py +119 -0
- cloudfall-0.6.0/examples/disk-full-incident/.gitignore +3 -0
- cloudfall-0.6.0/examples/disk-full-incident/README.md +113 -0
- cloudfall-0.6.0/examples/disk-full-incident/ansible.cfg +6 -0
- cloudfall-0.6.0/examples/disk-full-incident/inventories/production/hosts.yml +7 -0
- cloudfall-0.6.0/examples/disk-full-incident/operations/converge.yml +7 -0
- cloudfall-0.6.0/examples/disk-full-incident/operations/disk-report.yml +5 -0
- cloudfall-0.6.0/examples/disk-full-incident/operations/journal-vacuum.yml +7 -0
- cloudfall-0.6.0/examples/disk-full-incident/operations/postgresql-reinit.yml +7 -0
- cloudfall-0.6.0/examples/disk-full-incident/operations/postgresql-restart.yml +7 -0
- cloudfall-0.6.0/examples/disk-full-incident/operations/service-logs.yml +10 -0
- cloudfall-0.6.0/examples/disk-full-incident/operations/shop-logrotate.yml +7 -0
- cloudfall-0.6.0/examples/disk-full-incident/playbooks/disk-report.yml +31 -0
- cloudfall-0.6.0/examples/disk-full-incident/playbooks/journal-vacuum.yml +6 -0
- cloudfall-0.6.0/examples/disk-full-incident/playbooks/postgresql-reinit.yml +10 -0
- cloudfall-0.6.0/examples/disk-full-incident/playbooks/postgresql-restart.yml +8 -0
- cloudfall-0.6.0/examples/disk-full-incident/playbooks/postgresql.yml +12 -0
- cloudfall-0.6.0/examples/disk-full-incident/playbooks/service-logs.yml +12 -0
- cloudfall-0.6.0/examples/disk-full-incident/playbooks/shop-logrotate.yml +46 -0
- cloudfall-0.6.0/examples/disk-full-incident/playbooks/shop.yml +26 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/disk-report-20261008170744.diff +53 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/disk-report-20261008170744.json +41 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/journal-vacuum-20261008171016.diff +12 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/journal-vacuum-20261008171016.json +40 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/postgresql-reinit-20261008171010.diff +15 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/postgresql-reinit-20261008171010.json +40 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/postgresql-restart-20261008170624.diff +12 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/postgresql-restart-20261008170624.json +42 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170612.diff +31 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170612.json +43 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170740.diff +19 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170740.json +43 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170742.diff +20 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170742.json +43 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170838.diff +31 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170838.json +43 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170920.diff +20 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170920.json +43 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/shop-logrotate-20261008170752.diff +70 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/shop-logrotate-20261008170752.json +42 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full-approved/disk-report-20261008204348.diff +53 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full-approved/disk-report-20261008204348.json +41 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full-approved/disk-report-20261008204421.diff +51 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full-approved/disk-report-20261008204421.json +41 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full-approved/postgresql-restart-20261008204358.diff +12 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full-approved/postgresql-restart-20261008204358.json +73 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full-approved/shop-logrotate-20261008204351.diff +73 -0
- cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full-approved/shop-logrotate-20261008204351.json +73 -0
- cloudfall-0.6.0/examples/disk-full-incident/scenario/break.yml +20 -0
- cloudfall-0.6.0/examples/disk-full-incident/site.yml +2 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/examples/render-demo/render.yaml +1 -1
- {cloudfall-0.5.0 → cloudfall-0.6.0}/pyproject.toml +28 -7
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/README.md +34 -23
- cloudfall-0.6.0/sdk/src/cloudfall/agent_server.py +433 -0
- cloudfall-0.6.0/sdk/src/cloudfall/agent_tools.py +52 -0
- cloudfall-0.6.0/sdk/src/cloudfall/app.py +4198 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/audit.py +4 -1
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/authoring.py +15 -7
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/catalog.py +3 -1
- cloudfall-0.6.0/sdk/src/cloudfall/cli.py +70 -0
- cloudfall-0.6.0/sdk/src/cloudfall/commands.py +600 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/dashboard_server.py +28 -2
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/decision.py +295 -46
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/importer.py +1 -1
- cloudfall-0.6.0/sdk/src/cloudfall/investigation.py +806 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/lifecycle.py +73 -40
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/observe.py +33 -6
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/operator.py +145 -22
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/project.py +62 -23
- cloudfall-0.6.0/sdk/src/cloudfall/recording.py +163 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/render_api.py +7 -3
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/secrets.py +4 -4
- cloudfall-0.6.0/sdk/src/cloudfall/why.py +489 -0
- cloudfall-0.6.0/sdk/tests/test_agent_server.py +412 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_ansible_reader.py +12 -10
- cloudfall-0.6.0/sdk/tests/test_app.py +180 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_arguments.py +35 -74
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_audit.py +59 -5
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_authoring.py +79 -5
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_catalog.py +9 -7
- cloudfall-0.6.0/sdk/tests/test_commands.py +111 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_dashboard_server.py +20 -0
- cloudfall-0.6.0/sdk/tests/test_decision.py +1508 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_importer.py +31 -4
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_inventory.py +3 -2
- cloudfall-0.6.0/sdk/tests/test_investigation.py +1602 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_lifecycle.py +109 -25
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_migrate.py +9 -5
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_observe.py +56 -8
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_operator.py +501 -1
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_project.py +28 -25
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_render_api.py +5 -4
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_validation.py +14 -9
- cloudfall-0.6.0/sdk/tests/test_why.py +349 -0
- cloudfall-0.5.0/.github/workflows/ci.yml +0 -53
- cloudfall-0.5.0/.github/workflows/release.yml +0 -78
- cloudfall-0.5.0/CHANGELOG.md +0 -227
- cloudfall-0.5.0/PKG-INFO +0 -418
- cloudfall-0.5.0/README.md +0 -392
- cloudfall-0.5.0/engine/src/cloudfall_engine/cli.py +0 -273
- cloudfall-0.5.0/evaluations/cloudfall/README.md +0 -43
- cloudfall-0.5.0/evaluations/cloudfall/environment.md +0 -61
- cloudfall-0.5.0/evaluations/cloudfall/findings.md +0 -26
- cloudfall-0.5.0/evaluations/cloudfall/issues.md +0 -78
- cloudfall-0.5.0/evaluations/cloudfall/linkedin.md +0 -33
- cloudfall-0.5.0/evaluations/cloudfall/readiness.md +0 -84
- cloudfall-0.5.0/evaluations/cloudfall/report-agent-dev.md +0 -1003
- cloudfall-0.5.0/evaluations/cloudfall/report-dev.md +0 -1048
- cloudfall-0.5.0/evaluations/cloudfall/report-index.md +0 -49
- cloudfall-0.5.0/evaluations/cloudfall/report-issues.md +0 -410
- cloudfall-0.5.0/evaluations/cloudfall/report-runtime.md +0 -74
- cloudfall-0.5.0/evaluations/cloudfall/trace.md +0 -1276
- cloudfall-0.5.0/evaluations/cloudfall/x.md +0 -45
- cloudfall-0.5.0/sdk/src/cloudfall/agent_tools.py +0 -868
- cloudfall-0.5.0/sdk/src/cloudfall/arguments.py +0 -92
- cloudfall-0.5.0/sdk/src/cloudfall/cli.py +0 -2138
- cloudfall-0.5.0/sdk/src/cloudfall/commands.py +0 -294
- cloudfall-0.5.0/sdk/src/cloudfall/fleet_tools.py +0 -249
- cloudfall-0.5.0/sdk/src/cloudfall/mcp_server.py +0 -944
- cloudfall-0.5.0/sdk/tests/test_agent_tools.py +0 -362
- cloudfall-0.5.0/sdk/tests/test_commands.py +0 -91
- cloudfall-0.5.0/sdk/tests/test_decision.py +0 -632
- cloudfall-0.5.0/sdk/tests/test_fleet_tools.py +0 -301
- cloudfall-0.5.0/site/public/apple-touch-icon.png +0 -0
- cloudfall-0.5.0/site/public/favicon-32.png +0 -0
- cloudfall-0.5.0/site/public/icon-192.png +0 -0
- cloudfall-0.5.0/site/public/icon-512.png +0 -0
- cloudfall-0.5.0/site/public/index.html +0 -491
- cloudfall-0.5.0/site/public/manifesto.html +0 -367
- cloudfall-0.5.0/site/public/og.png +0 -0
- cloudfall-0.5.0/site/public/site.webmanifest +0 -23
- cloudfall-0.5.0/site/src/worker.js +0 -10
- cloudfall-0.5.0/site/wrangler.jsonc +0 -18
- cloudfall-0.5.0/uv.lock +0 -1198
- {cloudfall-0.5.0 → cloudfall-0.6.0}/.ansible-lint +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/.gitignore +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/LICENSE +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/SECURITY.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/README.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/alert-rules/postgresql-down.yaml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/applications/crm.yaml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/components/crm-backend.yaml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/domains/crm-site.yaml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/logging-stacks/operations.yaml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/operator-policies/production.yaml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/server-types/debian-application.yaml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/servers/h1.yaml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/servers/h2.yaml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/services/postgresql-main.yaml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/services/redis-cache.yaml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/ssh-public-keys/example-admin.yaml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/alert-rule.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/application.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/artifact.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/backup-receipt.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/common.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/component.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/deployment-receipt.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/domain.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/environment-receipt.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/logging-stack.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/observed-domain.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/observed-server.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/operation.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/operator-policy.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/release-receipt.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/server-type.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/server.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/service.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/ssh-public-key.schema.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/tests/invalid/missing-server/applications/crm.yaml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/tests/invalid/missing-server/components/crm-backend.yaml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/tests/invalid/missing-server/server-types/debian-application.yaml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/tests/invalid/missing-server/servers/h1.yaml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/tests/invalid/schema/components/component-unknown-field.yaml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/tests/observed/compliant/h1.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/config/tests/observed/compliant/h2.json +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/ansible-context.md +0 -0
- /cloudfall-0.5.0/site/public/favicon.svg → /cloudfall-0.6.0/docs/assets/logo.svg +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/availability-design.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/decisions/2026-09-14-no-ansible-replacement.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/decisions/2026-09-14-no-nixos-base.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/decisions/2026-09-14-no-rust-rewrite.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/hybrid-storage-design.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/new-server-storage-guide.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-08-debian-container-m1.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-08-dns-cutover.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-08-guided-data-migration.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-08-hetzner-m1.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-08-hetzner-m2-m3.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-08-hetzner-m4-m5.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-08-render-cutover.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-10-hetzner-m7.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-10-hetzner-m8.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-10-hetzner-m9.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-11-hetzner-m10.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/ansible.cfg +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/backup.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/baseline.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/bootstrap.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/data.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/deploy.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/domains.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/health.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/inspect.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/logging.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/restart.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/rollback.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/services.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/time.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_access/defaults/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_access/handlers/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_access/meta/argument_specs.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_access/meta/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_access/tasks/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_bootstrap/defaults/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_bootstrap/meta/argument_specs.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_bootstrap/meta/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_bootstrap/tasks/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_data_migration/defaults/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_data_migration/meta/argument_specs.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_data_migration/meta/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_data_migration/tasks/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/defaults/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/meta/argument_specs.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/meta/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/tasks/health.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/tasks/health_gate.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/tasks/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/tasks/restart.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/tasks/rollback.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/templates/component.service.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_firewall/defaults/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_firewall/handlers/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_firewall/meta/argument_specs.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_firewall/meta/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_firewall/tasks/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_firewall/templates/nftables.conf.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_inspect/defaults/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_inspect/meta/argument_specs.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_inspect/meta/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_inspect/tasks/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/defaults/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/handlers/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/meta/argument_specs.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/meta/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/tasks/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/alertmanager-defaults.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/alertmanager.yaml.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/grafana.ini.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/loki-datasource.yml.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/loki-systemd-override.conf.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/loki.yaml.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/nginx-loki-gateway.conf.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/prometheus-datasource.yml.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/prometheus-defaults.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/prometheus-rules.yaml.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/prometheus.yaml.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_collector/defaults/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_collector/handlers/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_collector/meta/argument_specs.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_collector/meta/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_collector/tasks/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_collector/templates/alloy-systemd-override.conf.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_collector/templates/config.alloy.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_nginx_site/defaults/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_nginx_site/handlers/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_nginx_site/meta/argument_specs.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_nginx_site/meta/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/defaults/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/handlers/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/meta/argument_specs.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/meta/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/tasks/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/templates/backup.service.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/templates/backup.sh.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/templates/backup.timer.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/templates/cloudfall.conf.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/templates/restore-check.service.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/templates/restore-check.sh.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/templates/restore-check.timer.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/defaults/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/handlers/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/meta/argument_specs.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/meta/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/tasks/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/templates/backup.service.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/templates/backup.sh.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/templates/backup.timer.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/templates/cloudfall.conf.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/templates/restore-check.service.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/templates/restore-check.sh.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/templates/restore-check.timer.j2 +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_time/defaults/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_time/meta/argument_specs.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_time/meta/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_unattended_upgrades/defaults/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_unattended_upgrades/meta/argument_specs.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_unattended_upgrades/meta/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_unattended_upgrades/tasks/main.yml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/src/cloudfall_engine/__init__.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/src/cloudfall_engine/__main__.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/src/cloudfall_engine/ansible_inventory.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/src/cloudfall_engine/py.typed +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/tests/test_deploy_templates.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/tests/test_firewall_templates.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/tests/test_logging_templates.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/tests/test_postgresql_templates.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/examples/render-demo/README.md +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/examples/render-demo/pyproject.toml +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/examples/render-demo/src/demo/__init__.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/examples/render-demo/src/demo/asgi.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/examples/render-demo/uv.lock +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/__init__.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/__main__.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/ansible_api.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/ansible_reader.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/cutover.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/dashboard.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/domain.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/inventory.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/migrate.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/observation.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/operations.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/py.typed +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/resources.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/service_evidence.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/validation.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_cutover.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_data_migration.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_operations_dashboard.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_resources.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_secrets.py +0 -0
- {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_service_evidence.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Architecture
|
|
2
2
|
|
|
3
|
-
Cloudfall is the operator's record for
|
|
3
|
+
Cloudfall is the operator's record for self-hosted servers run by an AI agent.
|
|
4
4
|
The agent decides, Ansible executes, and Cloudfall sits between them: it
|
|
5
5
|
declares what the agent may do, checks every result, and keeps the evidence
|
|
6
6
|
behind every decision. Ansible is the hand, the agent is the brain,
|
|
@@ -15,7 +15,8 @@ Debian servers without Kubernetes (see the [fleet goals](docs/fleet-goals.md)),
|
|
|
15
15
|
on a config the team already owns. This document describes the durable
|
|
16
16
|
design; [`ROADMAP.md`](ROADMAP.md) is the authoritative source for what is
|
|
17
17
|
implemented today, and the [brownfield design](docs/brownfield-design.md)
|
|
18
|
-
describes the
|
|
18
|
+
describes the next step, whose operations catalog, gate and record are
|
|
19
|
+
built while safe edits and autonomy from the record are not.
|
|
19
20
|
|
|
20
21
|
Every layer keeps the same invariants: no action without declared config, no
|
|
21
22
|
status without evidence, no compliance without audit, no decision without a
|
|
@@ -32,7 +33,7 @@ Human / AI agent ──runs───► CLI / MCP / Python API ──► Gate
|
|
|
32
33
|
|
|
33
34
|
The config is a store, not a pipeline stage: humans and agents edit it
|
|
34
35
|
directly, the CLI validates and reads it, and the engine converges servers
|
|
35
|
-
to it. The agent operates through a stable CLI, the `cloudfall
|
|
36
|
+
to it. The agent operates through a stable CLI, the `cloudfall mcp serve` server
|
|
36
37
|
and a Python API instead of inventing shell commands or discovering
|
|
37
38
|
infrastructure over SSH. Every mutating operation goes through the engine's
|
|
38
39
|
explicit playbook contracts, waits behind a gate the agent does not control
|