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.
Files changed (425) hide show
  1. {cloudfall-0.5.0 → cloudfall-0.6.0}/ARCHITECTURE.md +4 -3
  2. cloudfall-0.6.0/CHANGELOG.md +839 -0
  3. cloudfall-0.6.0/CODE_OF_CONDUCT.md +83 -0
  4. {cloudfall-0.5.0 → cloudfall-0.6.0}/CONTRIBUTING.md +13 -0
  5. {cloudfall-0.5.0 → cloudfall-0.6.0}/MANIFESTO.md +4 -6
  6. cloudfall-0.6.0/PKG-INFO +322 -0
  7. cloudfall-0.6.0/README.md +294 -0
  8. {cloudfall-0.5.0 → cloudfall-0.6.0}/ROADMAP.md +7 -4
  9. {cloudfall-0.5.0 → cloudfall-0.6.0}/Taskfile.yml +5 -5
  10. cloudfall-0.6.0/config/schemas/v1/agent-investigation.schema.json +235 -0
  11. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/operation-decision.schema.json +63 -1
  12. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/operator-proposal.schema.json +25 -0
  13. cloudfall-0.6.0/demo/README.md +36 -0
  14. cloudfall-0.6.0/demo/incident/.gitignore +3 -0
  15. cloudfall-0.6.0/demo/incident/ansible.cfg +6 -0
  16. cloudfall-0.6.0/demo/incident/inventories/production/hosts.yml +7 -0
  17. cloudfall-0.6.0/demo/incident/operations/converge.yml +7 -0
  18. cloudfall-0.6.0/demo/incident/operations/disk-report.yml +5 -0
  19. cloudfall-0.6.0/demo/incident/operations/journal-vacuum.yml +7 -0
  20. cloudfall-0.6.0/demo/incident/operations/postgresql-reinit.yml +7 -0
  21. cloudfall-0.6.0/demo/incident/operations/postgresql-restart.yml +7 -0
  22. cloudfall-0.6.0/demo/incident/operations/service-logs.yml +10 -0
  23. cloudfall-0.6.0/demo/incident/operations/shop-logrotate.yml +7 -0
  24. cloudfall-0.6.0/demo/incident/playbooks/disk-report.yml +31 -0
  25. cloudfall-0.6.0/demo/incident/playbooks/journal-vacuum.yml +6 -0
  26. cloudfall-0.6.0/demo/incident/playbooks/postgresql-reinit.yml +10 -0
  27. cloudfall-0.6.0/demo/incident/playbooks/postgresql-restart.yml +8 -0
  28. cloudfall-0.6.0/demo/incident/playbooks/postgresql.yml +12 -0
  29. cloudfall-0.6.0/demo/incident/playbooks/service-logs.yml +12 -0
  30. cloudfall-0.6.0/demo/incident/playbooks/shop-logrotate.yml +46 -0
  31. cloudfall-0.6.0/demo/incident/playbooks/shop.yml +26 -0
  32. cloudfall-0.6.0/demo/incident/recordings/disk-full/disk-report-20261008170744.diff +53 -0
  33. cloudfall-0.6.0/demo/incident/recordings/disk-full/disk-report-20261008170744.json +41 -0
  34. cloudfall-0.6.0/demo/incident/recordings/disk-full/journal-vacuum-20261008171016.diff +12 -0
  35. cloudfall-0.6.0/demo/incident/recordings/disk-full/journal-vacuum-20261008171016.json +40 -0
  36. cloudfall-0.6.0/demo/incident/recordings/disk-full/postgresql-reinit-20261008171010.diff +15 -0
  37. cloudfall-0.6.0/demo/incident/recordings/disk-full/postgresql-reinit-20261008171010.json +40 -0
  38. cloudfall-0.6.0/demo/incident/recordings/disk-full/postgresql-restart-20261008170624.diff +12 -0
  39. cloudfall-0.6.0/demo/incident/recordings/disk-full/postgresql-restart-20261008170624.json +42 -0
  40. cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170612.diff +31 -0
  41. cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170612.json +43 -0
  42. cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170740.diff +19 -0
  43. cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170740.json +43 -0
  44. cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170742.diff +20 -0
  45. cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170742.json +43 -0
  46. cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170838.diff +31 -0
  47. cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170838.json +43 -0
  48. cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170920.diff +20 -0
  49. cloudfall-0.6.0/demo/incident/recordings/disk-full/service-logs-20261008170920.json +43 -0
  50. cloudfall-0.6.0/demo/incident/recordings/disk-full/shop-logrotate-20261008170752.diff +70 -0
  51. cloudfall-0.6.0/demo/incident/recordings/disk-full/shop-logrotate-20261008170752.json +42 -0
  52. cloudfall-0.6.0/demo/incident/recordings/disk-full-approved/disk-report-20261008204348.diff +53 -0
  53. cloudfall-0.6.0/demo/incident/recordings/disk-full-approved/disk-report-20261008204348.json +41 -0
  54. cloudfall-0.6.0/demo/incident/recordings/disk-full-approved/disk-report-20261008204421.diff +51 -0
  55. cloudfall-0.6.0/demo/incident/recordings/disk-full-approved/disk-report-20261008204421.json +41 -0
  56. cloudfall-0.6.0/demo/incident/recordings/disk-full-approved/postgresql-restart-20261008204358.diff +12 -0
  57. cloudfall-0.6.0/demo/incident/recordings/disk-full-approved/postgresql-restart-20261008204358.json +73 -0
  58. cloudfall-0.6.0/demo/incident/recordings/disk-full-approved/shop-logrotate-20261008204351.diff +73 -0
  59. cloudfall-0.6.0/demo/incident/recordings/disk-full-approved/shop-logrotate-20261008204351.json +73 -0
  60. cloudfall-0.6.0/demo/incident/scenario/break.yml +20 -0
  61. cloudfall-0.6.0/demo/incident/site.yml +2 -0
  62. cloudfall-0.6.0/demo/pyproject.toml +37 -0
  63. cloudfall-0.6.0/demo/src/cloudfall_demo/__init__.py +1 -0
  64. cloudfall-0.6.0/demo/src/cloudfall_demo/server.py +392 -0
  65. cloudfall-0.6.0/demo/src/cloudfall_demo/static/evaluation.json +42 -0
  66. cloudfall-0.6.0/demo/src/cloudfall_demo/static/index.html +418 -0
  67. cloudfall-0.6.0/demo/tests/test_demo.py +150 -0
  68. cloudfall-0.6.0/demo/uv.lock +858 -0
  69. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/brownfield-design.md +1 -1
  70. cloudfall-0.6.0/docs/decisions.md +69 -0
  71. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/fleet-goals.md +2 -2
  72. cloudfall-0.6.0/docs/getting-started.md +149 -0
  73. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/landscape.md +4 -4
  74. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/logging-service-guide.md +10 -10
  75. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/neon-migration-guide.md +10 -10
  76. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/operator-guide.md +37 -24
  77. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/render-migration-guide.md +9 -8
  78. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/secrets-guide.md +6 -6
  79. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/README.md +26 -2
  80. cloudfall-0.6.0/engine/ansible/roles/cloudfall_nginx_site/tasks/apply_virtual_host.yml +89 -0
  81. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_nginx_site/tasks/main.yml +60 -45
  82. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_nginx_site/templates/domain-site.conf.j2 +5 -0
  83. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_time/tasks/main.yml +33 -1
  84. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/src/cloudfall_engine/artifact.py +38 -29
  85. cloudfall-0.6.0/engine/src/cloudfall_engine/cli.py +473 -0
  86. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/src/cloudfall_engine/playbook.py +2 -12
  87. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/tests/test_ansible_inventory.py +47 -11
  88. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/tests/test_artifact_builder.py +62 -23
  89. cloudfall-0.6.0/engine/tests/test_nginx_site_role.py +203 -0
  90. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/tests/test_nginx_site_templates.py +40 -1
  91. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/tests/test_playbook.py +126 -8
  92. cloudfall-0.6.0/engine/tests/test_time_role.py +119 -0
  93. cloudfall-0.6.0/examples/disk-full-incident/.gitignore +3 -0
  94. cloudfall-0.6.0/examples/disk-full-incident/README.md +113 -0
  95. cloudfall-0.6.0/examples/disk-full-incident/ansible.cfg +6 -0
  96. cloudfall-0.6.0/examples/disk-full-incident/inventories/production/hosts.yml +7 -0
  97. cloudfall-0.6.0/examples/disk-full-incident/operations/converge.yml +7 -0
  98. cloudfall-0.6.0/examples/disk-full-incident/operations/disk-report.yml +5 -0
  99. cloudfall-0.6.0/examples/disk-full-incident/operations/journal-vacuum.yml +7 -0
  100. cloudfall-0.6.0/examples/disk-full-incident/operations/postgresql-reinit.yml +7 -0
  101. cloudfall-0.6.0/examples/disk-full-incident/operations/postgresql-restart.yml +7 -0
  102. cloudfall-0.6.0/examples/disk-full-incident/operations/service-logs.yml +10 -0
  103. cloudfall-0.6.0/examples/disk-full-incident/operations/shop-logrotate.yml +7 -0
  104. cloudfall-0.6.0/examples/disk-full-incident/playbooks/disk-report.yml +31 -0
  105. cloudfall-0.6.0/examples/disk-full-incident/playbooks/journal-vacuum.yml +6 -0
  106. cloudfall-0.6.0/examples/disk-full-incident/playbooks/postgresql-reinit.yml +10 -0
  107. cloudfall-0.6.0/examples/disk-full-incident/playbooks/postgresql-restart.yml +8 -0
  108. cloudfall-0.6.0/examples/disk-full-incident/playbooks/postgresql.yml +12 -0
  109. cloudfall-0.6.0/examples/disk-full-incident/playbooks/service-logs.yml +12 -0
  110. cloudfall-0.6.0/examples/disk-full-incident/playbooks/shop-logrotate.yml +46 -0
  111. cloudfall-0.6.0/examples/disk-full-incident/playbooks/shop.yml +26 -0
  112. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/disk-report-20261008170744.diff +53 -0
  113. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/disk-report-20261008170744.json +41 -0
  114. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/journal-vacuum-20261008171016.diff +12 -0
  115. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/journal-vacuum-20261008171016.json +40 -0
  116. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/postgresql-reinit-20261008171010.diff +15 -0
  117. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/postgresql-reinit-20261008171010.json +40 -0
  118. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/postgresql-restart-20261008170624.diff +12 -0
  119. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/postgresql-restart-20261008170624.json +42 -0
  120. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170612.diff +31 -0
  121. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170612.json +43 -0
  122. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170740.diff +19 -0
  123. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170740.json +43 -0
  124. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170742.diff +20 -0
  125. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170742.json +43 -0
  126. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170838.diff +31 -0
  127. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170838.json +43 -0
  128. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170920.diff +20 -0
  129. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/service-logs-20261008170920.json +43 -0
  130. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/shop-logrotate-20261008170752.diff +70 -0
  131. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full/shop-logrotate-20261008170752.json +42 -0
  132. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full-approved/disk-report-20261008204348.diff +53 -0
  133. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full-approved/disk-report-20261008204348.json +41 -0
  134. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full-approved/disk-report-20261008204421.diff +51 -0
  135. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full-approved/disk-report-20261008204421.json +41 -0
  136. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full-approved/postgresql-restart-20261008204358.diff +12 -0
  137. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full-approved/postgresql-restart-20261008204358.json +73 -0
  138. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full-approved/shop-logrotate-20261008204351.diff +73 -0
  139. cloudfall-0.6.0/examples/disk-full-incident/recordings/disk-full-approved/shop-logrotate-20261008204351.json +73 -0
  140. cloudfall-0.6.0/examples/disk-full-incident/scenario/break.yml +20 -0
  141. cloudfall-0.6.0/examples/disk-full-incident/site.yml +2 -0
  142. {cloudfall-0.5.0 → cloudfall-0.6.0}/examples/render-demo/render.yaml +1 -1
  143. {cloudfall-0.5.0 → cloudfall-0.6.0}/pyproject.toml +28 -7
  144. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/README.md +34 -23
  145. cloudfall-0.6.0/sdk/src/cloudfall/agent_server.py +433 -0
  146. cloudfall-0.6.0/sdk/src/cloudfall/agent_tools.py +52 -0
  147. cloudfall-0.6.0/sdk/src/cloudfall/app.py +4198 -0
  148. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/audit.py +4 -1
  149. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/authoring.py +15 -7
  150. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/catalog.py +3 -1
  151. cloudfall-0.6.0/sdk/src/cloudfall/cli.py +70 -0
  152. cloudfall-0.6.0/sdk/src/cloudfall/commands.py +600 -0
  153. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/dashboard_server.py +28 -2
  154. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/decision.py +295 -46
  155. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/importer.py +1 -1
  156. cloudfall-0.6.0/sdk/src/cloudfall/investigation.py +806 -0
  157. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/lifecycle.py +73 -40
  158. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/observe.py +33 -6
  159. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/operator.py +145 -22
  160. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/project.py +62 -23
  161. cloudfall-0.6.0/sdk/src/cloudfall/recording.py +163 -0
  162. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/render_api.py +7 -3
  163. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/secrets.py +4 -4
  164. cloudfall-0.6.0/sdk/src/cloudfall/why.py +489 -0
  165. cloudfall-0.6.0/sdk/tests/test_agent_server.py +412 -0
  166. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_ansible_reader.py +12 -10
  167. cloudfall-0.6.0/sdk/tests/test_app.py +180 -0
  168. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_arguments.py +35 -74
  169. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_audit.py +59 -5
  170. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_authoring.py +79 -5
  171. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_catalog.py +9 -7
  172. cloudfall-0.6.0/sdk/tests/test_commands.py +111 -0
  173. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_dashboard_server.py +20 -0
  174. cloudfall-0.6.0/sdk/tests/test_decision.py +1508 -0
  175. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_importer.py +31 -4
  176. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_inventory.py +3 -2
  177. cloudfall-0.6.0/sdk/tests/test_investigation.py +1602 -0
  178. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_lifecycle.py +109 -25
  179. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_migrate.py +9 -5
  180. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_observe.py +56 -8
  181. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_operator.py +501 -1
  182. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_project.py +28 -25
  183. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_render_api.py +5 -4
  184. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_validation.py +14 -9
  185. cloudfall-0.6.0/sdk/tests/test_why.py +349 -0
  186. cloudfall-0.5.0/.github/workflows/ci.yml +0 -53
  187. cloudfall-0.5.0/.github/workflows/release.yml +0 -78
  188. cloudfall-0.5.0/CHANGELOG.md +0 -227
  189. cloudfall-0.5.0/PKG-INFO +0 -418
  190. cloudfall-0.5.0/README.md +0 -392
  191. cloudfall-0.5.0/engine/src/cloudfall_engine/cli.py +0 -273
  192. cloudfall-0.5.0/evaluations/cloudfall/README.md +0 -43
  193. cloudfall-0.5.0/evaluations/cloudfall/environment.md +0 -61
  194. cloudfall-0.5.0/evaluations/cloudfall/findings.md +0 -26
  195. cloudfall-0.5.0/evaluations/cloudfall/issues.md +0 -78
  196. cloudfall-0.5.0/evaluations/cloudfall/linkedin.md +0 -33
  197. cloudfall-0.5.0/evaluations/cloudfall/readiness.md +0 -84
  198. cloudfall-0.5.0/evaluations/cloudfall/report-agent-dev.md +0 -1003
  199. cloudfall-0.5.0/evaluations/cloudfall/report-dev.md +0 -1048
  200. cloudfall-0.5.0/evaluations/cloudfall/report-index.md +0 -49
  201. cloudfall-0.5.0/evaluations/cloudfall/report-issues.md +0 -410
  202. cloudfall-0.5.0/evaluations/cloudfall/report-runtime.md +0 -74
  203. cloudfall-0.5.0/evaluations/cloudfall/trace.md +0 -1276
  204. cloudfall-0.5.0/evaluations/cloudfall/x.md +0 -45
  205. cloudfall-0.5.0/sdk/src/cloudfall/agent_tools.py +0 -868
  206. cloudfall-0.5.0/sdk/src/cloudfall/arguments.py +0 -92
  207. cloudfall-0.5.0/sdk/src/cloudfall/cli.py +0 -2138
  208. cloudfall-0.5.0/sdk/src/cloudfall/commands.py +0 -294
  209. cloudfall-0.5.0/sdk/src/cloudfall/fleet_tools.py +0 -249
  210. cloudfall-0.5.0/sdk/src/cloudfall/mcp_server.py +0 -944
  211. cloudfall-0.5.0/sdk/tests/test_agent_tools.py +0 -362
  212. cloudfall-0.5.0/sdk/tests/test_commands.py +0 -91
  213. cloudfall-0.5.0/sdk/tests/test_decision.py +0 -632
  214. cloudfall-0.5.0/sdk/tests/test_fleet_tools.py +0 -301
  215. cloudfall-0.5.0/site/public/apple-touch-icon.png +0 -0
  216. cloudfall-0.5.0/site/public/favicon-32.png +0 -0
  217. cloudfall-0.5.0/site/public/icon-192.png +0 -0
  218. cloudfall-0.5.0/site/public/icon-512.png +0 -0
  219. cloudfall-0.5.0/site/public/index.html +0 -491
  220. cloudfall-0.5.0/site/public/manifesto.html +0 -367
  221. cloudfall-0.5.0/site/public/og.png +0 -0
  222. cloudfall-0.5.0/site/public/site.webmanifest +0 -23
  223. cloudfall-0.5.0/site/src/worker.js +0 -10
  224. cloudfall-0.5.0/site/wrangler.jsonc +0 -18
  225. cloudfall-0.5.0/uv.lock +0 -1198
  226. {cloudfall-0.5.0 → cloudfall-0.6.0}/.ansible-lint +0 -0
  227. {cloudfall-0.5.0 → cloudfall-0.6.0}/.gitignore +0 -0
  228. {cloudfall-0.5.0 → cloudfall-0.6.0}/LICENSE +0 -0
  229. {cloudfall-0.5.0 → cloudfall-0.6.0}/SECURITY.md +0 -0
  230. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/README.md +0 -0
  231. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/alert-rules/postgresql-down.yaml +0 -0
  232. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/applications/crm.yaml +0 -0
  233. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/components/crm-backend.yaml +0 -0
  234. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/domains/crm-site.yaml +0 -0
  235. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/logging-stacks/operations.yaml +0 -0
  236. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/operator-policies/production.yaml +0 -0
  237. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/server-types/debian-application.yaml +0 -0
  238. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/servers/h1.yaml +0 -0
  239. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/servers/h2.yaml +0 -0
  240. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/services/postgresql-main.yaml +0 -0
  241. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/services/redis-cache.yaml +0 -0
  242. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/examples/ssh-public-keys/example-admin.yaml +0 -0
  243. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/alert-rule.schema.json +0 -0
  244. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/application.schema.json +0 -0
  245. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/artifact.schema.json +0 -0
  246. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/backup-receipt.schema.json +0 -0
  247. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/common.schema.json +0 -0
  248. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/component.schema.json +0 -0
  249. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/deployment-receipt.schema.json +0 -0
  250. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/domain.schema.json +0 -0
  251. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/environment-receipt.schema.json +0 -0
  252. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/logging-stack.schema.json +0 -0
  253. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/observed-domain.schema.json +0 -0
  254. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/observed-server.schema.json +0 -0
  255. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/operation.schema.json +0 -0
  256. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/operator-policy.schema.json +0 -0
  257. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/release-receipt.schema.json +0 -0
  258. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/server-type.schema.json +0 -0
  259. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/server.schema.json +0 -0
  260. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/service.schema.json +0 -0
  261. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/schemas/v1/ssh-public-key.schema.json +0 -0
  262. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/tests/invalid/missing-server/applications/crm.yaml +0 -0
  263. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/tests/invalid/missing-server/components/crm-backend.yaml +0 -0
  264. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/tests/invalid/missing-server/server-types/debian-application.yaml +0 -0
  265. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/tests/invalid/missing-server/servers/h1.yaml +0 -0
  266. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/tests/invalid/schema/components/component-unknown-field.yaml +0 -0
  267. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/tests/observed/compliant/h1.json +0 -0
  268. {cloudfall-0.5.0 → cloudfall-0.6.0}/config/tests/observed/compliant/h2.json +0 -0
  269. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/ansible-context.md +0 -0
  270. /cloudfall-0.5.0/site/public/favicon.svg → /cloudfall-0.6.0/docs/assets/logo.svg +0 -0
  271. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/availability-design.md +0 -0
  272. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/decisions/2026-09-14-no-ansible-replacement.md +0 -0
  273. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/decisions/2026-09-14-no-nixos-base.md +0 -0
  274. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/decisions/2026-09-14-no-rust-rewrite.md +0 -0
  275. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/hybrid-storage-design.md +0 -0
  276. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/new-server-storage-guide.md +0 -0
  277. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-08-debian-container-m1.md +0 -0
  278. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-08-dns-cutover.md +0 -0
  279. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-08-guided-data-migration.md +0 -0
  280. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-08-hetzner-m1.md +0 -0
  281. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-08-hetzner-m2-m3.md +0 -0
  282. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-08-hetzner-m4-m5.md +0 -0
  283. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-08-render-cutover.md +0 -0
  284. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-10-hetzner-m7.md +0 -0
  285. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-10-hetzner-m8.md +0 -0
  286. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-10-hetzner-m9.md +0 -0
  287. {cloudfall-0.5.0 → cloudfall-0.6.0}/docs/proving-runs/2026-09-11-hetzner-m10.md +0 -0
  288. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/ansible.cfg +0 -0
  289. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/backup.yml +0 -0
  290. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/baseline.yml +0 -0
  291. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/bootstrap.yml +0 -0
  292. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/data.yml +0 -0
  293. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/deploy.yml +0 -0
  294. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/domains.yml +0 -0
  295. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/health.yml +0 -0
  296. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/inspect.yml +0 -0
  297. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/logging.yml +0 -0
  298. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/restart.yml +0 -0
  299. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/rollback.yml +0 -0
  300. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/services.yml +0 -0
  301. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/playbooks/time.yml +0 -0
  302. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_access/defaults/main.yml +0 -0
  303. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_access/handlers/main.yml +0 -0
  304. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_access/meta/argument_specs.yml +0 -0
  305. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_access/meta/main.yml +0 -0
  306. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_access/tasks/main.yml +0 -0
  307. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_bootstrap/defaults/main.yml +0 -0
  308. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_bootstrap/meta/argument_specs.yml +0 -0
  309. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_bootstrap/meta/main.yml +0 -0
  310. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_bootstrap/tasks/main.yml +0 -0
  311. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_data_migration/defaults/main.yml +0 -0
  312. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_data_migration/meta/argument_specs.yml +0 -0
  313. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_data_migration/meta/main.yml +0 -0
  314. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_data_migration/tasks/main.yml +0 -0
  315. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/defaults/main.yml +0 -0
  316. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/meta/argument_specs.yml +0 -0
  317. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/meta/main.yml +0 -0
  318. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/tasks/health.yml +0 -0
  319. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/tasks/health_gate.yml +0 -0
  320. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/tasks/main.yml +0 -0
  321. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/tasks/restart.yml +0 -0
  322. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/tasks/rollback.yml +0 -0
  323. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_deploy/templates/component.service.j2 +0 -0
  324. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_firewall/defaults/main.yml +0 -0
  325. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_firewall/handlers/main.yml +0 -0
  326. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_firewall/meta/argument_specs.yml +0 -0
  327. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_firewall/meta/main.yml +0 -0
  328. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_firewall/tasks/main.yml +0 -0
  329. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_firewall/templates/nftables.conf.j2 +0 -0
  330. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_inspect/defaults/main.yml +0 -0
  331. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_inspect/meta/argument_specs.yml +0 -0
  332. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_inspect/meta/main.yml +0 -0
  333. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_inspect/tasks/main.yml +0 -0
  334. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/defaults/main.yml +0 -0
  335. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/handlers/main.yml +0 -0
  336. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/meta/argument_specs.yml +0 -0
  337. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/meta/main.yml +0 -0
  338. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/tasks/main.yml +0 -0
  339. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/alertmanager-defaults.j2 +0 -0
  340. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/alertmanager.yaml.j2 +0 -0
  341. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/grafana.ini.j2 +0 -0
  342. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/loki-datasource.yml.j2 +0 -0
  343. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/loki-systemd-override.conf.j2 +0 -0
  344. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/loki.yaml.j2 +0 -0
  345. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/nginx-loki-gateway.conf.j2 +0 -0
  346. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/prometheus-datasource.yml.j2 +0 -0
  347. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/prometheus-defaults.j2 +0 -0
  348. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/prometheus-rules.yaml.j2 +0 -0
  349. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_backend/templates/prometheus.yaml.j2 +0 -0
  350. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_collector/defaults/main.yml +0 -0
  351. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_collector/handlers/main.yml +0 -0
  352. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_collector/meta/argument_specs.yml +0 -0
  353. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_collector/meta/main.yml +0 -0
  354. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_collector/tasks/main.yml +0 -0
  355. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_collector/templates/alloy-systemd-override.conf.j2 +0 -0
  356. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_logging_collector/templates/config.alloy.j2 +0 -0
  357. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_nginx_site/defaults/main.yml +0 -0
  358. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_nginx_site/handlers/main.yml +0 -0
  359. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_nginx_site/meta/argument_specs.yml +0 -0
  360. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_nginx_site/meta/main.yml +0 -0
  361. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/defaults/main.yml +0 -0
  362. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/handlers/main.yml +0 -0
  363. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/meta/argument_specs.yml +0 -0
  364. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/meta/main.yml +0 -0
  365. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/tasks/main.yml +0 -0
  366. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/templates/backup.service.j2 +0 -0
  367. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/templates/backup.sh.j2 +0 -0
  368. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/templates/backup.timer.j2 +0 -0
  369. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/templates/cloudfall.conf.j2 +0 -0
  370. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/templates/restore-check.service.j2 +0 -0
  371. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/templates/restore-check.sh.j2 +0 -0
  372. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_postgresql/templates/restore-check.timer.j2 +0 -0
  373. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/defaults/main.yml +0 -0
  374. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/handlers/main.yml +0 -0
  375. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/meta/argument_specs.yml +0 -0
  376. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/meta/main.yml +0 -0
  377. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/tasks/main.yml +0 -0
  378. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/templates/backup.service.j2 +0 -0
  379. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/templates/backup.sh.j2 +0 -0
  380. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/templates/backup.timer.j2 +0 -0
  381. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/templates/cloudfall.conf.j2 +0 -0
  382. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/templates/restore-check.service.j2 +0 -0
  383. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/templates/restore-check.sh.j2 +0 -0
  384. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_redis/templates/restore-check.timer.j2 +0 -0
  385. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_time/defaults/main.yml +0 -0
  386. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_time/meta/argument_specs.yml +0 -0
  387. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_time/meta/main.yml +0 -0
  388. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_unattended_upgrades/defaults/main.yml +0 -0
  389. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_unattended_upgrades/meta/argument_specs.yml +0 -0
  390. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_unattended_upgrades/meta/main.yml +0 -0
  391. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/ansible/roles/cloudfall_unattended_upgrades/tasks/main.yml +0 -0
  392. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/src/cloudfall_engine/__init__.py +0 -0
  393. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/src/cloudfall_engine/__main__.py +0 -0
  394. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/src/cloudfall_engine/ansible_inventory.py +0 -0
  395. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/src/cloudfall_engine/py.typed +0 -0
  396. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/tests/test_deploy_templates.py +0 -0
  397. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/tests/test_firewall_templates.py +0 -0
  398. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/tests/test_logging_templates.py +0 -0
  399. {cloudfall-0.5.0 → cloudfall-0.6.0}/engine/tests/test_postgresql_templates.py +0 -0
  400. {cloudfall-0.5.0 → cloudfall-0.6.0}/examples/render-demo/README.md +0 -0
  401. {cloudfall-0.5.0 → cloudfall-0.6.0}/examples/render-demo/pyproject.toml +0 -0
  402. {cloudfall-0.5.0 → cloudfall-0.6.0}/examples/render-demo/src/demo/__init__.py +0 -0
  403. {cloudfall-0.5.0 → cloudfall-0.6.0}/examples/render-demo/src/demo/asgi.py +0 -0
  404. {cloudfall-0.5.0 → cloudfall-0.6.0}/examples/render-demo/uv.lock +0 -0
  405. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/__init__.py +0 -0
  406. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/__main__.py +0 -0
  407. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/ansible_api.py +0 -0
  408. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/ansible_reader.py +0 -0
  409. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/cutover.py +0 -0
  410. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/dashboard.py +0 -0
  411. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/domain.py +0 -0
  412. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/inventory.py +0 -0
  413. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/migrate.py +0 -0
  414. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/observation.py +0 -0
  415. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/operations.py +0 -0
  416. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/py.typed +0 -0
  417. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/resources.py +0 -0
  418. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/service_evidence.py +0 -0
  419. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/src/cloudfall/validation.py +0 -0
  420. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_cutover.py +0 -0
  421. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_data_migration.py +0 -0
  422. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_operations_dashboard.py +0 -0
  423. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_resources.py +0 -0
  424. {cloudfall-0.5.0 → cloudfall-0.6.0}/sdk/tests/test_secrets.py +0 -0
  425. {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 a small fleet run by an AI agent.
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 proposed next step, none of which is built.
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-mcp` server
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