simplicio-cli 0.18.11__tar.gz → 0.18.13__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.11 → simplicio_cli-0.18.13}/PKG-INFO +3 -3
  2. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/pyproject.toml +3 -3
  3. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/__init__.py +1 -2
  4. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/cli.py +23 -1
  5. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/edit.py +54 -12
  6. simplicio_cli-0.18.13/simplicio/commands/release_train.py +98 -0
  7. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/versions.py +44 -12
  8. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/component_manifest.py +72 -4
  9. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/dev_cli_contracts.py +40 -3
  10. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/doctor.py +3 -0
  11. simplicio_cli-0.18.13/simplicio/mapper_binding.py +213 -0
  12. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/mechanical_edit.py +736 -50
  13. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/plan_compiler/ad_hoc_edit.py +54 -4
  14. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/plan_compiler/models.py +14 -0
  15. simplicio_cli-0.18.13/simplicio/release_train.py +732 -0
  16. simplicio_cli-0.18.13/simplicio/release_train_adapters.py +287 -0
  17. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/runtime_contracts.py +24 -0
  18. simplicio_cli-0.18.13/simplicio/scaffold_contract.py +173 -0
  19. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio_cli.egg-info/PKG-INFO +3 -3
  20. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio_cli.egg-info/SOURCES.txt +5 -0
  21. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio_cli.egg-info/requires.txt +2 -2
  22. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/LICENSE +0 -0
  23. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/README.md +0 -0
  24. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/setup.cfg +0 -0
  25. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/_cache.py +0 -0
  26. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/adaptive.py +0 -0
  27. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/atomic_execution.py +0 -0
  28. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/bench.py +0 -0
  29. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/cache.py +0 -0
  30. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/cache_cli.py +0 -0
  31. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/changeset_transaction.py +0 -0
  32. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/changeset_v2.py +0 -0
  33. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/checkpoint_store.py +0 -0
  34. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/codex_hooks.py +0 -0
  35. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/codex_wrapper.py +0 -0
  36. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/__init__.py +0 -0
  37. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/_shared.py +0 -0
  38. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/bench.py +0 -0
  39. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/cache.py +0 -0
  40. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/changeset.py +0 -0
  41. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/claims.py +0 -0
  42. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/detect.py +0 -0
  43. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/doctor.py +0 -0
  44. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/env_export.py +0 -0
  45. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/fast.py +0 -0
  46. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/file.py +0 -0
  47. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/file_read.py +0 -0
  48. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/gate.py +0 -0
  49. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/index.py +0 -0
  50. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/init.py +0 -0
  51. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/inspect.py +0 -0
  52. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/intake.py +0 -0
  53. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/memory.py +0 -0
  54. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/nest.py +0 -0
  55. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/proposal.py +0 -0
  56. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/prototype.py +0 -0
  57. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/reconcile.py +0 -0
  58. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/run.py +0 -0
  59. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/runtime.py +0 -0
  60. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/scenarios/claims-gate.json +0 -0
  61. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/score_skill.py +0 -0
  62. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/smoke.py +0 -0
  63. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/status.py +0 -0
  64. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/task.py +0 -0
  65. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/test.py +0 -0
  66. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/test_run.py +0 -0
  67. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/commands/token.py +0 -0
  68. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/delivery_auth.py +0 -0
  69. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/detect.py +0 -0
  70. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/dod.py +0 -0
  71. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/ecosystem.py +0 -0
  72. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/effect_transaction.py +0 -0
  73. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/evidence_ledger.py +0 -0
  74. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/execution_contract.py +0 -0
  75. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/execution_mode.py +0 -0
  76. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/execution_receipts.py +0 -0
  77. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/fast_contracts.py +0 -0
  78. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/hardware.py +0 -0
  79. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/hbp.py +0 -0
  80. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/hub_adapter.py +0 -0
  81. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/init.py +0 -0
  82. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/intent.py +0 -0
  83. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/legacy_json_adapter.py +0 -0
  84. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/litert_cli.py +0 -0
  85. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/llm_policy.py +0 -0
  86. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/local_inference.py +0 -0
  87. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/local_models.py +0 -0
  88. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/map_view.py +0 -0
  89. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/mapper.py +0 -0
  90. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/mapper_api.py +0 -0
  91. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/memory_migration.py +0 -0
  92. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/memory_store.py +0 -0
  93. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/mutation_dispatch.py +0 -0
  94. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/mutation_lifecycle.py +0 -0
  95. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/mutation_worker.py +0 -0
  96. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/observability.py +0 -0
  97. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/orchestrator/__init__.py +0 -0
  98. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/orchestrator/cost_governor.py +0 -0
  99. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/orchestrator/feature.py +0 -0
  100. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/orchestrator/multi_task.py +0 -0
  101. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/orientation_plan.py +0 -0
  102. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/pipeline.py +0 -0
  103. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/pipeline_fixers.py +0 -0
  104. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/pipeline_input.py +0 -0
  105. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/pipeline_integrated.py +0 -0
  106. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/pipeline_preparation.py +0 -0
  107. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/pipeline_stages.py +0 -0
  108. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/pipeline_state.py +0 -0
  109. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/pipeline_task_result.py +0 -0
  110. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/plan_compiler/__init__.py +0 -0
  111. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/plan_compiler/authority.py +0 -0
  112. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/plan_compiler/canonical_hash.py +0 -0
  113. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/plan_compiler/compat_adapter.py +0 -0
  114. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/plan_compiler/compile_task_spec.py +0 -0
  115. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/plan_compiler/conformance.py +0 -0
  116. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/plan_compiler/effect_sink.py +0 -0
  117. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/plan_compiler/errors.py +0 -0
  118. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/plan_compiler/execution_contracts.py +0 -0
  119. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/plan_compiler/mapper_context.py +0 -0
  120. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/plan_compiler/runtime_effect_sink.py +0 -0
  121. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/plan_discovery.py +0 -0
  122. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/plugin_effect_bridge.py +0 -0
  123. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/plugin_reconcile.py +0 -0
  124. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/precedent.py +0 -0
  125. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/prism_envelope.py +0 -0
  126. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/prism_receipts.py +0 -0
  127. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/prism_transaction.py +0 -0
  128. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/progressive_verify.py +0 -0
  129. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/prompt.py +0 -0
  130. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/prompt_envelope.py +0 -0
  131. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/provider_cache_receipt.py +0 -0
  132. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/providers.py +0 -0
  133. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/py.typed +0 -0
  134. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/runtime_async.py +0 -0
  135. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/runtime_bridge.py +0 -0
  136. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/runtime_env.py +0 -0
  137. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/__init__.py +0 -0
  138. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/_pipeline_adapter.py +0 -0
  139. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/cli.py +0 -0
  140. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/codegen/__init__.py +0 -0
  141. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/codegen/go_gin.py +0 -0
  142. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/codegen/markdown_document.py +0 -0
  143. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/codegen/php_laravel.py +0 -0
  144. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/codegen/python_cst.py +0 -0
  145. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/codegen/python_fastapi.py +0 -0
  146. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/codegen/python_orm.py +0 -0
  147. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/codegen/python_pydantic.py +0 -0
  148. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/codegen/python_pytest.py +0 -0
  149. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/codegen/registry.py +0 -0
  150. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/codegen/rust_axum.py +0 -0
  151. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/codegen/types.py +0 -0
  152. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/codegen/typescript_next_page.py +0 -0
  153. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/codegen/typescript_next_route.py +0 -0
  154. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/executor.py +0 -0
  155. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/plan_schema.py +0 -0
  156. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/planner.py +0 -0
  157. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/recipes.py +0 -0
  158. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/skill_opt.py +0 -0
  159. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/scratch/stack_registry.py +0 -0
  160. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/skill_router.py +0 -0
  161. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/sprint_loader.py +0 -0
  162. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/stage_abi.py +0 -0
  163. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/stage_main.py +0 -0
  164. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/standalone_migration.py +0 -0
  165. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/store_adapter.py +0 -0
  166. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/task_context.py +0 -0
  167. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/task_operator.py +0 -0
  168. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/task_spec.py +0 -0
  169. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/SKILL.md +0 -0
  170. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/go-gin/admin-crud.yaml +0 -0
  171. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/go-gin/auth-jwt.yaml +0 -0
  172. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/go-gin/crud-resource.yaml +0 -0
  173. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/php-laravel/admin-crud.yaml +0 -0
  174. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/php-laravel/auth-jwt.yaml +0 -0
  175. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/php-laravel/crud-resource.yaml +0 -0
  176. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/php-vanilla/docs-marker.yaml +0 -0
  177. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/py-fastapi/admin-crud.yaml +0 -0
  178. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/py-fastapi/auth-jwt.yaml +0 -0
  179. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/py-fastapi/background-worker.yaml +0 -0
  180. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/py-fastapi/crud-resource.yaml +0 -0
  181. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/py-fastapi/file-upload.yaml +0 -0
  182. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/py-fastapi/oauth-integration.yaml +0 -0
  183. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/py-fastapi/scheduled-job.yaml +0 -0
  184. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/py-fastapi/websocket.yaml +0 -0
  185. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/rust-axum/admin-crud.yaml +0 -0
  186. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/rust-axum/auth-jwt.yaml +0 -0
  187. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/rust-axum/crud-resource.yaml +0 -0
  188. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/ts-nextjs/admin-crud.yaml +0 -0
  189. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/ts-nextjs/auth-jwt.yaml +0 -0
  190. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/recipes/ts-nextjs/crud-resource.yaml +0 -0
  191. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/simplicio_prompt.md +0 -0
  192. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/bash-cli/README.md +0 -0
  193. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/bash-cli/practices.md +0 -0
  194. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/bash-cli/stack.json +0 -0
  195. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/bash-cli/tree/README.md +0 -0
  196. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/bash-cli/tree/bin/app.sh +0 -0
  197. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/bash-cli/tree/test/app.bats +0 -0
  198. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/bash-cli/verify.json +0 -0
  199. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-aspnet/README.md +0 -0
  200. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-aspnet/practices.md +0 -0
  201. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-aspnet/stack.json +0 -0
  202. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-aspnet/tree/README.md +0 -0
  203. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-aspnet/tree/src/App.Api/App.Api.csproj +0 -0
  204. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-aspnet/tree/src/App.Api/Program.cs +0 -0
  205. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-aspnet/tree/tests/App.Tests/App.Tests.csproj +0 -0
  206. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-aspnet/tree/tests/App.Tests/HealthTests.cs +0 -0
  207. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-aspnet/verify.json +0 -0
  208. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-blazor/README.md +0 -0
  209. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-blazor/practices.md +0 -0
  210. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-blazor/stack.json +0 -0
  211. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-blazor/tree/README.md +0 -0
  212. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/App.Web.csproj +0 -0
  213. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Components/App.razor +0 -0
  214. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Components/Pages/Home.razor +0 -0
  215. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Program.cs +0 -0
  216. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-blazor/tree/tests/App.Tests/App.Tests.csproj +0 -0
  217. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-blazor/tree/tests/App.Tests/HealthTests.cs +0 -0
  218. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/csharp-blazor/verify.json +0 -0
  219. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/dart-flutter/README.md +0 -0
  220. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/dart-flutter/practices.md +0 -0
  221. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/dart-flutter/stack.json +0 -0
  222. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/dart-flutter/tree/README.md +0 -0
  223. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/dart-flutter/tree/lib/main.dart +0 -0
  224. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/dart-flutter/tree/pubspec.yaml +0 -0
  225. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/dart-flutter/tree/test/widget_test.dart +0 -0
  226. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/dart-flutter/verify.json +0 -0
  227. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/elixir-phoenix/README.md +0 -0
  228. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/elixir-phoenix/practices.md +0 -0
  229. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/elixir-phoenix/stack.json +0 -0
  230. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/elixir-phoenix/tree/README.md +0 -0
  231. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/elixir-phoenix/tree/config/config.exs +0 -0
  232. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app/application.ex +0 -0
  233. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/controllers/health_controller.ex +0 -0
  234. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/endpoint.ex +0 -0
  235. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/router.ex +0 -0
  236. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/elixir-phoenix/tree/mix.exs +0 -0
  237. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/elixir-phoenix/tree/test/health_controller_test.exs +0 -0
  238. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/elixir-phoenix/tree/test/test_helper.exs +0 -0
  239. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/elixir-phoenix/verify.json +0 -0
  240. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-cli/README.md +0 -0
  241. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-cli/practices.md +0 -0
  242. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-cli/stack.json +0 -0
  243. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-cli/tree/README.md +0 -0
  244. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-cli/tree/cmd/root.go +0 -0
  245. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-cli/tree/cmd/root_test.go +0 -0
  246. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-cli/tree/go.mod +0 -0
  247. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-cli/tree/main.go +0 -0
  248. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-cli/verify.json +0 -0
  249. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-echo/README.md +0 -0
  250. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-echo/practices.md +0 -0
  251. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-echo/stack.json +0 -0
  252. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-echo/tree/README.md +0 -0
  253. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-echo/tree/cmd/server/main.go +0 -0
  254. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-echo/tree/go.mod +0 -0
  255. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-echo/tree/internal/http/router.go +0 -0
  256. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-echo/tree/internal/http/router_test.go +0 -0
  257. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-echo/verify.json +0 -0
  258. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-gin/README.md +0 -0
  259. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-gin/practices.md +0 -0
  260. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-gin/stack.json +0 -0
  261. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-gin/tree/README.md +0 -0
  262. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-gin/tree/cmd/server/main.go +0 -0
  263. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-gin/tree/go.mod +0 -0
  264. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-gin/tree/internal/http/router.go +0 -0
  265. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-gin/tree/internal/http/router_test.go +0 -0
  266. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/go-gin/verify.json +0 -0
  267. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/java-spring/README.md +0 -0
  268. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/java-spring/practices.md +0 -0
  269. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/java-spring/stack.json +0 -0
  270. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/java-spring/tree/README.md +0 -0
  271. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/java-spring/tree/build.gradle.kts +0 -0
  272. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/java-spring/tree/settings.gradle.kts +0 -0
  273. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/java-spring/tree/src/main/java/com/example/Application.java +0 -0
  274. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/java-spring/tree/src/main/java/com/example/HealthController.java +0 -0
  275. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/java-spring/tree/src/test/java/com/example/HealthControllerTest.java +0 -0
  276. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/java-spring/verify.json +0 -0
  277. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/js-express/README.md +0 -0
  278. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/js-express/practices.md +0 -0
  279. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/js-express/stack.json +0 -0
  280. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/js-express/tree/README.md +0 -0
  281. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/js-express/tree/package.json +0 -0
  282. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/js-express/tree/src/app.js +0 -0
  283. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/js-express/tree/src/server.js +0 -0
  284. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/js-express/tree/tests/health.test.js +0 -0
  285. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/js-express/verify.json +0 -0
  286. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-android/README.md +0 -0
  287. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-android/practices.md +0 -0
  288. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-android/stack.json +0 -0
  289. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-android/tree/README.md +0 -0
  290. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-android/tree/app/build.gradle.kts +0 -0
  291. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/AndroidManifest.xml +0 -0
  292. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/java/com/example/app/MainActivity.kt +0 -0
  293. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/res/values/styles.xml +0 -0
  294. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-android/tree/app/src/test/java/com/example/app/SmokeTest.kt +0 -0
  295. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-android/tree/build.gradle.kts +0 -0
  296. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-android/tree/settings.gradle.kts +0 -0
  297. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-android/verify.json +0 -0
  298. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-ktor/README.md +0 -0
  299. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-ktor/practices.md +0 -0
  300. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-ktor/stack.json +0 -0
  301. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-ktor/tree/README.md +0 -0
  302. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-ktor/tree/build.gradle.kts +0 -0
  303. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-ktor/tree/settings.gradle.kts +0 -0
  304. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-ktor/tree/src/main/kotlin/com/example/Application.kt +0 -0
  305. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-ktor/tree/src/test/kotlin/com/example/ApplicationTest.kt +0 -0
  306. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-ktor/verify.json +0 -0
  307. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-spring/README.md +0 -0
  308. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-spring/practices.md +0 -0
  309. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-spring/stack.json +0 -0
  310. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-spring/tree/README.md +0 -0
  311. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-spring/tree/build.gradle.kts +0 -0
  312. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-spring/tree/settings.gradle.kts +0 -0
  313. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-spring/tree/src/main/kotlin/com/example/Application.kt +0 -0
  314. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-spring/tree/src/main/kotlin/com/example/HealthController.kt +0 -0
  315. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-spring/tree/src/test/kotlin/com/example/HealthControllerTest.kt +0 -0
  316. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/kotlin-spring/verify.json +0 -0
  317. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-laravel/README.md +0 -0
  318. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-laravel/practices.md +0 -0
  319. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-laravel/stack.json +0 -0
  320. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-laravel/tree/README.md +0 -0
  321. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-laravel/tree/artisan +0 -0
  322. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-laravel/tree/bootstrap/app.php +0 -0
  323. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-laravel/tree/composer.json +0 -0
  324. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-laravel/tree/phpunit.xml +0 -0
  325. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-laravel/tree/routes/api.php +0 -0
  326. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-laravel/tree/routes/console.php +0 -0
  327. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-laravel/tree/tests/Feature/HealthTest.php +0 -0
  328. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-laravel/tree/tests/TestCase.php +0 -0
  329. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-laravel/verify.json +0 -0
  330. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-symfony/README.md +0 -0
  331. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-symfony/practices.md +0 -0
  332. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-symfony/stack.json +0 -0
  333. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-symfony/tree/README.md +0 -0
  334. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-symfony/tree/composer.json +0 -0
  335. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-symfony/tree/src/Controller/HealthController.php +0 -0
  336. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-symfony/tree/tests/HealthControllerTest.php +0 -0
  337. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-symfony/verify.json +0 -0
  338. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-vanilla/README.md +0 -0
  339. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-vanilla/practices.md +0 -0
  340. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-vanilla/stack.json +0 -0
  341. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-vanilla/tree/README.md +0 -0
  342. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-vanilla/tree/composer.json +0 -0
  343. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-vanilla/tree/phpunit.xml +0 -0
  344. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-vanilla/tree/src/Health.php +0 -0
  345. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-vanilla/tree/tests/HealthTest.php +0 -0
  346. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/php-vanilla/verify.json +0 -0
  347. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-cli/README.md +0 -0
  348. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-cli/practices.md +0 -0
  349. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-cli/stack.json +0 -0
  350. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-cli/tree/README.md +0 -0
  351. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-cli/tree/pyproject.toml +0 -0
  352. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-cli/tree/src/app/__init__.py +0 -0
  353. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-cli/tree/src/app/cli.py +0 -0
  354. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-cli/tree/tests/test_cli.py +0 -0
  355. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-cli/verify.json +0 -0
  356. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-django/README.md +0 -0
  357. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-django/practices.md +0 -0
  358. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-django/stack.json +0 -0
  359. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-django/tree/README.md +0 -0
  360. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-django/tree/app/__init__.py +0 -0
  361. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-django/tree/app/apps.py +0 -0
  362. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-django/tree/app/tests.py +0 -0
  363. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-django/tree/app/views.py +0 -0
  364. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-django/tree/config/__init__.py +0 -0
  365. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-django/tree/config/asgi.py +0 -0
  366. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-django/tree/config/settings.py +0 -0
  367. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-django/tree/config/urls.py +0 -0
  368. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-django/tree/config/wsgi.py +0 -0
  369. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-django/tree/manage.py +0 -0
  370. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-django/tree/pyproject.toml +0 -0
  371. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-django/verify.json +0 -0
  372. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-fastapi/README.md +0 -0
  373. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-fastapi/practices.md +0 -0
  374. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-fastapi/stack.json +0 -0
  375. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-fastapi/tree/.gitignore +0 -0
  376. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-fastapi/tree/README.template.md +0 -0
  377. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-fastapi/tree/pyproject.toml +0 -0
  378. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-fastapi/tree/ruff.toml +0 -0
  379. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-fastapi/tree/src/api/__init__.py +0 -0
  380. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-fastapi/tree/src/main.py +0 -0
  381. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-fastapi/tree/tests/test_health.py +0 -0
  382. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-fastapi/verify.json +0 -0
  383. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-flask/README.md +0 -0
  384. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-flask/practices.md +0 -0
  385. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-flask/stack.json +0 -0
  386. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-flask/tree/README.md +0 -0
  387. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-flask/tree/pyproject.toml +0 -0
  388. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-flask/tree/ruff.toml +0 -0
  389. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-flask/tree/src/app.py +0 -0
  390. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-flask/tree/tests/test_health.py +0 -0
  391. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/py-flask/verify.json +0 -0
  392. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/react-vite/README.md +0 -0
  393. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/react-vite/practices.md +0 -0
  394. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/react-vite/stack.json +0 -0
  395. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/react-vite/tree/README.md +0 -0
  396. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/react-vite/tree/index.html +0 -0
  397. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/react-vite/tree/package.json +0 -0
  398. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/react-vite/tree/src/App.test.tsx +0 -0
  399. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/react-vite/tree/src/App.tsx +0 -0
  400. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/react-vite/tree/src/main.tsx +0 -0
  401. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/react-vite/tree/tsconfig.json +0 -0
  402. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/react-vite/verify.json +0 -0
  403. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ruby-rails/README.md +0 -0
  404. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ruby-rails/practices.md +0 -0
  405. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ruby-rails/stack.json +0 -0
  406. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ruby-rails/tree/Gemfile +0 -0
  407. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ruby-rails/tree/README.md +0 -0
  408. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ruby-rails/tree/app/controllers/health_controller.rb +0 -0
  409. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ruby-rails/tree/bin/rails +0 -0
  410. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ruby-rails/tree/config/application.rb +0 -0
  411. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ruby-rails/tree/config/boot.rb +0 -0
  412. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ruby-rails/tree/config/routes.rb +0 -0
  413. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ruby-rails/tree/test/controllers/health_controller_test.rb +0 -0
  414. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ruby-rails/tree/test/test_helper.rb +0 -0
  415. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ruby-rails/verify.json +0 -0
  416. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-axum/README.md +0 -0
  417. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-axum/practices.md +0 -0
  418. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-axum/stack.json +0 -0
  419. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-axum/tree/Cargo.toml +0 -0
  420. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-axum/tree/README.md +0 -0
  421. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-axum/tree/src/main.rs +0 -0
  422. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-axum/verify.json +0 -0
  423. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-cli/README.md +0 -0
  424. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-cli/practices.md +0 -0
  425. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-cli/stack.json +0 -0
  426. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-cli/tree/Cargo.toml +0 -0
  427. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-cli/tree/README.md +0 -0
  428. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-cli/tree/src/main.rs +0 -0
  429. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-cli/verify.json +0 -0
  430. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-leptos/README.md +0 -0
  431. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-leptos/practices.md +0 -0
  432. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-leptos/stack.json +0 -0
  433. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-leptos/tree/Cargo.toml +0 -0
  434. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-leptos/tree/README.md +0 -0
  435. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-leptos/tree/src/main.rs +0 -0
  436. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/rust-leptos/verify.json +0 -0
  437. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/swift-ios/README.md +0 -0
  438. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/swift-ios/practices.md +0 -0
  439. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/swift-ios/stack.json +0 -0
  440. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/swift-ios/tree/README.md +0 -0
  441. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/swift-ios/tree/Sources/App/App.swift +0 -0
  442. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/swift-ios/tree/Sources/App/ContentView.swift +0 -0
  443. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/swift-ios/tree/Tests/AppTests/AppTests.swift +0 -0
  444. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/swift-ios/verify.json +0 -0
  445. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/swift-vapor/README.md +0 -0
  446. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/swift-vapor/practices.md +0 -0
  447. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/swift-vapor/stack.json +0 -0
  448. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/swift-vapor/tree/Package.swift +0 -0
  449. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/swift-vapor/tree/README.md +0 -0
  450. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/swift-vapor/tree/Sources/App/main.swift +0 -0
  451. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/swift-vapor/tree/Tests/AppTests/HealthTests.swift +0 -0
  452. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/swift-vapor/verify.json +0 -0
  453. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nestjs/README.md +0 -0
  454. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nestjs/practices.md +0 -0
  455. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nestjs/stack.json +0 -0
  456. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nestjs/tree/README.md +0 -0
  457. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nestjs/tree/package.json +0 -0
  458. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nestjs/tree/src/app.controller.spec.ts +0 -0
  459. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nestjs/tree/src/app.controller.ts +0 -0
  460. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nestjs/tree/src/app.module.ts +0 -0
  461. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nestjs/tree/src/main.ts +0 -0
  462. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nestjs/tree/tsconfig.json +0 -0
  463. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nestjs/verify.json +0 -0
  464. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nextjs/README.md +0 -0
  465. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nextjs/practices.md +0 -0
  466. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nextjs/stack.json +0 -0
  467. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nextjs/tree/.eslintrc.json +0 -0
  468. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nextjs/tree/.gitignore +0 -0
  469. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nextjs/tree/next.config.mjs +0 -0
  470. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nextjs/tree/package.json +0 -0
  471. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nextjs/tree/pnpm-workspace.yaml +0 -0
  472. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nextjs/tree/src/app/layout.tsx +0 -0
  473. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nextjs/tree/src/app/page.tsx +0 -0
  474. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nextjs/tree/tsconfig.json +0 -0
  475. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-nextjs/verify.json +0 -0
  476. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-remix/README.md +0 -0
  477. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-remix/practices.md +0 -0
  478. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-remix/stack.json +0 -0
  479. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-remix/tree/README.md +0 -0
  480. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-remix/tree/app/root.tsx +0 -0
  481. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-remix/tree/app/routes/_index.tsx +0 -0
  482. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-remix/tree/app/routes/health.test.ts +0 -0
  483. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-remix/tree/app/routes/health.ts +0 -0
  484. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-remix/tree/package.json +0 -0
  485. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-remix/tree/tsconfig.json +0 -0
  486. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/stacks/ts-remix/verify.json +0 -0
  487. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/templates/userpromptsubmit-hook.sh +0 -0
  488. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/token_primitives.py +0 -0
  489. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/toon_codec.py +0 -0
  490. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/transaction.py +0 -0
  491. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/utils/__init__.py +0 -0
  492. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/utils/cache.py +0 -0
  493. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/utils/fs.py +0 -0
  494. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/utils/http_client.py +0 -0
  495. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/utils/serialization.py +0 -0
  496. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio/write_set_lock.py +0 -0
  497. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio_cli.egg-info/dependency_links.txt +0 -0
  498. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio_cli.egg-info/entry_points.txt +0 -0
  499. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/simplicio_cli.egg-info/top_level.txt +0 -0
  500. {simplicio_cli-0.18.11 → simplicio_cli-0.18.13}/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.11
3
+ Version: 0.18.13
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.27,>=0.26.20
31
+ Requires-Dist: simplicio-mapper<0.27,>=0.26.31
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
@@ -40,7 +40,7 @@ Requires-Dist: sentence-transformers>=5.6.0; extra == "ml"
40
40
  Provides-Extra: bench
41
41
  Requires-Dist: fpdf2>=2.8.7; extra == "bench"
42
42
  Provides-Extra: fast
43
- Requires-Dist: simplicio-fast<3,>=2.0.28; python_version >= "3.11" and extra == "fast"
43
+ Requires-Dist: simplicio-fast<3,>=2.0.33; python_version >= "3.11" and extra == "fast"
44
44
  Provides-Extra: performance
45
45
  Requires-Dist: uvloop>=0.21.0; sys_platform != "win32" and extra == "performance"
46
46
  Provides-Extra: all
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "simplicio-cli"
3
- version = "0.18.11"
3
+ version = "0.18.13"
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.20,<0.27",
48
+ "simplicio-mapper>=0.26.31,<0.27",
49
49
  "simplicio-prompt>=1.14.1",
50
50
  "httpx>=0.28.1",
51
51
  "orjson>=3.11.9",
@@ -62,7 +62,7 @@ ml = ["sentence-transformers>=5.6.0"]
62
62
  bench = ["fpdf2>=2.8.7"]
63
63
  # Optional canonical Fast adapter. It remains outside the base install until
64
64
  # its release train is formally promoted.
65
- fast = ["simplicio-fast>=2.0.28,<3; python_version >= '3.11'"]
65
+ fast = ["simplicio-fast>=2.0.33,<3; python_version >= '3.11'"]
66
66
  # Opt-in faster asyncio event loop for the structured-concurrency runtime
67
67
  # (simplicio.runtime_async, issue #212). Never required: `install_uvloop()`
68
68
  # no-ops on Windows or when this extra is absent, falling back to stdlib
@@ -1,4 +1,4 @@
1
- __version__ = "0.18.10"
1
+ __version__ = "0.18.13"
2
2
 
3
3
 
4
4
  def mapper_module():
@@ -16,4 +16,3 @@ def mapper_version():
16
16
 
17
17
 
18
18
  __all__ = ["__version__", "mapper_module", "mapper_version"]
19
-
@@ -413,6 +413,27 @@ def _build_parser() -> argparse.ArgumentParser:
413
413
  help="bypass the 24h PyPI cache when resolving mapper latest_known",
414
414
  )
415
415
 
416
+ p_release_train = sub.add_parser(
417
+ "release-train",
418
+ help="verify Mapper release events, immutable artifacts, and N/N-1 conformance",
419
+ )
420
+ release_train_sub = p_release_train.add_subparsers(dest="release_train_command", required=True)
421
+ release_verify = release_train_sub.add_parser(
422
+ "verify", help="fail-closed verification of one component-release-event/v1"
423
+ )
424
+ release_verify.add_argument("--event", required=True, help="Mapper release event JSON")
425
+ release_verify.add_argument("--conformance", help="installed N/N-1 conformance JSON")
426
+ release_verify.add_argument("--root", default=".", help="Dev CLI checkout containing pyproject.toml/uv.lock")
427
+ release_verify.add_argument("--declared-range")
428
+ release_verify.add_argument("--tested-against")
429
+ release_verify.add_argument("--state", default="", help="deduplication state JSON")
430
+ release_verify.add_argument("--record", action="store_true", help="record accepted event atomically")
431
+ release_verify.add_argument("--active-task", action="store_true", help="defer while a task is active")
432
+ release_verify.add_argument("--json", action="store_true", help="emit stable JSON")
433
+ release_doctor = release_train_sub.add_parser("doctor", help="report release-train evidence readiness")
434
+ release_doctor.add_argument("--root", default=".")
435
+ release_doctor.add_argument("--json", action="store_true", help="emit stable JSON")
436
+
416
437
  p_env_export = sub.add_parser(
417
438
  "env-export",
418
439
  help="print shell-safe exports from a dotenv file without sourcing it",
@@ -462,7 +483,7 @@ def _build_parser() -> argparse.ArgumentParser:
462
483
 
463
484
  p_edit = sub.add_parser(
464
485
  "edit",
465
- help="apply a mechanical edit plan via simplicio-runtime when available",
486
+ help="apply a Dev CLI edit plan; legacy plans may delegate to Runtime",
466
487
  )
467
488
  p_edit.add_argument("--root", "--repo", dest="root", default=".")
468
489
  p_edit.add_argument("--plan", default="-", help="plan JSON path, or - for stdin")
@@ -788,6 +809,7 @@ _COMMAND_MODULES = {
788
809
  "doctor": "doctor",
789
810
  "fast": "fast",
790
811
  "versions": "versions",
812
+ "release-train": "release_train",
791
813
  "env-export": "env_export",
792
814
  "changeset": "changeset",
793
815
  "file": "file",
@@ -1,9 +1,10 @@
1
1
  """``simplicio-py mechanical-edit`` / ``simplicio-py edit``.
2
2
 
3
3
  Extracted from `cli.py`'s `_run_mechanical_edit_command`/`_run_edit_command`
4
- (issue #103); behavior unchanged. ``edit`` delegates to the native
5
- ``simplicio`` Rust binary when available, falling back to
6
- ``run_mechanical_edit`` (the pure-Python implementation) otherwise.
4
+ (issue #103). Legacy plans retain their established Runtime delegation
5
+ behavior. Versioned ``simplicio.dev-cli.edit-plan/v1`` plans always use the
6
+ Dev CLI-owned deterministic kernel so the native Runtime adapter cannot
7
+ silently select a second Mapper edit vocabulary.
7
8
  """
8
9
 
9
10
  from __future__ import annotations
@@ -32,6 +33,21 @@ CLI_PROG = "simplicio-py"
32
33
  RUNTIME_EDIT_TIMEOUT_S = 30.0
33
34
 
34
35
 
36
+ def _decode_native_json(stdout: Any) -> Any:
37
+ """Decode Runtime's final JSON receipt after any human-readable output."""
38
+ if not isinstance(stdout, str):
39
+ return None
40
+ for line in reversed(stdout.splitlines()):
41
+ candidate = line.strip()
42
+ if not candidate.startswith("{"):
43
+ continue
44
+ try:
45
+ return json.loads(candidate)
46
+ except json.JSONDecodeError:
47
+ continue
48
+ return None
49
+
50
+
35
51
  def run_mechanical_edit(a: argparse.Namespace) -> int:
36
52
  from ..mechanical_edit import execute_plan_json
37
53
 
@@ -40,11 +56,21 @@ def run_mechanical_edit(a: argparse.Namespace) -> int:
40
56
  except OSError as exc:
41
57
  print(f"{CLI_PROG} mechanical-edit: {exc}", file=sys.stderr)
42
58
  return 2
59
+ try:
60
+ decoded_plan = json.loads(plan_text)
61
+ plan_schema = decoded_plan.get("schema") if isinstance(decoded_plan, dict) else None
62
+ except (TypeError, json.JSONDecodeError):
63
+ plan_schema = None
64
+ result_schema = (
65
+ "simplicio.dev-cli.edit-receipt/v1"
66
+ if plan_schema == "simplicio.dev-cli.edit-plan/v1"
67
+ else "simplicio.mechanical-edit-result/v1"
68
+ )
43
69
  policy = standalone_policy_for_root(a.root)
44
70
  result: dict[str, Any]
45
71
  if a.apply and not policy.write_allowed:
46
72
  result = {
47
- "schema": "simplicio.mechanical-edit-result/v1",
73
+ "schema": result_schema,
48
74
  "status": "refused",
49
75
  "applied": False,
50
76
  "noop": False,
@@ -209,10 +235,7 @@ def _run_atomic_native_create_plans(
209
235
  ),
210
236
  }
211
237
 
212
- try:
213
- payload = json.loads(completed.stdout)
214
- except json.JSONDecodeError:
215
- payload = None
238
+ payload = _decode_native_json(completed.stdout)
216
239
  result_files = payload.get("files") if isinstance(payload, dict) else None
217
240
  actual_files = (
218
241
  {str(item.get("file")) for item in result_files if isinstance(item, dict)}
@@ -347,9 +370,8 @@ def _run_native_edit_plans(
347
370
  }
348
371
  )
349
372
  continue
350
- try:
351
- result = json.loads(getattr(completed, "stdout", ""))
352
- except json.JSONDecodeError:
373
+ result = _decode_native_json(getattr(completed, "stdout", ""))
374
+ if result is None:
353
375
  errors.append(
354
376
  {
355
377
  "code": "native_delegation_malformed_output",
@@ -358,7 +380,9 @@ def _run_native_edit_plans(
358
380
  }
359
381
  )
360
382
  continue
361
- if not isinstance(result, dict) or result.get("status") != "ok":
383
+ native_status = result.get("status") if isinstance(result, dict) else None
384
+ final_status = result.get("final_status", native_status) if isinstance(result, dict) else None
385
+ if native_status not in {"ok", "success"} or final_status not in {"ok", "success"}:
362
386
  errors.append(
363
387
  {
364
388
  "code": "native_delegation_invalid_result",
@@ -416,6 +440,15 @@ def _invalid_delegated_plan(plan: Any) -> list[dict[str, Any]]:
416
440
  if not all(isinstance(item, dict) and isinstance(item.get("op"), str) for item in operations):
417
441
  return [{"code": "invalid_plan", "message": "Runtime plan operations must be objects with an op"}]
418
442
  return []
443
+ if plan.get("schema") == "simplicio.dev-cli.edit-plan/v1":
444
+ operations = plan.get("operations")
445
+ if not isinstance(operations, list) or not operations:
446
+ return [{"code": "invalid_plan", "message": "Dev CLI edit operations must be a non-empty list"}]
447
+ return (
448
+ []
449
+ if all(isinstance(item, dict) and isinstance(item.get("op"), str) for item in operations)
450
+ else [{"code": "invalid_plan", "message": "Dev CLI edit operations must be objects with an op"}]
451
+ )
419
452
  if plan.get("schema") != "simplicio.mechanical-edit/v1":
420
453
  return [{"code": "missing_schema", "message": "plan schema is unsupported"}]
421
454
  operations = plan.get("operations")
@@ -499,6 +532,15 @@ def run_edit(a: argparse.Namespace) -> int:
499
532
  )
500
533
  return _print_edit_result(result, a)
501
534
 
535
+ # The Dev CLI-owned plan is already in the canonical kernel vocabulary.
536
+ # Do not hand it to the legacy Runtime Mapper edit endpoint, whose older
537
+ # operation engine has different semantics. Runtime-backed callers can
538
+ # authorize the resulting effect at their boundary; the local kernel is
539
+ # the only implementation of this versioned plan.
540
+ if plan.get("schema") == "simplicio.dev-cli.edit-plan/v1":
541
+ record_delegation("edit", "python-forced", root=a.root, reason="canonical-dev-cli-plan")
542
+ return run_mechanical_edit(a)
543
+
502
544
  runtime = None if a.no_runtime else _runtime_edit_binary()
503
545
  if runtime:
504
546
  native_plans = None
@@ -0,0 +1,98 @@
1
+ """CLI adapter for the deterministic release-train contract."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import argparse
6
+ import json
7
+ import os
8
+ import tempfile
9
+ from pathlib import Path
10
+ from typing import Any
11
+
12
+ from ..release_train import (
13
+ ReleaseTrainError,
14
+ evaluate_release_event,
15
+ release_train_doctor,
16
+ )
17
+ from ..component_manifest import (
18
+ declared_dependency_range,
19
+ tested_dependency_version,
20
+ )
21
+
22
+
23
+ def _read_json(path: Path) -> Any:
24
+ try:
25
+ return json.loads(path.read_text(encoding="utf-8"))
26
+ except (OSError, json.JSONDecodeError) as error:
27
+ raise ReleaseTrainError(f"cannot read JSON {path}: {error}") from error
28
+
29
+
30
+ def _write_json_atomic(path: Path, value: dict[str, Any]) -> None:
31
+ path = path.resolve()
32
+ path.parent.mkdir(parents=True, exist_ok=True)
33
+ fd, temporary = tempfile.mkstemp(prefix=f".{path.name}.", suffix=".tmp", dir=str(path.parent))
34
+ try:
35
+ with os.fdopen(fd, "w", encoding="utf-8") as handle:
36
+ json.dump(value, handle, ensure_ascii=False, sort_keys=True, indent=2)
37
+ handle.write("\n")
38
+ handle.flush()
39
+ os.fsync(handle.fileno())
40
+ os.replace(temporary, path)
41
+ except Exception:
42
+ try:
43
+ os.unlink(temporary)
44
+ except OSError:
45
+ pass
46
+ raise
47
+
48
+
49
+ def _load_state(path: Path | None) -> dict[str, Any]:
50
+ if path is None or not path.exists():
51
+ return {"processed_event_ids": [], "last_processed_version": None}
52
+ state = _read_json(path)
53
+ if not isinstance(state, dict):
54
+ raise ReleaseTrainError("release-train state must be an object")
55
+ ids = state.get("processed_event_ids", [])
56
+ last = state.get("last_processed_version")
57
+ if not isinstance(ids, list) or not all(isinstance(item, str) for item in ids):
58
+ raise ReleaseTrainError("state.processed_event_ids must be a list of strings")
59
+ if last is not None and not isinstance(last, str):
60
+ raise ReleaseTrainError("state.last_processed_version must be a string or null")
61
+ return {"processed_event_ids": sorted(set(ids)), "last_processed_version": last}
62
+
63
+
64
+ def run(a: argparse.Namespace) -> int:
65
+ if a.release_train_command == "doctor":
66
+ print(json.dumps(release_train_doctor(a.root), ensure_ascii=False, indent=2, sort_keys=True))
67
+ return 0
68
+
69
+ try:
70
+ root = a.root
71
+ declared = a.declared_range or declared_dependency_range("simplicio-mapper", root)
72
+ tested = a.tested_against
73
+ if tested is None:
74
+ tested, _ = tested_dependency_version("simplicio-mapper", root)
75
+ state_path = Path(a.state) if a.state else None
76
+ state = _load_state(state_path)
77
+ evidence = _read_json(Path(a.conformance)) if a.conformance else None
78
+ decision = evaluate_release_event(
79
+ _read_json(Path(a.event)),
80
+ declared_range=declared,
81
+ tested_against=tested,
82
+ conformance=evidence,
83
+ active_task=a.active_task,
84
+ processed_event_ids=state["processed_event_ids"],
85
+ last_processed_version=state["last_processed_version"],
86
+ )
87
+ if a.record and decision.status == "accepted" and state_path is not None:
88
+ _write_json_atomic(state_path, decision.state)
89
+ print(json.dumps(decision.to_dict(), ensure_ascii=False, indent=2, sort_keys=True))
90
+ return 0 if decision.status in {"accepted", "duplicate"} else 2
91
+ except (OSError, ReleaseTrainError, TypeError, ValueError) as error:
92
+ print(json.dumps({
93
+ "schema": "simplicio.dev-cli.release-train/v1",
94
+ "status": "blocked",
95
+ "reason_code": "invalid_input",
96
+ "reason": str(error),
97
+ }, ensure_ascii=False, indent=2, sort_keys=True))
98
+ return 2
@@ -12,20 +12,21 @@ and reports drift — all read-only, all local.
12
12
  and the cache is empty the field is ``null`` with
13
13
  ``unavailable_reason: "registry_unreachable"`` — never a fabricated version.
14
14
 
15
- Explicitly NOT implemented here, and why:
16
-
17
- - **Receiving a Mapper release event over a real transport** — no event
18
- bus/webhook receiver exists in this repo or session.
19
- `component_manifest.parse_component_manifest` is ready to validate a
20
- manifest the moment one arrives (see its docstring), but nothing
21
- delivers one today.
22
- - **Auto-creating/merging a version-bump PR** — auto-merging a dependency
23
- bump without human review contradicts this repo's AGENTS.md rules.
24
- Declared out of scope, not a capability gap for this command.
15
+ This read-only command deliberately does not mutate the checkout. The checked-
16
+ in release-train workflows own authenticated event receipt, deduplicated PR
17
+ updates, PyPI publication, and Loop propagation; this command reports their
18
+ local version/drift state and remains safe to run during an active task.
19
+
20
+ The workflow boundary is intentional:
21
+
22
+ - **Receiving a Mapper release event** is handled by
23
+ `.github/workflows/release-train-reconcile.yml`.
24
+ - **Creating or merging a version-bump PR** is handled by the fixed
25
+ `release-train/mapper-latest` branch and its gate/promote workflows.
26
+ - **Dispatching `simplicio-loop`** is handled only after the signed PyPI
27
+ publication receipt in `.github/workflows/publish.yml`.
25
28
  - **SBOM/signing/provenance** — no signing identity available in this
26
29
  environment.
27
- - **Triggering `simplicio-loop`** — cross-repo propagation is a separate
28
- release-train step, not part of the local versions report.
29
30
  """
30
31
 
31
32
  from __future__ import annotations
@@ -41,9 +42,11 @@ from ..component_manifest import (
41
42
  check_version_against_range,
42
43
  declared_dependency_range,
43
44
  detect_drift,
45
+ tested_dependency_artifacts,
44
46
  tested_dependency_version,
45
47
  )
46
48
  from ..ecosystem import _pypi_latest
49
+ from ..release_train import release_train_doctor
47
50
 
48
51
  CLI_PROG = "simplicio-py"
49
52
  MAPPER_DIST_NAME = "simplicio-mapper"
@@ -99,6 +102,9 @@ def versions_report(
99
102
  installed = _installed_mapper_version()
100
103
  declared_range = declared_dependency_range(MAPPER_DIST_NAME, root)
101
104
  tested_against, tested_reason = tested_dependency_version(MAPPER_DIST_NAME, root)
105
+ tested_artifact_version, tested_artifacts, tested_artifact_reason = tested_dependency_artifacts(
106
+ MAPPER_DIST_NAME, root
107
+ )
102
108
  latest_known, unavailable_reason = _latest_mapper_version(refresh=refresh)
103
109
 
104
110
  compatibility = (
@@ -111,6 +117,16 @@ def versions_report(
111
117
  tested_against=tested_against,
112
118
  )
113
119
  own_manifest = build_own_manifest(root)
120
+ release_train = release_train_doctor(root)
121
+ latest_compatible = (
122
+ latest_known is not None
123
+ and declared_range is not None
124
+ and check_version_against_range(latest_known, declared_range, name=MAPPER_DIST_NAME).status
125
+ == "compatible"
126
+ )
127
+ upgrade_available = bool(
128
+ installed and latest_compatible and latest_known != installed and latest_known is not None
129
+ )
114
130
 
115
131
  return {
116
132
  "schema": "simplicio.dev-cli.versions/v1",
@@ -120,12 +136,23 @@ def versions_report(
120
136
  "required": declared_range,
121
137
  "tested_against": tested_against,
122
138
  "tested_against_reason": tested_reason,
139
+ "tested_artifact_version": tested_artifact_version,
140
+ "tested_artifacts": tested_artifacts,
141
+ "tested_artifacts_reason": tested_artifact_reason,
123
142
  "latest_known": latest_known,
124
143
  "unavailable_reason": unavailable_reason,
125
144
  "compatibility": compatibility.to_dict() if compatibility else None,
145
+ "upgrade": {
146
+ "available": upgrade_available,
147
+ "from": installed,
148
+ "to": latest_known if upgrade_available else None,
149
+ "action": "recreate environment from the updated lockfile" if upgrade_available else None,
150
+ "safe_while_task_active": True,
151
+ },
126
152
  },
127
153
  "drift": drift.to_dict(),
128
154
  "own_manifest": own_manifest.to_dict(),
155
+ "release_train": release_train,
129
156
  }
130
157
 
131
158
 
@@ -158,6 +185,11 @@ def _render_human(payload: dict[str, Any]) -> None:
158
185
  print(f" version {own['version']}")
159
186
  print(f" commit {own['commit'] or '(unknown)'}")
160
187
  print(f" schema count {len(own['schema_versions'])}")
188
+ train = payload["release_train"]
189
+ print()
190
+ print("release train readiness:")
191
+ print(f" status {train['status']}")
192
+ print(f" reason {train['reason_code']}")
161
193
 
162
194
 
163
195
  def run(a: argparse.Namespace) -> int:
@@ -3,11 +3,11 @@ manifests and check them against this repo's own declared compatibility
3
3
  range (issue #232).
4
4
 
5
5
  Context (verified in the issue): `simplicio-cli` declares
6
- `simplicio-mapper>=0.23.1` in `pyproject.toml`, while the Mapper already
7
- publishes 0.24.0/0.24.1. That range lets a *clean* install resolve to the
6
+ `simplicio-mapper>=0.26.31,<0.27` in `pyproject.toml`, while the Mapper already
7
+ publishes the 0.26.x train. That range lets a *clean* install resolve to the
8
8
  newer Mapper, but it never proves the combination was actually exercised,
9
9
  and it never updates an *existing* environment/lock (this repo's own
10
- `uv.lock` still pins `simplicio-mapper==0.23.1` — see
10
+ `uv.lock` is now expected to pin the verified train candidate — see
11
11
  :func:`tested_mapper_version`). Issue #280 on the Mapper side (built by a
12
12
  parallel agent, not visible from here) is expected to add a
13
13
  ``simplicio.component-release/v1`` manifest and a `simplicio-mapper version
@@ -20,7 +20,7 @@ parallel agent, not visible from here) is expected to add a
20
20
  - :func:`check_component_compatibility` — real semver-range logic deciding
21
21
  whether a candidate manifest's version is COMPATIBLE, INCOMPATIBLE, or
22
22
  NEEDS_REVIEW against a declared range (e.g. this repo's own
23
- ``simplicio-mapper>=0.23.1``), parsed for real out of `pyproject.toml`.
23
+ ``simplicio-mapper>=0.26.27,<0.27``), parsed for real out of `pyproject.toml`.
24
24
  - :func:`build_own_manifest` — the reverse direction: build *this* repo's
25
25
  own ``simplicio.component-release/v1`` manifest (name=`simplicio-cli`,
26
26
  version from `pyproject.toml`/`__version__`, commit from
@@ -375,6 +375,73 @@ def tested_dependency_version(
375
375
  return None, "not_present_in_lockfile"
376
376
 
377
377
 
378
+ def tested_dependency_artifacts(
379
+ name: str, root: str | os.PathLike[str] | None = None
380
+ ) -> tuple[str | None, dict[str, Any], str]:
381
+ """Return the locked version and its immutable distribution digests.
382
+
383
+ The result is ``(version, artifacts, reason)`` where ``artifacts`` has a
384
+ ``sdist`` object and a ``wheels`` list when the lock records them. Hashes
385
+ are normalized to the ``sha256:...`` form used by component-release
386
+ events. Missing or malformed lock data is reported, never guessed.
387
+ """
388
+ if root is not None:
389
+ candidates = [Path(root).resolve() / "uv.lock"]
390
+ else:
391
+ candidates = [
392
+ Path.cwd() / "uv.lock",
393
+ Path(__file__).resolve().parent.parent / "uv.lock",
394
+ ]
395
+ lock_path = next((p for p in candidates if p.is_file()), None)
396
+ if lock_path is None:
397
+ return None, {}, "no_lockfile_found"
398
+ try:
399
+ text = lock_path.read_text(encoding="utf-8")
400
+ import tomllib # type: ignore[import-not-found]
401
+
402
+ data = tomllib.loads(text)
403
+ except ModuleNotFoundError:
404
+ try:
405
+ import tomli as tomllib # type: ignore[import-not-found,no-redef]
406
+
407
+ data = tomllib.loads(text)
408
+ except ModuleNotFoundError:
409
+ return None, {}, "tomllib_unavailable"
410
+ except (OSError, ValueError) as exc:
411
+ return None, {}, f"lockfile_unparseable: {exc}"
412
+ for package in data.get("package", []) or []:
413
+ if not isinstance(package, dict) or package.get("name") != name:
414
+ continue
415
+ version = package.get("version")
416
+ if not isinstance(version, str) or not version:
417
+ return None, {}, "lockfile_entry_missing_version"
418
+
419
+ def artifact(raw: Any) -> dict[str, Any] | None:
420
+ if not isinstance(raw, dict):
421
+ return None
422
+ digest = raw.get("hash")
423
+ if not isinstance(digest, str) or not digest.startswith("sha256:"):
424
+ return None
425
+ url = raw.get("url")
426
+ return {
427
+ "filename": Path(url).name if isinstance(url, str) else None,
428
+ "digest": digest,
429
+ "size": raw.get("size"),
430
+ }
431
+
432
+ artifacts: dict[str, Any] = {}
433
+ sdist = artifact(package.get("sdist"))
434
+ if sdist is not None:
435
+ artifacts["sdist"] = sdist
436
+ wheels = [item for item in (artifact(raw) for raw in package.get("wheels", []) or []) if item]
437
+ if wheels:
438
+ artifacts["wheels"] = wheels
439
+ if not artifacts:
440
+ return version, {}, "locked_entry_has_no_artifact_digests"
441
+ return version, artifacts, "locked_in_uv.lock"
442
+ return None, {}, "not_present_in_lockfile"
443
+
444
+
378
445
  # ---------------------------------------------------------------------------#
379
446
  # Compatibility check
380
447
  # ---------------------------------------------------------------------------#
@@ -659,6 +726,7 @@ __all__ = [
659
726
  "declared_dependency_range",
660
727
  "declared_own_version",
661
728
  "tested_dependency_version",
729
+ "tested_dependency_artifacts",
662
730
  "COMPATIBLE",
663
731
  "INCOMPATIBLE",
664
732
  "NEEDS_REVIEW",
@@ -6,10 +6,16 @@ import hashlib
6
6
  import json
7
7
  import os
8
8
  import time
9
+ from collections.abc import Mapping
9
10
  from copy import deepcopy
10
11
  from pathlib import Path, PurePosixPath, PureWindowsPath
11
12
  from typing import Any
12
13
 
14
+ from .mapper_binding import (
15
+ canonical_mapper_binding,
16
+ mapper_binding_digest,
17
+ validate_mapper_binding,
18
+ )
13
19
  from .mechanical_edit import execute_plan
14
20
  from .standalone_migration import load_effect_unknown_lock
15
21
  from .utils.fs import write_text_atomic
@@ -109,7 +115,7 @@ def _diagnostics(result: dict[str, Any]) -> dict[str, Any]:
109
115
  def _preview(plan: dict[str, Any], root: Path) -> dict[str, Any]:
110
116
  try:
111
117
  return execute_plan(plan, root=root, apply=False, allow_native=False)
112
- except Exception as exc:
118
+ except Exception as exc: # noqa: BLE001 - convert any executor failure to a refusal
113
119
  return {
114
120
  "status": "refused",
115
121
  "planned_diff": "",
@@ -145,6 +151,11 @@ def _validated_preview(
145
151
  return empty, "plan_digest_mismatch", None
146
152
  if plan_envelope.get("effect_digest") != plan_envelope.get("plan_digest"):
147
153
  return empty, "effect_digest_mismatch", None
154
+ mapper_binding = plan.get("mapper_binding")
155
+ if mapper_binding is not None:
156
+ binding_errors = validate_mapper_binding(mapper_binding)
157
+ if binding_errors:
158
+ return empty, "mapper_binding_invalid", {"errors": binding_errors}
148
159
  result = _preview(plan, root)
149
160
  diagnostics = _diagnostics(result)
150
161
  if result.get("status") != "ok":
@@ -162,14 +173,32 @@ def _validated_preview(
162
173
  return diagnostics, None, None
163
174
 
164
175
 
165
- def compile_plan(plan: dict[str, Any], *, root: str | Path, idempotency_key: str) -> dict[str, Any]:
176
+ def compile_plan(
177
+ plan: dict[str, Any],
178
+ *,
179
+ root: str | Path,
180
+ idempotency_key: str,
181
+ mapper_binding: Mapping[str, Any] | None = None,
182
+ ) -> dict[str, Any]:
166
183
  """Validate and bind a mechanical plan without writing or spawning."""
167
184
  root_path = Path(root).resolve()
168
185
  if not isinstance(plan, dict):
169
- raise ValueError("plan must be an object")
186
+ raise ValueError("plan must be an object") # noqa: TRY004 - public contract error
170
187
  if not idempotency_key:
171
188
  raise ValueError("idempotency_key is required")
172
189
  normalized = _normalized_plan(plan)
190
+ supplied_binding = mapper_binding if mapper_binding is not None else normalized.get("mapper_binding")
191
+ if supplied_binding is not None:
192
+ binding_errors = validate_mapper_binding(supplied_binding)
193
+ if binding_errors:
194
+ return {
195
+ "schema": PLAN_SCHEMA,
196
+ "status": "blocked",
197
+ "idempotency_key": idempotency_key,
198
+ "reason": "mapper_binding_invalid",
199
+ "errors": binding_errors,
200
+ }
201
+ normalized["mapper_binding"] = canonical_mapper_binding(supplied_binding)
173
202
  preview = _preview(normalized, root_path)
174
203
  digest = _digest(normalized)
175
204
  diagnostics = _diagnostics(preview)
@@ -182,6 +211,9 @@ def compile_plan(plan: dict[str, Any], *, root: str | Path, idempotency_key: str
182
211
  "diagnostics": diagnostics,
183
212
  "provenance": {"producer": "simplicio-dev-cli", "operator": "native-deterministic"},
184
213
  }
214
+ if "mapper_binding" in normalized:
215
+ base["mapper_binding"] = normalized["mapper_binding"]
216
+ base["provenance"]["mapper_binding_digest"] = mapper_binding_digest(normalized["mapper_binding"])
185
217
  if preview.get("status") != "ok":
186
218
  return base | {"status": "blocked", "errors": preview.get("errors", [])}
187
219
  try:
@@ -210,6 +242,8 @@ def dry_run(plan_envelope: dict[str, Any], *, root: str | Path) -> dict[str, Any
210
242
  "diagnostics": diagnostics,
211
243
  "provenance": plan_envelope.get("provenance", {}),
212
244
  }
245
+ if isinstance(plan_envelope.get("mapper_binding"), dict):
246
+ payload["mapper_binding"] = plan_envelope["mapper_binding"]
213
247
  if reason:
214
248
  payload["reason"] = reason
215
249
  if preconditions is not None:
@@ -333,6 +367,9 @@ def apply(plan_envelope: dict[str, Any], *, root: str | Path) -> dict[str, Any]:
333
367
  "provenance": plan_envelope.get("provenance", {}),
334
368
  "recovery_locator": str(receipt_path.relative_to(root_path)),
335
369
  }
370
+ if isinstance(plan_envelope.get("mapper_binding"), dict):
371
+ receipt["mapper_binding"] = plan_envelope["mapper_binding"]
372
+ receipt["mapper_binding_digest"] = mapper_binding_digest(plan_envelope["mapper_binding"])
336
373
  receipt["receipt_digest"] = _receipt_digest(receipt)
337
374
  write_text_atomic(receipt_path, _canonical(receipt) + "\n")
338
375
  return receipt | {"replayed": False}
@@ -136,6 +136,9 @@ def _render_mapper_versions(payload: dict) -> None:
136
136
  print(f" drift {drift['kind']}: {drift['reason']}")
137
137
  else:
138
138
  print(" drift none")
139
+ train = payload.get("release_train")
140
+ if train:
141
+ print(f" release train {train['status']} — {train['reason_code']}")
139
142
 
140
143
 
141
144
  def _render_native_delegation(summary: dict) -> None: