simplicio-cli 0.18.2__tar.gz → 0.18.4__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 (500) hide show
  1. {simplicio_cli-0.18.2/simplicio_cli.egg-info → simplicio_cli-0.18.4}/PKG-INFO +2 -2
  2. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/pyproject.toml +2 -2
  3. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/__init__.py +5 -5
  4. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/checkpoint_store.py +2 -1
  5. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/cli.py +8 -1
  6. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/codex_hooks.py +65 -65
  7. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/delivery_auth.py +2 -3
  8. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/effect_transaction.py +2 -4
  9. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/execution_mode.py +1 -3
  10. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/hardware.py +7 -3
  11. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/litert_cli.py +1 -1
  12. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/map_view.py +7 -3
  13. simplicio_cli-0.18.4/simplicio/mutation_dispatch.py +45 -0
  14. simplicio_cli-0.18.4/simplicio/mutation_lifecycle.py +96 -0
  15. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/mutation_worker.py +59 -19
  16. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/pipeline.py +4 -3
  17. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/pipeline_stages.py +6 -5
  18. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/pipeline_task_result.py +1 -5
  19. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/plan_compiler/execution_contracts.py +7 -19
  20. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/plan_compiler/mapper_context.py +20 -6
  21. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/prism_envelope.py +3 -4
  22. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/prism_receipts.py +4 -4
  23. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/prism_transaction.py +2 -2
  24. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/progressive_verify.py +4 -3
  25. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/runtime_contracts.py +1 -1
  26. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/cli.py +3 -1
  27. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/stage_abi.py +6 -4
  28. simplicio_cli-0.18.4/simplicio/stage_main.py +52 -0
  29. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/task_operator.py +457 -345
  30. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/utils/fs.py +18 -1
  31. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/write_set_lock.py +2 -2
  32. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4/simplicio_cli.egg-info}/PKG-INFO +2 -2
  33. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio_cli.egg-info/SOURCES.txt +0 -18
  34. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio_cli.egg-info/requires.txt +1 -1
  35. simplicio_cli-0.18.2/simplicio/mutation_dispatch.py +0 -35
  36. simplicio_cli-0.18.2/simplicio/mutation_lifecycle.py +0 -58
  37. simplicio_cli-0.18.2/simplicio/stage_main.py +0 -34
  38. simplicio_cli-0.18.2/simplicio/templates/stacks/py-cli/tree/src/app/__pycache__/__init__.cpython-314.pyc +0 -0
  39. simplicio_cli-0.18.2/simplicio/templates/stacks/py-cli/tree/src/app/__pycache__/cli.cpython-314.pyc +0 -0
  40. simplicio_cli-0.18.2/simplicio/templates/stacks/py-cli/tree/tests/__pycache__/test_cli.cpython-314.pyc +0 -0
  41. simplicio_cli-0.18.2/simplicio/templates/stacks/py-django/tree/__pycache__/manage.cpython-314.pyc +0 -0
  42. simplicio_cli-0.18.2/simplicio/templates/stacks/py-django/tree/app/__pycache__/__init__.cpython-314.pyc +0 -0
  43. simplicio_cli-0.18.2/simplicio/templates/stacks/py-django/tree/app/__pycache__/apps.cpython-314.pyc +0 -0
  44. simplicio_cli-0.18.2/simplicio/templates/stacks/py-django/tree/app/__pycache__/tests.cpython-314.pyc +0 -0
  45. simplicio_cli-0.18.2/simplicio/templates/stacks/py-django/tree/app/__pycache__/views.cpython-314.pyc +0 -0
  46. simplicio_cli-0.18.2/simplicio/templates/stacks/py-django/tree/config/__pycache__/__init__.cpython-314.pyc +0 -0
  47. simplicio_cli-0.18.2/simplicio/templates/stacks/py-django/tree/config/__pycache__/asgi.cpython-314.pyc +0 -0
  48. simplicio_cli-0.18.2/simplicio/templates/stacks/py-django/tree/config/__pycache__/settings.cpython-314.pyc +0 -0
  49. simplicio_cli-0.18.2/simplicio/templates/stacks/py-django/tree/config/__pycache__/urls.cpython-314.pyc +0 -0
  50. simplicio_cli-0.18.2/simplicio/templates/stacks/py-django/tree/config/__pycache__/wsgi.cpython-314.pyc +0 -0
  51. simplicio_cli-0.18.2/simplicio/templates/stacks/py-fastapi/tree/src/__pycache__/main.cpython-314.pyc +0 -0
  52. simplicio_cli-0.18.2/simplicio/templates/stacks/py-fastapi/tree/src/api/__pycache__/__init__.cpython-314.pyc +0 -0
  53. simplicio_cli-0.18.2/simplicio/templates/stacks/py-fastapi/tree/tests/__pycache__/test_health.cpython-314.pyc +0 -0
  54. simplicio_cli-0.18.2/simplicio/templates/stacks/py-flask/tree/src/__pycache__/app.cpython-314.pyc +0 -0
  55. simplicio_cli-0.18.2/simplicio/templates/stacks/py-flask/tree/tests/__pycache__/test_health.cpython-314.pyc +0 -0
  56. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/LICENSE +0 -0
  57. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/README.md +0 -0
  58. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/setup.cfg +0 -0
  59. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/_cache.py +0 -0
  60. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/adaptive.py +0 -0
  61. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/atomic_execution.py +0 -0
  62. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/bench.py +0 -0
  63. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/cache.py +0 -0
  64. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/cache_cli.py +0 -0
  65. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/changeset_v2.py +0 -0
  66. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/__init__.py +0 -0
  67. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/_shared.py +0 -0
  68. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/bench.py +0 -0
  69. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/cache.py +0 -0
  70. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/changeset.py +0 -0
  71. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/claims.py +0 -0
  72. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/detect.py +0 -0
  73. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/doctor.py +0 -0
  74. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/edit.py +0 -0
  75. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/env_export.py +0 -0
  76. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/fast.py +0 -0
  77. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/file.py +0 -0
  78. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/file_read.py +0 -0
  79. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/gate.py +0 -0
  80. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/index.py +0 -0
  81. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/init.py +0 -0
  82. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/inspect.py +0 -0
  83. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/intake.py +0 -0
  84. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/memory.py +0 -0
  85. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/nest.py +0 -0
  86. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/prototype.py +0 -0
  87. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/run.py +0 -0
  88. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/runtime.py +0 -0
  89. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/scenarios/claims-gate.json +0 -0
  90. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/score_skill.py +0 -0
  91. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/smoke.py +0 -0
  92. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/status.py +0 -0
  93. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/task.py +0 -0
  94. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/test.py +0 -0
  95. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/test_run.py +0 -0
  96. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/token.py +0 -0
  97. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/commands/versions.py +0 -0
  98. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/component_manifest.py +0 -0
  99. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/detect.py +0 -0
  100. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/doctor.py +0 -0
  101. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/dod.py +0 -0
  102. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/ecosystem.py +0 -0
  103. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/evidence_ledger.py +0 -0
  104. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/execution_contract.py +0 -0
  105. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/execution_receipts.py +0 -0
  106. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/fast_contracts.py +0 -0
  107. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/hbp.py +0 -0
  108. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/hub_adapter.py +0 -0
  109. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/init.py +0 -0
  110. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/intent.py +0 -0
  111. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/legacy_json_adapter.py +0 -0
  112. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/local_models.py +0 -0
  113. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/mapper.py +0 -0
  114. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/mapper_api.py +0 -0
  115. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/mechanical_edit.py +0 -0
  116. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/memory_store.py +0 -0
  117. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/observability.py +0 -0
  118. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/orchestrator/__init__.py +0 -0
  119. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/orchestrator/cost_governor.py +0 -0
  120. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/orchestrator/feature.py +0 -0
  121. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/orchestrator/multi_task.py +0 -0
  122. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/orientation_plan.py +0 -0
  123. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/pipeline_fixers.py +0 -0
  124. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/pipeline_integrated.py +0 -0
  125. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/plan_compiler/__init__.py +0 -0
  126. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/plan_compiler/authority.py +0 -0
  127. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/plan_compiler/canonical_hash.py +0 -0
  128. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/plan_compiler/compat_adapter.py +0 -0
  129. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/plan_compiler/compile_task_spec.py +0 -0
  130. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/plan_compiler/conformance.py +0 -0
  131. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/plan_compiler/effect_sink.py +0 -0
  132. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/plan_compiler/errors.py +0 -0
  133. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/plan_compiler/models.py +0 -0
  134. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/plan_compiler/runtime_effect_sink.py +0 -0
  135. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/plan_discovery.py +0 -0
  136. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/precedent.py +0 -0
  137. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/prompt.py +0 -0
  138. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/prompt_envelope.py +0 -0
  139. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/provider_cache_receipt.py +0 -0
  140. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/providers.py +0 -0
  141. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/py.typed +0 -0
  142. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/runtime_async.py +0 -0
  143. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/runtime_bridge.py +0 -0
  144. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/runtime_env.py +0 -0
  145. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/__init__.py +0 -0
  146. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/_pipeline_adapter.py +0 -0
  147. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/codegen/__init__.py +0 -0
  148. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/codegen/go_gin.py +0 -0
  149. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/codegen/markdown_document.py +0 -0
  150. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/codegen/php_laravel.py +0 -0
  151. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/codegen/python_cst.py +0 -0
  152. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/codegen/python_fastapi.py +0 -0
  153. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/codegen/python_orm.py +0 -0
  154. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/codegen/python_pydantic.py +0 -0
  155. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/codegen/python_pytest.py +0 -0
  156. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/codegen/registry.py +0 -0
  157. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/codegen/rust_axum.py +0 -0
  158. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/codegen/types.py +0 -0
  159. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/codegen/typescript_next_page.py +0 -0
  160. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/codegen/typescript_next_route.py +0 -0
  161. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/executor.py +0 -0
  162. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/plan_schema.py +0 -0
  163. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/planner.py +0 -0
  164. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/recipes.py +0 -0
  165. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/skill_opt.py +0 -0
  166. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/scratch/stack_registry.py +0 -0
  167. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/skill_router.py +0 -0
  168. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/sprint_loader.py +0 -0
  169. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/standalone_migration.py +0 -0
  170. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/task_spec.py +0 -0
  171. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/SKILL.md +0 -0
  172. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/go-gin/admin-crud.yaml +0 -0
  173. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/go-gin/auth-jwt.yaml +0 -0
  174. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/go-gin/crud-resource.yaml +0 -0
  175. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/php-laravel/admin-crud.yaml +0 -0
  176. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/php-laravel/auth-jwt.yaml +0 -0
  177. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/php-laravel/crud-resource.yaml +0 -0
  178. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/php-vanilla/docs-marker.yaml +0 -0
  179. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/py-fastapi/admin-crud.yaml +0 -0
  180. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/py-fastapi/auth-jwt.yaml +0 -0
  181. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/py-fastapi/background-worker.yaml +0 -0
  182. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/py-fastapi/crud-resource.yaml +0 -0
  183. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/py-fastapi/file-upload.yaml +0 -0
  184. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/py-fastapi/oauth-integration.yaml +0 -0
  185. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/py-fastapi/scheduled-job.yaml +0 -0
  186. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/py-fastapi/websocket.yaml +0 -0
  187. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/rust-axum/admin-crud.yaml +0 -0
  188. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/rust-axum/auth-jwt.yaml +0 -0
  189. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/rust-axum/crud-resource.yaml +0 -0
  190. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/ts-nextjs/admin-crud.yaml +0 -0
  191. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/ts-nextjs/auth-jwt.yaml +0 -0
  192. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/recipes/ts-nextjs/crud-resource.yaml +0 -0
  193. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/simplicio_prompt.md +0 -0
  194. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/bash-cli/README.md +0 -0
  195. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/bash-cli/practices.md +0 -0
  196. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/bash-cli/stack.json +0 -0
  197. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/bash-cli/tree/README.md +0 -0
  198. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/bash-cli/tree/bin/app.sh +0 -0
  199. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/bash-cli/tree/test/app.bats +0 -0
  200. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/bash-cli/verify.json +0 -0
  201. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-aspnet/README.md +0 -0
  202. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-aspnet/practices.md +0 -0
  203. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-aspnet/stack.json +0 -0
  204. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-aspnet/tree/README.md +0 -0
  205. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-aspnet/tree/src/App.Api/App.Api.csproj +0 -0
  206. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-aspnet/tree/src/App.Api/Program.cs +0 -0
  207. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-aspnet/tree/tests/App.Tests/App.Tests.csproj +0 -0
  208. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-aspnet/tree/tests/App.Tests/HealthTests.cs +0 -0
  209. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-aspnet/verify.json +0 -0
  210. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-blazor/README.md +0 -0
  211. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-blazor/practices.md +0 -0
  212. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-blazor/stack.json +0 -0
  213. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-blazor/tree/README.md +0 -0
  214. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/App.Web.csproj +0 -0
  215. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Components/App.razor +0 -0
  216. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Components/Pages/Home.razor +0 -0
  217. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Program.cs +0 -0
  218. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-blazor/tree/tests/App.Tests/App.Tests.csproj +0 -0
  219. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-blazor/tree/tests/App.Tests/HealthTests.cs +0 -0
  220. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/csharp-blazor/verify.json +0 -0
  221. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/dart-flutter/README.md +0 -0
  222. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/dart-flutter/practices.md +0 -0
  223. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/dart-flutter/stack.json +0 -0
  224. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/dart-flutter/tree/README.md +0 -0
  225. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/dart-flutter/tree/lib/main.dart +0 -0
  226. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/dart-flutter/tree/pubspec.yaml +0 -0
  227. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/dart-flutter/tree/test/widget_test.dart +0 -0
  228. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/dart-flutter/verify.json +0 -0
  229. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/elixir-phoenix/README.md +0 -0
  230. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/elixir-phoenix/practices.md +0 -0
  231. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/elixir-phoenix/stack.json +0 -0
  232. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/elixir-phoenix/tree/README.md +0 -0
  233. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/elixir-phoenix/tree/config/config.exs +0 -0
  234. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app/application.ex +0 -0
  235. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/controllers/health_controller.ex +0 -0
  236. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/endpoint.ex +0 -0
  237. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/router.ex +0 -0
  238. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/elixir-phoenix/tree/mix.exs +0 -0
  239. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/elixir-phoenix/tree/test/health_controller_test.exs +0 -0
  240. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/elixir-phoenix/tree/test/test_helper.exs +0 -0
  241. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/elixir-phoenix/verify.json +0 -0
  242. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-cli/README.md +0 -0
  243. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-cli/practices.md +0 -0
  244. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-cli/stack.json +0 -0
  245. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-cli/tree/README.md +0 -0
  246. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-cli/tree/cmd/root.go +0 -0
  247. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-cli/tree/cmd/root_test.go +0 -0
  248. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-cli/tree/go.mod +0 -0
  249. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-cli/tree/main.go +0 -0
  250. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-cli/verify.json +0 -0
  251. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-echo/README.md +0 -0
  252. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-echo/practices.md +0 -0
  253. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-echo/stack.json +0 -0
  254. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-echo/tree/README.md +0 -0
  255. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-echo/tree/cmd/server/main.go +0 -0
  256. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-echo/tree/go.mod +0 -0
  257. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-echo/tree/internal/http/router.go +0 -0
  258. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-echo/tree/internal/http/router_test.go +0 -0
  259. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-echo/verify.json +0 -0
  260. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-gin/README.md +0 -0
  261. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-gin/practices.md +0 -0
  262. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-gin/stack.json +0 -0
  263. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-gin/tree/README.md +0 -0
  264. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-gin/tree/cmd/server/main.go +0 -0
  265. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-gin/tree/go.mod +0 -0
  266. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-gin/tree/internal/http/router.go +0 -0
  267. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-gin/tree/internal/http/router_test.go +0 -0
  268. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/go-gin/verify.json +0 -0
  269. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/java-spring/README.md +0 -0
  270. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/java-spring/practices.md +0 -0
  271. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/java-spring/stack.json +0 -0
  272. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/java-spring/tree/README.md +0 -0
  273. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/java-spring/tree/build.gradle.kts +0 -0
  274. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/java-spring/tree/settings.gradle.kts +0 -0
  275. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/java-spring/tree/src/main/java/com/example/Application.java +0 -0
  276. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/java-spring/tree/src/main/java/com/example/HealthController.java +0 -0
  277. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/java-spring/tree/src/test/java/com/example/HealthControllerTest.java +0 -0
  278. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/java-spring/verify.json +0 -0
  279. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/js-express/README.md +0 -0
  280. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/js-express/practices.md +0 -0
  281. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/js-express/stack.json +0 -0
  282. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/js-express/tree/README.md +0 -0
  283. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/js-express/tree/package.json +0 -0
  284. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/js-express/tree/src/app.js +0 -0
  285. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/js-express/tree/src/server.js +0 -0
  286. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/js-express/tree/tests/health.test.js +0 -0
  287. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/js-express/verify.json +0 -0
  288. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-android/README.md +0 -0
  289. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-android/practices.md +0 -0
  290. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-android/stack.json +0 -0
  291. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-android/tree/README.md +0 -0
  292. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-android/tree/app/build.gradle.kts +0 -0
  293. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/AndroidManifest.xml +0 -0
  294. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/java/com/example/app/MainActivity.kt +0 -0
  295. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/res/values/styles.xml +0 -0
  296. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-android/tree/app/src/test/java/com/example/app/SmokeTest.kt +0 -0
  297. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-android/tree/build.gradle.kts +0 -0
  298. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-android/tree/settings.gradle.kts +0 -0
  299. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-android/verify.json +0 -0
  300. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-ktor/README.md +0 -0
  301. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-ktor/practices.md +0 -0
  302. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-ktor/stack.json +0 -0
  303. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-ktor/tree/README.md +0 -0
  304. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-ktor/tree/build.gradle.kts +0 -0
  305. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-ktor/tree/settings.gradle.kts +0 -0
  306. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-ktor/tree/src/main/kotlin/com/example/Application.kt +0 -0
  307. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-ktor/tree/src/test/kotlin/com/example/ApplicationTest.kt +0 -0
  308. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-ktor/verify.json +0 -0
  309. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-spring/README.md +0 -0
  310. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-spring/practices.md +0 -0
  311. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-spring/stack.json +0 -0
  312. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-spring/tree/README.md +0 -0
  313. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-spring/tree/build.gradle.kts +0 -0
  314. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-spring/tree/settings.gradle.kts +0 -0
  315. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-spring/tree/src/main/kotlin/com/example/Application.kt +0 -0
  316. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-spring/tree/src/main/kotlin/com/example/HealthController.kt +0 -0
  317. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-spring/tree/src/test/kotlin/com/example/HealthControllerTest.kt +0 -0
  318. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/kotlin-spring/verify.json +0 -0
  319. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-laravel/README.md +0 -0
  320. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-laravel/practices.md +0 -0
  321. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-laravel/stack.json +0 -0
  322. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-laravel/tree/README.md +0 -0
  323. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-laravel/tree/artisan +0 -0
  324. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-laravel/tree/bootstrap/app.php +0 -0
  325. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-laravel/tree/composer.json +0 -0
  326. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-laravel/tree/phpunit.xml +0 -0
  327. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-laravel/tree/routes/api.php +0 -0
  328. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-laravel/tree/routes/console.php +0 -0
  329. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-laravel/tree/tests/Feature/HealthTest.php +0 -0
  330. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-laravel/tree/tests/TestCase.php +0 -0
  331. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-laravel/verify.json +0 -0
  332. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-symfony/README.md +0 -0
  333. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-symfony/practices.md +0 -0
  334. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-symfony/stack.json +0 -0
  335. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-symfony/tree/README.md +0 -0
  336. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-symfony/tree/composer.json +0 -0
  337. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-symfony/tree/src/Controller/HealthController.php +0 -0
  338. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-symfony/tree/tests/HealthControllerTest.php +0 -0
  339. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-symfony/verify.json +0 -0
  340. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-vanilla/README.md +0 -0
  341. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-vanilla/practices.md +0 -0
  342. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-vanilla/stack.json +0 -0
  343. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-vanilla/tree/README.md +0 -0
  344. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-vanilla/tree/composer.json +0 -0
  345. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-vanilla/tree/phpunit.xml +0 -0
  346. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-vanilla/tree/src/Health.php +0 -0
  347. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-vanilla/tree/tests/HealthTest.php +0 -0
  348. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/php-vanilla/verify.json +0 -0
  349. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-cli/README.md +0 -0
  350. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-cli/practices.md +0 -0
  351. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-cli/stack.json +0 -0
  352. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-cli/tree/README.md +0 -0
  353. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-cli/tree/pyproject.toml +0 -0
  354. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-cli/tree/src/app/__init__.py +0 -0
  355. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-cli/tree/src/app/cli.py +0 -0
  356. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-cli/tree/tests/test_cli.py +0 -0
  357. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-cli/verify.json +0 -0
  358. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-django/README.md +0 -0
  359. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-django/practices.md +0 -0
  360. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-django/stack.json +0 -0
  361. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-django/tree/README.md +0 -0
  362. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-django/tree/app/__init__.py +0 -0
  363. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-django/tree/app/apps.py +0 -0
  364. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-django/tree/app/tests.py +0 -0
  365. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-django/tree/app/views.py +0 -0
  366. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-django/tree/config/__init__.py +0 -0
  367. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-django/tree/config/asgi.py +0 -0
  368. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-django/tree/config/settings.py +0 -0
  369. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-django/tree/config/urls.py +0 -0
  370. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-django/tree/config/wsgi.py +0 -0
  371. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-django/tree/manage.py +0 -0
  372. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-django/tree/pyproject.toml +0 -0
  373. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-django/verify.json +0 -0
  374. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-fastapi/README.md +0 -0
  375. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-fastapi/practices.md +0 -0
  376. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-fastapi/stack.json +0 -0
  377. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-fastapi/tree/.gitignore +0 -0
  378. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-fastapi/tree/README.template.md +0 -0
  379. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-fastapi/tree/pyproject.toml +0 -0
  380. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-fastapi/tree/ruff.toml +0 -0
  381. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-fastapi/tree/src/api/__init__.py +0 -0
  382. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-fastapi/tree/src/main.py +0 -0
  383. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-fastapi/tree/tests/test_health.py +0 -0
  384. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-fastapi/verify.json +0 -0
  385. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-flask/README.md +0 -0
  386. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-flask/practices.md +0 -0
  387. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-flask/stack.json +0 -0
  388. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-flask/tree/README.md +0 -0
  389. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-flask/tree/pyproject.toml +0 -0
  390. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-flask/tree/ruff.toml +0 -0
  391. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-flask/tree/src/app.py +0 -0
  392. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-flask/tree/tests/test_health.py +0 -0
  393. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/py-flask/verify.json +0 -0
  394. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/react-vite/README.md +0 -0
  395. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/react-vite/practices.md +0 -0
  396. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/react-vite/stack.json +0 -0
  397. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/react-vite/tree/README.md +0 -0
  398. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/react-vite/tree/index.html +0 -0
  399. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/react-vite/tree/package.json +0 -0
  400. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/react-vite/tree/src/App.test.tsx +0 -0
  401. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/react-vite/tree/src/App.tsx +0 -0
  402. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/react-vite/tree/src/main.tsx +0 -0
  403. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/react-vite/tree/tsconfig.json +0 -0
  404. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/react-vite/verify.json +0 -0
  405. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ruby-rails/README.md +0 -0
  406. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ruby-rails/practices.md +0 -0
  407. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ruby-rails/stack.json +0 -0
  408. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ruby-rails/tree/Gemfile +0 -0
  409. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ruby-rails/tree/README.md +0 -0
  410. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ruby-rails/tree/app/controllers/health_controller.rb +0 -0
  411. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ruby-rails/tree/bin/rails +0 -0
  412. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ruby-rails/tree/config/application.rb +0 -0
  413. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ruby-rails/tree/config/boot.rb +0 -0
  414. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ruby-rails/tree/config/routes.rb +0 -0
  415. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ruby-rails/tree/test/controllers/health_controller_test.rb +0 -0
  416. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ruby-rails/tree/test/test_helper.rb +0 -0
  417. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ruby-rails/verify.json +0 -0
  418. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-axum/README.md +0 -0
  419. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-axum/practices.md +0 -0
  420. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-axum/stack.json +0 -0
  421. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-axum/tree/Cargo.toml +0 -0
  422. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-axum/tree/README.md +0 -0
  423. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-axum/tree/src/main.rs +0 -0
  424. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-axum/verify.json +0 -0
  425. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-cli/README.md +0 -0
  426. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-cli/practices.md +0 -0
  427. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-cli/stack.json +0 -0
  428. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-cli/tree/Cargo.toml +0 -0
  429. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-cli/tree/README.md +0 -0
  430. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-cli/tree/src/main.rs +0 -0
  431. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-cli/verify.json +0 -0
  432. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-leptos/README.md +0 -0
  433. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-leptos/practices.md +0 -0
  434. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-leptos/stack.json +0 -0
  435. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-leptos/tree/Cargo.toml +0 -0
  436. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-leptos/tree/README.md +0 -0
  437. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-leptos/tree/src/main.rs +0 -0
  438. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/rust-leptos/verify.json +0 -0
  439. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/swift-ios/README.md +0 -0
  440. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/swift-ios/practices.md +0 -0
  441. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/swift-ios/stack.json +0 -0
  442. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/swift-ios/tree/README.md +0 -0
  443. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/swift-ios/tree/Sources/App/App.swift +0 -0
  444. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/swift-ios/tree/Sources/App/ContentView.swift +0 -0
  445. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/swift-ios/tree/Tests/AppTests/AppTests.swift +0 -0
  446. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/swift-ios/verify.json +0 -0
  447. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/swift-vapor/README.md +0 -0
  448. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/swift-vapor/practices.md +0 -0
  449. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/swift-vapor/stack.json +0 -0
  450. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/swift-vapor/tree/Package.swift +0 -0
  451. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/swift-vapor/tree/README.md +0 -0
  452. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/swift-vapor/tree/Sources/App/main.swift +0 -0
  453. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/swift-vapor/tree/Tests/AppTests/HealthTests.swift +0 -0
  454. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/swift-vapor/verify.json +0 -0
  455. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nestjs/README.md +0 -0
  456. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nestjs/practices.md +0 -0
  457. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nestjs/stack.json +0 -0
  458. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nestjs/tree/README.md +0 -0
  459. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nestjs/tree/package.json +0 -0
  460. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nestjs/tree/src/app.controller.spec.ts +0 -0
  461. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nestjs/tree/src/app.controller.ts +0 -0
  462. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nestjs/tree/src/app.module.ts +0 -0
  463. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nestjs/tree/src/main.ts +0 -0
  464. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nestjs/tree/tsconfig.json +0 -0
  465. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nestjs/verify.json +0 -0
  466. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nextjs/README.md +0 -0
  467. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nextjs/practices.md +0 -0
  468. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nextjs/stack.json +0 -0
  469. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nextjs/tree/.eslintrc.json +0 -0
  470. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nextjs/tree/.gitignore +0 -0
  471. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nextjs/tree/next.config.mjs +0 -0
  472. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nextjs/tree/package.json +0 -0
  473. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nextjs/tree/pnpm-workspace.yaml +0 -0
  474. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nextjs/tree/src/app/layout.tsx +0 -0
  475. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nextjs/tree/src/app/page.tsx +0 -0
  476. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nextjs/tree/tsconfig.json +0 -0
  477. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-nextjs/verify.json +0 -0
  478. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-remix/README.md +0 -0
  479. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-remix/practices.md +0 -0
  480. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-remix/stack.json +0 -0
  481. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-remix/tree/README.md +0 -0
  482. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-remix/tree/app/root.tsx +0 -0
  483. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-remix/tree/app/routes/_index.tsx +0 -0
  484. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-remix/tree/app/routes/health.test.ts +0 -0
  485. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-remix/tree/app/routes/health.ts +0 -0
  486. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-remix/tree/package.json +0 -0
  487. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-remix/tree/tsconfig.json +0 -0
  488. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/stacks/ts-remix/verify.json +0 -0
  489. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/templates/userpromptsubmit-hook.sh +0 -0
  490. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/token_primitives.py +0 -0
  491. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/toon_codec.py +0 -0
  492. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/transaction.py +0 -0
  493. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/utils/__init__.py +0 -0
  494. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/utils/cache.py +0 -0
  495. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/utils/http_client.py +0 -0
  496. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio/utils/serialization.py +0 -0
  497. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio_cli.egg-info/dependency_links.txt +0 -0
  498. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio_cli.egg-info/entry_points.txt +0 -0
  499. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/simplicio_cli.egg-info/top_level.txt +0 -0
  500. {simplicio_cli-0.18.2 → simplicio_cli-0.18.4}/tests/test_json_boundaries.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: simplicio-cli
3
- Version: 0.18.2
3
+ Version: 0.18.4
4
4
  Summary: Deterministic task-to-code contract and verification CLI. It never executes or provisions an LLM.
5
5
  Author-email: Wesley Simplicio <wesleybob4@gmail.com>
6
6
  License: MIT
@@ -28,7 +28,7 @@ Requires-Python: >=3.10
28
28
  Description-Content-Type: text/markdown
29
29
  License-File: LICENSE
30
30
  Requires-Dist: numpy>=2.1.0
31
- Requires-Dist: simplicio-mapper>=0.26.1
31
+ Requires-Dist: simplicio-mapper>=0.26.2
32
32
  Requires-Dist: simplicio-prompt>=1.14.1
33
33
  Requires-Dist: httpx>=0.28.1
34
34
  Requires-Dist: orjson>=3.11.9
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "simplicio-cli"
3
- version = "0.18.2"
3
+ version = "0.18.4"
4
4
  description = "Deterministic task-to-code contract and verification CLI. It never executes or provisions an LLM."
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -45,7 +45,7 @@ classifiers = [
45
45
  # (generated, `--check`-able) for the full graph and #99 for the audit.
46
46
  dependencies = [
47
47
  "numpy>=2.1.0",
48
- "simplicio-mapper>=0.26.1",
48
+ "simplicio-mapper>=0.26.2",
49
49
  "simplicio-prompt>=1.14.1",
50
50
  "httpx>=0.28.1",
51
51
  "orjson>=3.11.9",
@@ -1,5 +1,5 @@
1
- __version__ = "0.18.2"
2
-
3
- from .mapper_api import mapper_module, mapper_version
4
-
5
- __all__ = ["__version__", "mapper_module", "mapper_version"]
1
+ __version__ = "0.18.4"
2
+
3
+ from .mapper_api import mapper_module, mapper_version
4
+
5
+ __all__ = ["__version__", "mapper_module", "mapper_version"]
@@ -6,8 +6,9 @@ import hashlib
6
6
  import json
7
7
  import os
8
8
  import shutil
9
+ from collections.abc import Sequence
9
10
  from pathlib import Path
10
- from typing import Any, Sequence
11
+ from typing import Any
11
12
 
12
13
 
13
14
  class CheckpointError(RuntimeError):
@@ -541,7 +541,12 @@ def _build_parser() -> argparse.ArgumentParser:
541
541
  p_runtime_verify = runtime_sub.add_parser(
542
542
  "verify", help="verify the real reserved Simplicio Runtime identity and capabilities"
543
543
  )
544
- p_runtime_verify.add_argument("--timeout", type=int, default=30)
544
+ p_runtime_verify.add_argument(
545
+ "--timeout",
546
+ type=int,
547
+ default=None,
548
+ help="optional Runtime probe deadline in seconds (default: no deadline)",
549
+ )
545
550
  p_runtime_capabilities = runtime_sub.add_parser("capabilities")
546
551
  p_runtime_capabilities.add_argument("--root", default=".")
547
552
  p_runtime_capabilities.add_argument("--mode", choices=["auto", "integrated", "standalone"])
@@ -692,6 +697,7 @@ def _main_unwrapped(argv=None):
692
697
 
693
698
  # Stage ABI mutations fail closed before verbosity/parser/dispatch can run.
694
699
  from .mutation_dispatch import guard_mutable_dispatch
700
+
695
701
  guard_mutable_dispatch(argv)
696
702
 
697
703
  quiet, verbose, argv = _extract_global_verbosity(argv)
@@ -769,6 +775,7 @@ def main(argv=None):
769
775
  """Run legacy commands directly or wrap Stage ABI mutations pre-to-post."""
770
776
  args = list(sys.argv[1:] if argv is None else argv)
771
777
  from .stage_main import run_stage_or_legacy
778
+
772
779
  return run_stage_or_legacy(args, _main_unwrapped)
773
780
 
774
781
 
@@ -1,65 +1,65 @@
1
- """Portable Codex hook bridge for the installed Simplicio CLI.
2
-
3
- Codex sends hook context as JSON on stdin. This module deliberately keeps
4
- the hook observational: malformed input, unsupported events, and detector
5
- errors never block the host agent. UserPromptSubmit is the one event with a
6
- useful side effect: it emits the existing deterministic task hint on stderr.
7
- """
8
-
9
- from __future__ import annotations
10
-
11
- import json
12
- import os
13
- import sys
14
- from typing import Any
15
-
16
- from .detect import detect
17
-
18
-
19
- def _payload(raw: str) -> dict[str, Any]:
20
- if not raw.strip():
21
- return {}
22
- try:
23
- value = json.loads(raw)
24
- except (TypeError, ValueError):
25
- return {}
26
- return value if isinstance(value, dict) else {}
27
-
28
-
29
- def _event(payload: dict[str, Any]) -> str:
30
- value = payload.get("hook_event_name") or payload.get("event") or payload.get("type")
31
- return str(value or "").strip().lower()
32
-
33
-
34
- def _prompt(payload: dict[str, Any]) -> str:
35
- for key in ("prompt", "user_prompt", "text"):
36
- value = payload.get(key)
37
- if isinstance(value, str):
38
- return value
39
- return ""
40
-
41
-
42
- def main() -> int:
43
- if os.environ.get("SIMPLICIO_HOOK_GUARD"):
44
- return 0
45
-
46
- payload = _payload(sys.stdin.read())
47
- if _event(payload) not in {"userpromptsubmit", "user_prompt_submit"}:
48
- return 0
49
-
50
- prompt = _prompt(payload)
51
- if not prompt:
52
- return 0
53
-
54
- try:
55
- result = detect(prompt)
56
- if result.is_code_task:
57
- print(result.hint, file=sys.stderr)
58
- except Exception:
59
- # Hooks must never take down or block the host agent.
60
- return 0
61
- return 0
62
-
63
-
64
- if __name__ == "__main__":
65
- raise SystemExit(main())
1
+ """Portable Codex hook bridge for the installed Simplicio CLI.
2
+
3
+ Codex sends hook context as JSON on stdin. This module deliberately keeps
4
+ the hook observational: malformed input, unsupported events, and detector
5
+ errors never block the host agent. UserPromptSubmit is the one event with a
6
+ useful side effect: it emits the existing deterministic task hint on stderr.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ import json
12
+ import os
13
+ import sys
14
+ from typing import Any
15
+
16
+ from .detect import detect
17
+
18
+
19
+ def _payload(raw: str) -> dict[str, Any]:
20
+ if not raw.strip():
21
+ return {}
22
+ try:
23
+ value = json.loads(raw)
24
+ except (TypeError, ValueError):
25
+ return {}
26
+ return value if isinstance(value, dict) else {}
27
+
28
+
29
+ def _event(payload: dict[str, Any]) -> str:
30
+ value = payload.get("hook_event_name") or payload.get("event") or payload.get("type")
31
+ return str(value or "").strip().lower()
32
+
33
+
34
+ def _prompt(payload: dict[str, Any]) -> str:
35
+ for key in ("prompt", "user_prompt", "text"):
36
+ value = payload.get(key)
37
+ if isinstance(value, str):
38
+ return value
39
+ return ""
40
+
41
+
42
+ def main() -> int:
43
+ if os.environ.get("SIMPLICIO_HOOK_GUARD"):
44
+ return 0
45
+
46
+ payload = _payload(sys.stdin.read())
47
+ if _event(payload) not in {"userpromptsubmit", "user_prompt_submit"}:
48
+ return 0
49
+
50
+ prompt = _prompt(payload)
51
+ if not prompt:
52
+ return 0
53
+
54
+ try:
55
+ result = detect(prompt)
56
+ if result.is_code_task:
57
+ sys.stderr.write(f"{result.hint}\n")
58
+ except Exception:
59
+ # Hooks must never take down or block the host agent.
60
+ return 0
61
+ return 0
62
+
63
+
64
+ if __name__ == "__main__":
65
+ raise SystemExit(main())
@@ -2,11 +2,10 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- import hashlib
6
- import json
7
5
  import time
6
+ from collections.abc import Callable, Mapping
8
7
  from dataclasses import dataclass, field
9
- from typing import Any, Callable, Mapping, Sequence
8
+ from typing import Any
10
9
 
11
10
  from simplicio.plan_compiler.canonical_hash import canonical_hash
12
11
 
@@ -58,8 +58,7 @@ class EffectTransaction:
58
58
  with self._db() as database:
59
59
  database.execute("BEGIN IMMEDIATE")
60
60
  database.execute(
61
- "UPDATE transactions SET state=?, receipt=COALESCE(?, receipt) "
62
- "WHERE idempotency_key=?",
61
+ "UPDATE transactions SET state=?, receipt=COALESCE(?, receipt) WHERE idempotency_key=?",
63
62
  (state, encoded, key),
64
63
  )
65
64
  database.execute(
@@ -82,8 +81,7 @@ class EffectTransaction:
82
81
  with self._db() as database:
83
82
  database.execute("BEGIN IMMEDIATE")
84
83
  row = database.execute(
85
- "SELECT change_set_hash,state,receipt FROM transactions "
86
- "WHERE idempotency_key=?",
84
+ "SELECT change_set_hash,state,receipt FROM transactions WHERE idempotency_key=?",
87
85
  (key,),
88
86
  ).fetchone()
89
87
  if row:
@@ -240,9 +240,7 @@ def prepare_execution_inputs(
240
240
  # Previously the path arguments were silently ignored in this branch, so
241
241
  # Loop's local degraded context never reached the task precondition gate.
242
242
  resolved_pack = (
243
- context_pack
244
- if context_pack is not None
245
- else _load_context_pack(root, context_pack_path)
243
+ context_pack if context_pack is not None else _load_context_pack(root, context_pack_path)
246
244
  )
247
245
  return PreparedExecutionInputs(
248
246
  context_snapshot,
@@ -65,7 +65,7 @@ def _ram_macos() -> float | None:
65
65
  if out.returncode != 0:
66
66
  return None
67
67
  return int(out.stdout.strip()) / (1024**3)
68
- except (FileNotFoundError, subprocess.TimeoutExpired, ValueError):
68
+ except (OSError, subprocess.TimeoutExpired, ValueError):
69
69
  return None
70
70
 
71
71
 
@@ -95,7 +95,11 @@ def _gpu_nvidia() -> tuple[float, str] | None:
95
95
  text=True,
96
96
  timeout=5,
97
97
  )
98
- except (FileNotFoundError, subprocess.TimeoutExpired):
98
+ # Captured console handles can be invalid under Windows test runners
99
+ # (WinError 6/50). Hardware probing is advisory, so every OS-level
100
+ # process-launch failure must degrade to "no GPU" instead of failing
101
+ # `doctor --json`.
102
+ except (OSError, subprocess.TimeoutExpired):
99
103
  return None
100
104
  if out.returncode != 0 or not out.stdout.strip():
101
105
  return None
@@ -129,7 +133,7 @@ def _gpu_apple_silicon() -> tuple[float, str] | None:
129
133
  text=True,
130
134
  timeout=3,
131
135
  )
132
- except (FileNotFoundError, subprocess.TimeoutExpired):
136
+ except (OSError, subprocess.TimeoutExpired):
133
137
  return None
134
138
  if out.returncode != 0:
135
139
  return None
@@ -11,7 +11,7 @@ import platform
11
11
  import shutil
12
12
  import sys
13
13
  from pathlib import Path
14
- from typing import Any, Mapping
14
+ from typing import Any
15
15
 
16
16
 
17
17
  class LiteRTError(RuntimeError):
@@ -366,7 +366,13 @@ def get_effective_map_view(root: str | os.PathLike[str], *, force_remap: bool =
366
366
  manifest + worktree overlay from disk when the live git identity still
367
367
  matches them — this is the "no redundant full remap" path (issue #213).
368
368
  """
369
- identity = resolve_git_identity(root)
369
+ root_path = Path(root).resolve()
370
+ # Mapper inspection may materialize its own cache under ``.simplicio``.
371
+ # Resolve that state before fingerprinting the worktree, otherwise the
372
+ # cache write changes ``git status`` after the overlay path is chosen and
373
+ # makes the just-created overlay unreachable on the next call.
374
+ artifacts = artifact_status(root_path)
375
+ identity = resolve_git_identity(root_path)
370
376
  cache_key = _cache_key(identity)
371
377
  if not force_remap and cache_key in _VIEW_CACHE:
372
378
  return _VIEW_CACHE[cache_key]
@@ -390,8 +396,6 @@ def get_effective_map_view(root: str | os.PathLike[str], *, force_remap: bool =
390
396
  if overlay_candidate.matches(identity):
391
397
  overlay = overlay_candidate
392
398
 
393
- artifacts = artifact_status(identity.root)
394
-
395
399
  if canonical is not None and overlay is not None:
396
400
  source = SOURCE_CANONICAL_OVERLAY_HIT
397
401
  else:
@@ -0,0 +1,45 @@
1
+ """Mandatory pre-dispatch Hookwall guard for every Stage ABI mutation route."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ import os
7
+ from collections.abc import Mapping, Sequence
8
+ from pathlib import Path
9
+
10
+ from .mutation_lifecycle import MUTABLE_ENTRYPOINTS
11
+ from .mutation_worker import MutationBlocked, validate
12
+
13
+ READ_ONLY = {"status", "claims", "inspect", "doctor", "versions", "file", "detect", "runtime", "fast"}
14
+
15
+
16
+ def route_name(argv: Sequence[str]) -> str:
17
+ if not argv:
18
+ return ""
19
+ for length in range(min(3, len(argv)), 0, -1):
20
+ candidate = ".".join(argv[:length])
21
+ if candidate in MUTABLE_ENTRYPOINTS:
22
+ return candidate
23
+ return argv[0]
24
+
25
+
26
+ def guard_mutable_dispatch(argv: Sequence[str], environ: Mapping[str, str] | None = None) -> None:
27
+ env = dict(os.environ if environ is None else environ)
28
+ route = route_name(argv)
29
+ if route in READ_ONLY or route not in MUTABLE_ENTRYPOINTS:
30
+ return
31
+ if env.get("SIMPLICIO_STAGE_ABI") != "1":
32
+ return # compatibility lane; never presented as Stage ABI
33
+ path = env.get("SIMPLICIO_MECHANICAL_PLAN", "")
34
+ if not path:
35
+ raise MutationBlocked("MECHANICAL_PLAN_REQUIRED")
36
+ plan_path = Path(path)
37
+ try:
38
+ plan = json.loads(plan_path.read_text(encoding="utf-8"))
39
+ except (OSError, ValueError) as exc:
40
+ raise MutationBlocked("MECHANICAL_PLAN_INVALID") from exc
41
+ root = Path(env.get("SIMPLICIO_WORKSPACE", ".")).resolve()
42
+ sealed = validate(plan, root)
43
+ expected = env.get("SIMPLICIO_IDEMPOTENCY_KEY")
44
+ if not expected or sealed["idempotency_key"] != expected:
45
+ raise MutationBlocked("IDEMPOTENCY_KEY_REQUIRED")
@@ -0,0 +1,96 @@
1
+ """Recovery, verification and rollback lifecycle for the Stage ABI worker."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ from collections.abc import Callable
7
+ from typing import Any
8
+
9
+ from .mutation_worker import RECEIPT, MutationBlocked, MutationWorker, digest
10
+
11
+ MUTABLE_ENTRYPOINTS = {
12
+ "index",
13
+ "task",
14
+ "run",
15
+ "cache.clear",
16
+ "init",
17
+ "env-export",
18
+ "mechanical-edit",
19
+ "changeset",
20
+ "edit",
21
+ "test.run",
22
+ "prototype.apply",
23
+ "prototype.scaffold",
24
+ "prototype.plan",
25
+ "prototype.promote",
26
+ "prototype.reject",
27
+ "prototype.batch",
28
+ "memory.init",
29
+ "memory.store",
30
+ "memory.handoff",
31
+ "token.context-cache.put",
32
+ "token.context-cache.invalidate",
33
+ }
34
+
35
+
36
+ def verify_receipt(receipt: dict[str, Any]) -> bool:
37
+ if receipt.get("schema") != RECEIPT:
38
+ return False
39
+ supplied = receipt.get("receipt_hash")
40
+ return isinstance(supplied, str) and supplied == digest(
41
+ {key: value for key, value in receipt.items() if key != "receipt_hash"}
42
+ )
43
+
44
+
45
+ def recover(worker: MutationWorker, key: str, observer: Callable[[], dict[str, Any]]) -> dict[str, Any]:
46
+ with worker._db() as db:
47
+ row = db.execute("SELECT plan_hash,state,receipt FROM mutations WHERE key=?", (key,)).fetchone()
48
+ if not row or row[1] not in {"RESERVED", "UNCERTAIN"}:
49
+ raise MutationBlocked("RECOVERY_NOT_REQUIRED")
50
+ observed = observer()
51
+ if observed.get("status") == "committed":
52
+ receipt = {
53
+ "schema": RECEIPT,
54
+ "plan_id": observed["plan_id"],
55
+ "plan_hash": row[0],
56
+ "idempotency_key": key,
57
+ "before_hash": observed["before_hash"],
58
+ "after_hash": observed["after_hash"],
59
+ "status": "committed",
60
+ "operations": observed.get("operations", []),
61
+ }
62
+ receipt["receipt_hash"] = digest(receipt)
63
+ with worker._db() as db:
64
+ db.execute(
65
+ "UPDATE mutations SET state='VERIFIED',receipt=? WHERE key=?",
66
+ (json.dumps(receipt, sort_keys=True), key),
67
+ )
68
+ return receipt
69
+ raise MutationBlocked("RECOVERY_OBSERVATION_INSUFFICIENT")
70
+
71
+
72
+ def rollback(
73
+ worker: MutationWorker, key: str, restorer: Callable[[dict[str, Any]], dict[str, Any]]
74
+ ) -> dict[str, Any]:
75
+ with worker._db() as db:
76
+ row = db.execute("SELECT state,receipt FROM mutations WHERE key=?", (key,)).fetchone()
77
+ if not row or row[0] not in {"VERIFIED", "UNCERTAIN"}:
78
+ raise MutationBlocked("ROLLBACK_NOT_ALLOWED")
79
+ prior = json.loads(row[1]) if row[1] else {}
80
+ result = restorer(prior)
81
+ if result.get("status") != "restored":
82
+ raise MutationBlocked("ROLLBACK_UNVERIFIED")
83
+ receipt = {
84
+ "schema": "simplicio.rollback-receipt/v1",
85
+ "idempotency_key": key,
86
+ "mutation_receipt_hash": prior.get("receipt_hash"),
87
+ "restored_hash": result["restored_hash"],
88
+ "status": "restored",
89
+ }
90
+ receipt["receipt_hash"] = digest(receipt)
91
+ with worker._db() as db:
92
+ db.execute(
93
+ "UPDATE mutations SET state='ROLLED_BACK',receipt=? WHERE key=?",
94
+ (json.dumps(receipt, sort_keys=True), key),
95
+ )
96
+ return receipt
@@ -1,23 +1,38 @@
1
1
  """Fail-closed Stage ABI mutation worker for MechanicalPlanV1."""
2
+
2
3
  from __future__ import annotations
3
- import hashlib, json, os, sqlite3
4
+
5
+ import hashlib
6
+ import json
7
+ import sqlite3
8
+ from collections.abc import Callable
4
9
  from pathlib import Path
5
- from typing import Any, Callable
10
+ from typing import Any
6
11
 
7
12
  SCHEMA = "simplicio.mechanical-plan/v1"
8
13
  RECEIPT = "simplicio.mutation-receipt/v1"
9
14
 
15
+
10
16
  class MutationBlocked(RuntimeError):
11
17
  def __init__(self, reason_code: str):
12
18
  self.reason_code = reason_code
13
19
  super().__init__(reason_code)
14
20
 
21
+
15
22
  def digest(value: Any) -> str:
16
23
  return hashlib.sha256(json.dumps(value, sort_keys=True, separators=(",", ":")).encode()).hexdigest()
17
24
 
25
+
18
26
  def validate(plan: dict[str, Any], root: Path) -> dict[str, Any]:
19
- required = ("schema", "plan_id", "source_hash", "idempotency_key", "operations",
20
- "effect_set", "hookwall_pre")
27
+ required = (
28
+ "schema",
29
+ "plan_id",
30
+ "source_hash",
31
+ "idempotency_key",
32
+ "operations",
33
+ "effect_set",
34
+ "hookwall_pre",
35
+ )
21
36
  if any(not plan.get(key) for key in required) or plan["schema"] != SCHEMA:
22
37
  raise MutationBlocked("MECHANICAL_PLAN_INVALID")
23
38
  pre = plan["hookwall_pre"]
@@ -29,51 +44,76 @@ def validate(plan: dict[str, Any], root: Path) -> dict[str, Any]:
29
44
  if not isinstance(value, str) or Path(value).is_absolute() or ".." in Path(value).parts:
30
45
  raise MutationBlocked("PATH_ESCAPE")
31
46
  candidate = (root.resolve() / value).resolve()
32
- try: candidate.relative_to(root.resolve())
33
- except ValueError as exc: raise MutationBlocked("SYMLINK_ESCAPE") from exc
47
+ try:
48
+ candidate.relative_to(root.resolve())
49
+ except ValueError as exc:
50
+ raise MutationBlocked("SYMLINK_ESCAPE") from exc
34
51
  normalized["plan_hash"] = digest({k: normalized[k] for k in normalized if k != "plan_hash"})
35
52
  if plan.get("plan_hash") and plan["plan_hash"] != normalized["plan_hash"]:
36
53
  raise MutationBlocked("PLAN_TAMPERED")
37
54
  return normalized
38
55
 
56
+
39
57
  class MutationWorker:
40
58
  def __init__(self, root: str | Path):
41
59
  self.root = Path(root)
42
60
  self.db_path = self.root / ".simplicio" / "mutation-worker.sqlite3"
43
61
  self.db_path.parent.mkdir(parents=True, exist_ok=True)
44
62
  with self._db() as db:
45
- db.execute("CREATE TABLE IF NOT EXISTS mutations(key TEXT PRIMARY KEY, plan_hash TEXT, state TEXT, receipt TEXT)")
63
+ db.execute(
64
+ "CREATE TABLE IF NOT EXISTS mutations("
65
+ "key TEXT PRIMARY KEY, plan_hash TEXT, state TEXT, receipt TEXT)"
66
+ )
67
+
46
68
  def _db(self):
47
69
  db = sqlite3.connect(self.db_path, isolation_level=None)
48
- db.execute("PRAGMA journal_mode=WAL"); db.execute("PRAGMA synchronous=FULL")
70
+ db.execute("PRAGMA journal_mode=WAL")
71
+ db.execute("PRAGMA synchronous=FULL")
49
72
  return db
50
- def execute(self, plan: dict[str, Any], executor: Callable[[dict[str, Any]], dict[str, Any]]) -> dict[str, Any]:
51
- sealed = validate(plan, self.root); key = sealed["idempotency_key"]
73
+
74
+ def execute(
75
+ self, plan: dict[str, Any], executor: Callable[[dict[str, Any]], dict[str, Any]]
76
+ ) -> dict[str, Any]:
77
+ sealed = validate(plan, self.root)
78
+ key = sealed["idempotency_key"]
52
79
  with self._db() as db:
53
80
  db.execute("BEGIN IMMEDIATE")
54
81
  row = db.execute("SELECT plan_hash,state,receipt FROM mutations WHERE key=?", (key,)).fetchone()
55
82
  if row:
56
83
  db.execute("COMMIT")
57
- if row[0] != sealed["plan_hash"]: raise MutationBlocked("IDEMPOTENCY_LINEAGE_MISMATCH")
58
- if row[1] == "VERIFIED": return json.loads(row[2])
84
+ if row[0] != sealed["plan_hash"]:
85
+ raise MutationBlocked("IDEMPOTENCY_LINEAGE_MISMATCH")
86
+ if row[1] == "VERIFIED":
87
+ return json.loads(row[2])
59
88
  raise MutationBlocked("RECOVERY_REQUIRED")
60
89
  db.execute("INSERT INTO mutations VALUES(?,?,?,NULL)", (key, sealed["plan_hash"], "RESERVED"))
61
90
  db.execute("COMMIT")
62
91
  try:
63
92
  result = executor(sealed)
64
93
  except BaseException:
65
- with self._db() as db: db.execute("UPDATE mutations SET state='UNCERTAIN' WHERE key=?", (key,))
94
+ with self._db() as db:
95
+ db.execute("UPDATE mutations SET state='UNCERTAIN' WHERE key=?", (key,))
66
96
  raise
67
97
  if result.get("status") != "ok" or not result.get("applied"):
68
- with self._db() as db: db.execute("UPDATE mutations SET state='ROLLED_BACK' WHERE key=?", (key,))
98
+ with self._db() as db:
99
+ db.execute("UPDATE mutations SET state='ROLLED_BACK' WHERE key=?", (key,))
69
100
  raise MutationBlocked("EFFECT_NOT_COMMITTED")
70
- receipt = {"schema": RECEIPT, "plan_id": sealed["plan_id"], "plan_hash": sealed["plan_hash"],
71
- "idempotency_key": key, "before_hash": result["before_hash"],
72
- "after_hash": result["after_hash"], "status": "committed",
73
- "operations": result.get("operations", [])}
101
+ receipt = {
102
+ "schema": RECEIPT,
103
+ "plan_id": sealed["plan_id"],
104
+ "plan_hash": sealed["plan_hash"],
105
+ "idempotency_key": key,
106
+ "before_hash": result["before_hash"],
107
+ "after_hash": result["after_hash"],
108
+ "status": "committed",
109
+ "operations": result.get("operations", []),
110
+ }
74
111
  receipt["receipt_hash"] = digest(receipt)
75
112
  with self._db() as db:
76
113
  db.execute("BEGIN IMMEDIATE")
77
- db.execute("UPDATE mutations SET state='VERIFIED',receipt=? WHERE key=?", (json.dumps(receipt, sort_keys=True), key))
114
+ db.execute(
115
+ "UPDATE mutations SET state='VERIFIED',receipt=? WHERE key=?",
116
+ (json.dumps(receipt, sort_keys=True), key),
117
+ )
78
118
  db.execute("COMMIT")
79
119
  return receipt
@@ -470,7 +470,10 @@ def run_task(
470
470
  target_kind=target_kind(root, target),
471
471
  )
472
472
  if os.environ.get("SIMPLICIO_STANDALONE_PREFLIGHT", "").strip().lower() in {
473
- "1", "true", "yes", "on",
473
+ "1",
474
+ "true",
475
+ "yes",
476
+ "on",
474
477
  }:
475
478
  return _task_result(
476
479
  target,
@@ -941,8 +944,6 @@ def run_task_spec(root, stack, task_spec: TaskSpec, **kwargs: Any) -> dict[str,
941
944
  """
942
945
  if not isinstance(task_spec, TaskSpec):
943
946
  raise TypeError("run_task_spec requires a simplicio.task_spec.TaskSpec")
944
- if "task_spec" in kwargs:
945
- raise TypeError("run_task_spec does not accept a second task_spec argument")
946
947
  narrative = task_spec.narrative
947
948
  goal = str(narrative.get("goal") or narrative.get("want") or task_spec.functionality or task_spec.task_id)
948
949
  criteria = "\n".join(
@@ -27,7 +27,6 @@ _TEST_COMMAND_PLACEHOLDERS = {
27
27
  "echo 'configure SIMPLICIO_TEST_CMD'",
28
28
  'echo "configure SIMPLICIO_TEST_CMD"',
29
29
  }
30
- _DEFAULT_VERIFY_TIMEOUT_S = 120
31
30
 
32
31
 
33
32
  @dataclass
@@ -71,15 +70,17 @@ def _configured_test_command() -> tuple[str | None, str | None]:
71
70
  return raw, None
72
71
 
73
72
 
74
- def _verification_timeout_seconds() -> int:
73
+ def _verification_timeout_seconds() -> int | None:
75
74
  raw = os.environ.get("SIMPLICIO_TEST_TIMEOUT_S", "").strip()
76
75
  if not raw:
77
- return _DEFAULT_VERIFY_TIMEOUT_S
76
+ return None
77
+ if raw.lower() in {"0", "off", "none", "unlimited"}:
78
+ return None
78
79
  try:
79
80
  value = int(raw)
80
81
  except ValueError:
81
- return _DEFAULT_VERIFY_TIMEOUT_S
82
- return value if value > 0 else _DEFAULT_VERIFY_TIMEOUT_S
82
+ return None
83
+ return value if value > 0 else None
83
84
 
84
85
 
85
86
  def _patch_receipt(candidate: PatchCandidate | None, files: list[str] | None = None) -> dict[str, Any] | None: