slipwai 1.0.0.dev10__py3-none-any.whl

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 (1298) hide show
  1. slipwai/__init__.py +6 -0
  2. slipwai/__main__.py +6 -0
  3. slipwai/_bundle/CHANGELOG.md +3 -0
  4. slipwai/_bundle/VERSION +1 -0
  5. slipwai/_bundle/assets/README.md +40 -0
  6. slipwai/_bundle/assets/adoption/docs/change-strategy.md +137 -0
  7. slipwai/_bundle/assets/adoption/scripts/check-convergence.py +208 -0
  8. slipwai/_bundle/assets/adoption/scripts/ratchet.py +250 -0
  9. slipwai/_bundle/assets/adoption/support.json +424 -0
  10. slipwai/_bundle/assets/adoption/wrappers/gradle/gradle-wrapper.jar.base64 +834 -0
  11. slipwai/_bundle/assets/adoption/wrappers/gradle/gradle-wrapper.properties +9 -0
  12. slipwai/_bundle/assets/adoption/wrappers/gradle/gradlew +248 -0
  13. slipwai/_bundle/assets/adoption/wrappers/gradle/gradlew.bat +82 -0
  14. slipwai/_bundle/assets/adoption/wrappers/gradle/source-notes.md +15 -0
  15. slipwai/_bundle/assets/backing-services/docker-compose.yml +91 -0
  16. slipwai/_bundle/assets/backing-services/env.example +78 -0
  17. slipwai/_bundle/assets/backing-services/go/checkpoint_store_contract.go +296 -0
  18. slipwai/_bundle/assets/backing-services/go/checkpoint_store_memory.go +63 -0
  19. slipwai/_bundle/assets/backing-services/go/checkpoint_store_memory_test.go +21 -0
  20. slipwai/_bundle/assets/backing-services/go/checkpoint_store_postgres.go +125 -0
  21. slipwai/_bundle/assets/backing-services/go/checkpoint_store_postgres_integration_test.go +148 -0
  22. slipwai/_bundle/assets/backing-services/go/checkpoint_store_sqlite.go +143 -0
  23. slipwai/_bundle/assets/backing-services/go/checkpoint_store_sqlite_test.go +28 -0
  24. slipwai/_bundle/assets/backing-services/go/config.go +164 -0
  25. slipwai/_bundle/assets/backing-services/go/config_test.go +150 -0
  26. slipwai/_bundle/assets/backing-services/go/event_store_contract.go +849 -0
  27. slipwai/_bundle/assets/backing-services/go/event_store_memory.go +373 -0
  28. slipwai/_bundle/assets/backing-services/go/event_store_memory_test.go +93 -0
  29. slipwai/_bundle/assets/backing-services/go/event_store_postgres.go +762 -0
  30. slipwai/_bundle/assets/backing-services/go/event_store_postgres_integration_test.go +466 -0
  31. slipwai/_bundle/assets/backing-services/go/event_store_sqlite.go +736 -0
  32. slipwai/_bundle/assets/backing-services/go/event_store_sqlite_test.go +137 -0
  33. slipwai/_bundle/assets/backing-services/go/events.go +396 -0
  34. slipwai/_bundle/assets/backing-services/go/http_app.go +242 -0
  35. slipwai/_bundle/assets/backing-services/go/http_app_test.go +268 -0
  36. slipwai/_bundle/assets/backing-services/go/http_openapi_test.go +47 -0
  37. slipwai/_bundle/assets/backing-services/go/http_security.go +97 -0
  38. slipwai/_bundle/assets/backing-services/go/http_security_test.go +92 -0
  39. slipwai/_bundle/assets/backing-services/go/migrate_main.go +145 -0
  40. slipwai/_bundle/assets/backing-services/go/migrate_main_test.go +86 -0
  41. slipwai/_bundle/assets/backing-services/go/migrations_embed.go +22 -0
  42. slipwai/_bundle/assets/backing-services/go/migrations_keep +3 -0
  43. slipwai/_bundle/assets/backing-services/go/oidc_keycloak.go +105 -0
  44. slipwai/_bundle/assets/backing-services/go/oidc_keycloak_test.go +63 -0
  45. slipwai/_bundle/assets/backing-services/go/openapi.yaml +140 -0
  46. slipwai/_bundle/assets/backing-services/go/projections.go +264 -0
  47. slipwai/_bundle/assets/backing-services/go/projections_test.go +404 -0
  48. slipwai/_bundle/assets/backing-services/go/projections_ticker.go +130 -0
  49. slipwai/_bundle/assets/backing-services/go/projections_ticker_test.go +277 -0
  50. slipwai/_bundle/assets/backing-services/go/read_models.go +115 -0
  51. slipwai/_bundle/assets/backing-services/go/serve_main.go +161 -0
  52. slipwai/_bundle/assets/backing-services/go/tracing.go +182 -0
  53. slipwai/_bundle/assets/backing-services/go/tracing_test.go +171 -0
  54. slipwai/_bundle/assets/backing-services/go/users_oidc_keycloak.go +102 -0
  55. slipwai/_bundle/assets/backing-services/go/users_oidc_keycloak_test.go +65 -0
  56. slipwai/_bundle/assets/backing-services/java/actor.java +10 -0
  57. slipwai/_bundle/assets/backing-services/java/append_result.java +30 -0
  58. slipwai/_bundle/assets/backing-services/java/causation_id.java +48 -0
  59. slipwai/_bundle/assets/backing-services/java/checkpoint_store_memory.java +56 -0
  60. slipwai/_bundle/assets/backing-services/java/checkpoint_store_postgres.java +131 -0
  61. slipwai/_bundle/assets/backing-services/java/checkpoint_store_sqlite.java +144 -0
  62. slipwai/_bundle/assets/backing-services/java/committed_event.java +50 -0
  63. slipwai/_bundle/assets/backing-services/java/condition.java +11 -0
  64. slipwai/_bundle/assets/backing-services/java/conditional_append_result.java +29 -0
  65. slipwai/_bundle/assets/backing-services/java/correlation_id.java +55 -0
  66. slipwai/_bundle/assets/backing-services/java/database_url.java +78 -0
  67. slipwai/_bundle/assets/backing-services/java/domain_event.java +61 -0
  68. slipwai/_bundle/assets/backing-services/java/event_store.java +168 -0
  69. slipwai/_bundle/assets/backing-services/java/event_store_exception.java +21 -0
  70. slipwai/_bundle/assets/backing-services/java/event_store_memory.java +219 -0
  71. slipwai/_bundle/assets/backing-services/java/event_store_memory_database.java +144 -0
  72. slipwai/_bundle/assets/backing-services/java/event_store_postgres.java +714 -0
  73. slipwai/_bundle/assets/backing-services/java/event_store_sqlite.java +739 -0
  74. slipwai/_bundle/assets/backing-services/java/event_visitor.java +13 -0
  75. slipwai/_bundle/assets/backing-services/java/http_schema_failure.java +43 -0
  76. slipwai/_bundle/assets/backing-services/java/migrate_main.java +103 -0
  77. slipwai/_bundle/assets/backing-services/java/oidc_keycloak.java +101 -0
  78. slipwai/_bundle/assets/backing-services/java/projection.java +34 -0
  79. slipwai/_bundle/assets/backing-services/java/projections.java +248 -0
  80. slipwai/_bundle/assets/backing-services/java/read_models.java +86 -0
  81. slipwai/_bundle/assets/backing-services/java/tag_query.java +70 -0
  82. slipwai/_bundle/assets/backing-services/java/tagged_read.java +17 -0
  83. slipwai/_bundle/assets/backing-services/java/tags_of.java +53 -0
  84. slipwai/_bundle/assets/backing-services/java/tests/checkpoint_store_contract.java +242 -0
  85. slipwai/_bundle/assets/backing-services/java/tests/checkpoint_store_memory_test.java +20 -0
  86. slipwai/_bundle/assets/backing-services/java/tests/checkpoint_store_sqlite_test.java +33 -0
  87. slipwai/_bundle/assets/backing-services/java/tests/database_url_test.java +79 -0
  88. slipwai/_bundle/assets/backing-services/java/tests/event_store_contract.java +715 -0
  89. slipwai/_bundle/assets/backing-services/java/tests/event_store_memory_test.java +19 -0
  90. slipwai/_bundle/assets/backing-services/java/tests/event_store_sqlite_test.java +89 -0
  91. slipwai/_bundle/assets/backing-services/java/tests/oidc_keycloak_test.java +73 -0
  92. slipwai/_bundle/assets/backing-services/java/tests/projections_test.java +302 -0
  93. slipwai/_bundle/assets/backing-services/java/tests/users_oidc_keycloak_test.java +135 -0
  94. slipwai/_bundle/assets/backing-services/java/transactions.java +96 -0
  95. slipwai/_bundle/assets/backing-services/java/users_oidc_keycloak.java +114 -0
  96. slipwai/_bundle/assets/backing-services/java-quarkus/config_source_registration +1 -0
  97. slipwai/_bundle/assets/backing-services/java-quarkus/database_url_config_source.java +85 -0
  98. slipwai/_bundle/assets/backing-services/java-quarkus/http_flags_resource.java +40 -0
  99. slipwai/_bundle/assets/backing-services/java-quarkus/http_health_check.java +37 -0
  100. slipwai/_bundle/assets/backing-services/java-quarkus/http_not_found_mapper.java +36 -0
  101. slipwai/_bundle/assets/backing-services/java-quarkus/jta_transactions.java +132 -0
  102. slipwai/_bundle/assets/backing-services/java-quarkus/oidc_keycloak_augmentor.java +77 -0
  103. slipwai/_bundle/assets/backing-services/java-quarkus/scheduled_projections.java +95 -0
  104. slipwai/_bundle/assets/backing-services/java-quarkus/tests/checkpoint_store_postgres_it.java +142 -0
  105. slipwai/_bundle/assets/backing-services/java-quarkus/tests/event_store_postgres_it.java +377 -0
  106. slipwai/_bundle/assets/backing-services/java-quarkus/tests/http_app_test.java +90 -0
  107. slipwai/_bundle/assets/backing-services/java-quarkus/users_current_customer.java +79 -0
  108. slipwai/_bundle/assets/backing-services/java-spring/database_url_environment_post_processor.java +82 -0
  109. slipwai/_bundle/assets/backing-services/java-spring/environment_post_processor_registration +3 -0
  110. slipwai/_bundle/assets/backing-services/java-spring/http_flags_controller.java +40 -0
  111. slipwai/_bundle/assets/backing-services/java-spring/http_health_indicator.java +43 -0
  112. slipwai/_bundle/assets/backing-services/java-spring/http_not_found_advice.java +43 -0
  113. slipwai/_bundle/assets/backing-services/java-spring/oidc_keycloak_security.java +126 -0
  114. slipwai/_bundle/assets/backing-services/java-spring/scheduled_projections.java +94 -0
  115. slipwai/_bundle/assets/backing-services/java-spring/spring_transactions.java +86 -0
  116. slipwai/_bundle/assets/backing-services/java-spring/tests/checkpoint_store_postgres_it.java +142 -0
  117. slipwai/_bundle/assets/backing-services/java-spring/tests/event_store_postgres_it.java +377 -0
  118. slipwai/_bundle/assets/backing-services/java-spring/tests/http_app_test.java +115 -0
  119. slipwai/_bundle/assets/backing-services/java-spring/users_security.java +143 -0
  120. slipwai/_bundle/assets/backing-services/keycloak/README.md +90 -0
  121. slipwai/_bundle/assets/backing-services/keycloak/realms/app.json +59 -0
  122. slipwai/_bundle/assets/backing-services/keycloak/realms/customers.json +83 -0
  123. slipwai/_bundle/assets/backing-services/prune.py +1508 -0
  124. slipwai/_bundle/assets/backing-services/python/checkpoint_store_memory.py +62 -0
  125. slipwai/_bundle/assets/backing-services/python/checkpoint_store_postgres.py +115 -0
  126. slipwai/_bundle/assets/backing-services/python/checkpoint_store_sqlite.py +109 -0
  127. slipwai/_bundle/assets/backing-services/python/event_store_memory.py +252 -0
  128. slipwai/_bundle/assets/backing-services/python/event_store_postgres.py +619 -0
  129. slipwai/_bundle/assets/backing-services/python/event_store_sqlite.py +515 -0
  130. slipwai/_bundle/assets/backing-services/python/events.py +405 -0
  131. slipwai/_bundle/assets/backing-services/python/http_app.py +329 -0
  132. slipwai/_bundle/assets/backing-services/python/logging_setup.py +80 -0
  133. slipwai/_bundle/assets/backing-services/python/main.py +92 -0
  134. slipwai/_bundle/assets/backing-services/python/migrations_apply.py +100 -0
  135. slipwai/_bundle/assets/backing-services/python/oidc_keycloak.py +86 -0
  136. slipwai/_bundle/assets/backing-services/python/openapi-flags.json +140 -0
  137. slipwai/_bundle/assets/backing-services/python/openapi.json +118 -0
  138. slipwai/_bundle/assets/backing-services/python/openapi_export.py +44 -0
  139. slipwai/_bundle/assets/backing-services/python/projections.py +228 -0
  140. slipwai/_bundle/assets/backing-services/python/projections_lifespan.py +125 -0
  141. slipwai/_bundle/assets/backing-services/python/read_models.py +133 -0
  142. slipwai/_bundle/assets/backing-services/python/settings.py +125 -0
  143. slipwai/_bundle/assets/backing-services/python/tests/checkpoint_store_contract.py +191 -0
  144. slipwai/_bundle/assets/backing-services/python/tests/conftest.py +16 -0
  145. slipwai/_bundle/assets/backing-services/python/tests/event_store_contract.py +627 -0
  146. slipwai/_bundle/assets/backing-services/python/tests/test_checkpoint_store_memory.py +24 -0
  147. slipwai/_bundle/assets/backing-services/python/tests/test_checkpoint_store_postgres.py +79 -0
  148. slipwai/_bundle/assets/backing-services/python/tests/test_checkpoint_store_sqlite.py +25 -0
  149. slipwai/_bundle/assets/backing-services/python/tests/test_event_store_memory.py +21 -0
  150. slipwai/_bundle/assets/backing-services/python/tests/test_event_store_postgres.py +316 -0
  151. slipwai/_bundle/assets/backing-services/python/tests/test_event_store_sqlite.py +113 -0
  152. slipwai/_bundle/assets/backing-services/python/tests/test_http_app.py +255 -0
  153. slipwai/_bundle/assets/backing-services/python/tests/test_logging_setup.py +70 -0
  154. slipwai/_bundle/assets/backing-services/python/tests/test_oidc_keycloak.py +44 -0
  155. slipwai/_bundle/assets/backing-services/python/tests/test_projections.py +298 -0
  156. slipwai/_bundle/assets/backing-services/python/tests/test_projections_lifespan.py +146 -0
  157. slipwai/_bundle/assets/backing-services/python/tests/test_settings.py +90 -0
  158. slipwai/_bundle/assets/backing-services/python/tests/test_tracing.py +92 -0
  159. slipwai/_bundle/assets/backing-services/python/tests/test_users_oidc_keycloak.py +47 -0
  160. slipwai/_bundle/assets/backing-services/python/tracing.py +133 -0
  161. slipwai/_bundle/assets/backing-services/python/users_oidc_keycloak.py +96 -0
  162. slipwai/_bundle/assets/backing-services/sql/001_events.sql +29 -0
  163. slipwai/_bundle/assets/backing-services/sql/002_events_append_only.sql +30 -0
  164. slipwai/_bundle/assets/backing-services/sql/003_projection_checkpoints.sql +27 -0
  165. slipwai/_bundle/assets/backing-services/sql/004_event_tags.sql +30 -0
  166. slipwai/_bundle/assets/backing-services/typescript/checkpoint-store-memory.ts +46 -0
  167. slipwai/_bundle/assets/backing-services/typescript/checkpoint-store-postgres.ts +94 -0
  168. slipwai/_bundle/assets/backing-services/typescript/checkpoint-store-sqlite.ts +103 -0
  169. slipwai/_bundle/assets/backing-services/typescript/config.ts +92 -0
  170. slipwai/_bundle/assets/backing-services/typescript/event-store-memory.ts +208 -0
  171. slipwai/_bundle/assets/backing-services/typescript/event-store-postgres.ts +590 -0
  172. slipwai/_bundle/assets/backing-services/typescript/event-store-sqlite.ts +523 -0
  173. slipwai/_bundle/assets/backing-services/typescript/events.ts +334 -0
  174. slipwai/_bundle/assets/backing-services/typescript/http-app.ts +452 -0
  175. slipwai/_bundle/assets/backing-services/typescript/main.ts +63 -0
  176. slipwai/_bundle/assets/backing-services/typescript/migrations/001_events.js +39 -0
  177. slipwai/_bundle/assets/backing-services/typescript/migrations/002_events_append_only.js +46 -0
  178. slipwai/_bundle/assets/backing-services/typescript/migrations/003_projection_checkpoints.js +40 -0
  179. slipwai/_bundle/assets/backing-services/typescript/migrations/004_event_tags.js +42 -0
  180. slipwai/_bundle/assets/backing-services/typescript/oidc-keycloak.ts +82 -0
  181. slipwai/_bundle/assets/backing-services/typescript/openapi-export.ts +37 -0
  182. slipwai/_bundle/assets/backing-services/typescript/openapi-flags.json +113 -0
  183. slipwai/_bundle/assets/backing-services/typescript/openapi.json +94 -0
  184. slipwai/_bundle/assets/backing-services/typescript/projections-plugin.ts +95 -0
  185. slipwai/_bundle/assets/backing-services/typescript/projections.ts +223 -0
  186. slipwai/_bundle/assets/backing-services/typescript/read-models.ts +106 -0
  187. slipwai/_bundle/assets/backing-services/typescript/tests/checkpoint-store-contract.ts +176 -0
  188. slipwai/_bundle/assets/backing-services/typescript/tests/checkpoint-store-memory.test.ts +13 -0
  189. slipwai/_bundle/assets/backing-services/typescript/tests/checkpoint-store-postgres.test.ts +87 -0
  190. slipwai/_bundle/assets/backing-services/typescript/tests/checkpoint-store-sqlite.test.ts +16 -0
  191. slipwai/_bundle/assets/backing-services/typescript/tests/event-store-contract.ts +555 -0
  192. slipwai/_bundle/assets/backing-services/typescript/tests/event-store-memory.test.ts +11 -0
  193. slipwai/_bundle/assets/backing-services/typescript/tests/event-store-postgres.test.ts +269 -0
  194. slipwai/_bundle/assets/backing-services/typescript/tests/event-store-sqlite.test.ts +146 -0
  195. slipwai/_bundle/assets/backing-services/typescript/tests/http-app.test.ts +528 -0
  196. slipwai/_bundle/assets/backing-services/typescript/tests/oidc-keycloak.test.ts +46 -0
  197. slipwai/_bundle/assets/backing-services/typescript/tests/projections-plugin.test.ts +105 -0
  198. slipwai/_bundle/assets/backing-services/typescript/tests/projections.test.ts +290 -0
  199. slipwai/_bundle/assets/backing-services/typescript/tests/tracing.test.ts +101 -0
  200. slipwai/_bundle/assets/backing-services/typescript/tests/users-oidc-keycloak.test.ts +50 -0
  201. slipwai/_bundle/assets/backing-services/typescript/tracing.ts +180 -0
  202. slipwai/_bundle/assets/backing-services/typescript/users-oidc-keycloak.ts +84 -0
  203. slipwai/_bundle/assets/backing-services/typescript/vitest.integration.config.ts +16 -0
  204. slipwai/_bundle/assets/frontends/react-vite/api-client/package.json +17 -0
  205. slipwai/_bundle/assets/frontends/react-vite/api-client/src/index.ts +90 -0
  206. slipwai/_bundle/assets/frontends/react-vite/app/index.html +12 -0
  207. slipwai/_bundle/assets/frontends/react-vite/app/package.json +33 -0
  208. slipwai/_bundle/assets/frontends/react-vite/app/src/App.tsx +86 -0
  209. slipwai/_bundle/assets/frontends/react-vite/app/src/main.tsx +46 -0
  210. slipwai/_bundle/assets/frontends/react-vite/app/src/styles/base.css +242 -0
  211. slipwai/_bundle/assets/frontends/react-vite/app/src/styles/tokens.css +75 -0
  212. slipwai/_bundle/assets/frontends/react-vite/app/tests/App.test.tsx +38 -0
  213. slipwai/_bundle/assets/frontends/react-vite/app/tests/setup.ts +10 -0
  214. slipwai/_bundle/assets/frontends/react-vite/app/tsconfig.json +26 -0
  215. slipwai/_bundle/assets/frontends/react-vite/app/vite.config.ts +70 -0
  216. slipwai/_bundle/assets/frontends/react-vite/app-flags-local/flags.test.ts +58 -0
  217. slipwai/_bundle/assets/frontends/react-vite/app-flags-local/flags.ts +87 -0
  218. slipwai/_bundle/assets/frontends/react-vite/app-flags-target/flags.test.ts +97 -0
  219. slipwai/_bundle/assets/frontends/react-vite/app-flags-target/flags.ts +108 -0
  220. slipwai/_bundle/assets/frontends/react-vite/app-route-client/Home.test.tsx +46 -0
  221. slipwai/_bundle/assets/frontends/react-vite/app-route-client/Home.tsx +97 -0
  222. slipwai/_bundle/assets/frontends/react-vite/app-route-plain/Home.test.tsx +50 -0
  223. slipwai/_bundle/assets/frontends/react-vite/app-route-plain/Home.tsx +111 -0
  224. slipwai/_bundle/assets/frontends/react-vite/features/users-keycloak/src/auth/Account.tsx +88 -0
  225. slipwai/_bundle/assets/frontends/react-vite/features/users-keycloak/src/auth/users.tsx +102 -0
  226. slipwai/_bundle/assets/frontends/react-vite/features/users-keycloak/tests/auth/Account.test.tsx +110 -0
  227. slipwai/_bundle/assets/frontends/react-vite/features/users-keycloak/tests/auth/users.test.ts +64 -0
  228. slipwai/_bundle/assets/frontends/react-vite/locks/frontend-only-users-keycloak.json +3175 -0
  229. slipwai/_bundle/assets/frontends/react-vite/locks/frontend-only.json +3139 -0
  230. slipwai/_bundle/assets/frontends/react-vite/locks/typescript-backend-fastify-postgres-users-keycloak.json +4820 -0
  231. slipwai/_bundle/assets/frontends/react-vite/locks/typescript-backend-fastify-postgres.json +4784 -0
  232. slipwai/_bundle/assets/frontends/react-vite/locks/typescript-backend-fastify-users-keycloak.json +4434 -0
  233. slipwai/_bundle/assets/frontends/react-vite/locks/typescript-backend-fastify.json +4398 -0
  234. slipwai/_bundle/assets/frontends/react-vite/locks/typescript-backend-postgres-users-keycloak.json +3623 -0
  235. slipwai/_bundle/assets/frontends/react-vite/locks/typescript-backend-postgres.json +3587 -0
  236. slipwai/_bundle/assets/frontends/react-vite/locks/typescript-backend-users-keycloak.json +3190 -0
  237. slipwai/_bundle/assets/frontends/react-vite/locks/typescript-backend.json +3154 -0
  238. slipwai/_bundle/assets/languages/go/app/.gremlins.yaml +44 -0
  239. slipwai/_bundle/assets/languages/go/app/application/README.md +21 -0
  240. slipwai/_bundle/assets/languages/go/app/domain/README.md +23 -0
  241. slipwai/_bundle/assets/languages/go/app/health/health.go +7 -0
  242. slipwai/_bundle/assets/languages/go/app/health/health_test.go +9 -0
  243. slipwai/_bundle/assets/languages/go/event-port/application/ports/events/events.go +18 -0
  244. slipwai/_bundle/assets/languages/go/event-port/application/ports/events/events_test.go +10 -0
  245. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/accept-child-id-remove-exercise.md +40 -0
  246. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/acl-stripe-payment-translation.md +64 -0
  247. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/aggregate-sizing-occasion.md +17 -0
  248. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/aggregate-vs-read-model.md +30 -0
  249. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/always-valid-occasion-invariants.md +85 -0
  250. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/branded-id-types.md +28 -0
  251. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/create-child-through-root.md +43 -0
  252. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/decider-pattern-order.md +110 -0
  253. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/describe-order-exhaustive-switch.md +50 -0
  254. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/discriminated-union-pledge-result.md +54 -0
  255. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/domain-behavioral-tests.md +40 -0
  256. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/domain-service-pledge-contribution.md +139 -0
  257. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/domain-service-test-pledge-contribution.md +86 -0
  258. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/domain-service-vs-use-case.md +162 -0
  259. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/entity-rename-occasion.md +37 -0
  260. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/error-propagation-through-layers.md +92 -0
  261. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/exception-vs-result-type.md +37 -0
  262. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/explicit-return-pledge-no-events.md +85 -0
  263. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/fake-vs-mock-repository.md +59 -0
  264. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/in-process-event-dispatch.md +127 -0
  265. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/integration-test-order-repository.md +23 -0
  266. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/invariant-driven-vending-machine.md +53 -0
  267. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/money-value-object-factory.md +43 -0
  268. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/multiple-error-reasons-union.md +28 -0
  269. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/naming-signature-domain-vs-use-case.md +69 -0
  270. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/occasion-repository-interface.md +24 -0
  271. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/one-aggregate-per-transaction.md +63 -0
  272. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/optimistic-locking-repository-save.md +38 -0
  273. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/optimistic-locking-version-field.md +11 -0
  274. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/order-lifecycle-union.md +50 -0
  275. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/outbox-pattern-dispatch.md +114 -0
  276. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/pledge-result-types.md +80 -0
  277. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/process-manager-gift-purchase.md +140 -0
  278. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/property-based-test-pledge-budget.md +35 -0
  279. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/purity-test-domain-vs-presentation.md +52 -0
  280. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/readonly-array-child-collection.md +20 -0
  281. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/shared-kernel-package-layout.md +6 -0
  282. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/specification-can-pledge.md +75 -0
  283. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/test-decide-order-events.md +86 -0
  284. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/test-error-funding-closed.md +54 -0
  285. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/test-factory-get-occasion.md +99 -0
  286. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/ubiquitous-language-glossary-types.md +46 -0
  287. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/use-case-test-pledge-contribution.md +206 -0
  288. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/wrong-catch-rethrow-context.md +15 -0
  289. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/wrong-exception-for-business-rule.md +18 -0
  290. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/wrong-generic-error-type.md +13 -0
  291. slipwai/_bundle/assets/languages/go/examples/domain-driven-design/zod-branded-type-bridging.md +153 -0
  292. slipwai/_bundle/assets/languages/go/examples/event-sourcing/account-decider-and-evolve.md +272 -0
  293. slipwai/_bundle/assets/languages/go/examples/event-sourcing/balance-view-apply-fold.md +116 -0
  294. slipwai/_bundle/assets/languages/go/examples/event-sourcing/balance-view-projection.md +97 -0
  295. slipwai/_bundle/assets/languages/go/examples/event-sourcing/catch-up-checkpoint-transaction.md +70 -0
  296. slipwai/_bundle/assets/languages/go/examples/event-sourcing/command-handler-loop.md +53 -0
  297. slipwai/_bundle/assets/languages/go/examples/event-sourcing/command-handler-retry-loop.md +71 -0
  298. slipwai/_bundle/assets/languages/go/examples/event-sourcing/decide-withdraw-example.md +34 -0
  299. slipwai/_bundle/assets/languages/go/examples/event-sourcing/decider-behaviour-tests.md +83 -0
  300. slipwai/_bundle/assets/languages/go/examples/event-sourcing/decider-insufficient-funds-test.md +74 -0
  301. slipwai/_bundle/assets/languages/go/examples/event-sourcing/decider-type.md +22 -0
  302. slipwai/_bundle/assets/languages/go/examples/event-sourcing/decision-result-type.md +21 -0
  303. slipwai/_bundle/assets/languages/go/examples/event-sourcing/deposit-money-command-with-timestamp.md +13 -0
  304. slipwai/_bundle/assets/languages/go/examples/event-sourcing/event-envelope-type.md +59 -0
  305. slipwai/_bundle/assets/languages/go/examples/event-sourcing/event-store-port-interface.md +32 -0
  306. slipwai/_bundle/assets/languages/go/examples/event-sourcing/event-store-port.md +32 -0
  307. slipwai/_bundle/assets/languages/go/examples/event-sourcing/evolve-behaviour-via-withdraw-limit.md +38 -0
  308. slipwai/_bundle/assets/languages/go/examples/event-sourcing/generic-rehydrate-fold.md +20 -0
  309. slipwai/_bundle/assets/languages/go/examples/event-sourcing/idempotent-projection-dedupe.md +48 -0
  310. slipwai/_bundle/assets/languages/go/examples/event-sourcing/in-memory-event-store-fake.md +101 -0
  311. slipwai/_bundle/assets/languages/go/examples/event-sourcing/inline-view-in-append-transaction.md +86 -0
  312. slipwai/_bundle/assets/languages/go/examples/event-sourcing/live-view-bounded-fold.md +60 -0
  313. slipwai/_bundle/assets/languages/go/examples/event-sourcing/order-placed-upcaster.md +50 -0
  314. slipwai/_bundle/assets/languages/go/examples/event-sourcing/projection-behaviour-tests.md +65 -0
  315. slipwai/_bundle/assets/languages/go/examples/event-sourcing/rehydrate-left-fold.md +17 -0
  316. slipwai/_bundle/assets/languages/go/examples/event-sourcing/tags-of-from-identifying-attributes.md +56 -0
  317. slipwai/_bundle/assets/languages/go/examples/event-sourcing/todo-list-claiming.md +62 -0
  318. slipwai/_bundle/assets/languages/go/examples/event-sourcing/tolerant-reader-read-path.md +25 -0
  319. slipwai/_bundle/assets/languages/go/examples/event-sourcing/upcaster-behaviour-test.md +29 -0
  320. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/adapter-error-translation.md +46 -0
  321. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/antipattern-business-logic-in-adapter.md +23 -0
  322. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/antipattern-bypass-adapter.md +23 -0
  323. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/antipattern-domain-depends-on-infrastructure.md +18 -0
  324. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/antipattern-pattern-shaped-names.md +39 -0
  325. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/antipattern-technology-shaped-port.md +13 -0
  326. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/composition-root-http-entrypoint.md +50 -0
  327. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/composition-root-queue-entrypoint.md +29 -0
  328. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/cqrs-lite-dashboard-query-function.md +68 -0
  329. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/cqrs-lite-domain-transform-read-data.md +36 -0
  330. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/cross-cutting-auth-driving-adapter.md +40 -0
  331. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/cross-cutting-domain-authorization.md +27 -0
  332. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/cross-cutting-domain-probe-port.md +51 -0
  333. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/cross-cutting-error-formatting-http.md +35 -0
  334. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/cross-cutting-technical-telemetry-adapters.md +52 -0
  335. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/cross-cutting-transactional-persistence-port.md +86 -0
  336. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/cross-cutting-use-case-identity.md +25 -0
  337. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/dependency-injection-order-placement.md +140 -0
  338. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/driven-adapter-and-fake-implementation.md +69 -0
  339. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/greenfield-driven-port-fake.md +25 -0
  340. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/greenfield-driving-port-constant.md +38 -0
  341. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/incremental-after-thin-entrypoint.md +79 -0
  342. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/incremental-before-tangled-handler.md +77 -0
  343. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/incremental-create-adapter.md +65 -0
  344. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/incremental-create-use-case.md +77 -0
  345. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/incremental-extract-domain-function.md +40 -0
  346. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/incremental-extract-port-interface.md +28 -0
  347. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/port-interface-definitions.md +63 -0
  348. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/reads-vs-writes-query-function-example.md +42 -0
  349. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/testing-create-test-db-helper.md +22 -0
  350. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/testing-domain-unit-test-example.md +13 -0
  351. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/testing-fake-order-repo.md +31 -0
  352. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/testing-narrow-integration-tests.md +39 -0
  353. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/testing-recording-fake-instrumentation.md +46 -0
  354. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/testing-use-case-primary-boundary.md +44 -0
  355. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/worked-example-domain-function-record-pledge.md +59 -0
  356. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/worked-example-domain-types.md +76 -0
  357. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/worked-example-domain-unit-test.md +47 -0
  358. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/worked-example-driven-adapters.md +110 -0
  359. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/worked-example-driving-adapter-entrypoint.md +143 -0
  360. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/worked-example-fakes-for-testing.md +92 -0
  361. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/worked-example-port-interfaces.md +71 -0
  362. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/worked-example-use-case-orchestration.md +52 -0
  363. slipwai/_bundle/assets/languages/go/examples/hexagonal-architecture/worked-example-use-case-test.md +187 -0
  364. slipwai/_bundle/assets/languages/go/examples/testing/correct-complete-factory-object.md +9 -0
  365. slipwai/_bundle/assets/languages/go/examples/testing/correct-fresh-state-per-test.md +15 -0
  366. slipwai/_bundle/assets/languages/go/examples/testing/correct-import-real-schema.md +12 -0
  367. slipwai/_bundle/assets/languages/go/examples/testing/correct-inline-tested-through-behavior.md +33 -0
  368. slipwai/_bundle/assets/languages/go/examples/testing/correct-testing-behavior-public-api.md +48 -0
  369. slipwai/_bundle/assets/languages/go/examples/testing/coverage-theater-assert-called-only-correct.md +14 -0
  370. slipwai/_bundle/assets/languages/go/examples/testing/coverage-theater-assert-called-only-wrong.md +11 -0
  371. slipwai/_bundle/assets/languages/go/examples/testing/coverage-theater-branch-coverage-correct.md +24 -0
  372. slipwai/_bundle/assets/languages/go/examples/testing/coverage-theater-happy-path-only-wrong.md +11 -0
  373. slipwai/_bundle/assets/languages/go/examples/testing/coverage-theater-mock-function-under-test-correct.md +14 -0
  374. slipwai/_bundle/assets/languages/go/examples/testing/coverage-theater-mock-function-under-test-wrong.md +11 -0
  375. slipwai/_bundle/assets/languages/go/examples/testing/coverage-theater-trivial-getter-setter-correct.md +9 -0
  376. slipwai/_bundle/assets/languages/go/examples/testing/coverage-theater-trivial-getter-setter-wrong.md +11 -0
  377. slipwai/_bundle/assets/languages/go/examples/testing/factory-basic-pattern.md +24 -0
  378. slipwai/_bundle/assets/languages/go/examples/testing/factory-complete-example.md +22 -0
  379. slipwai/_bundle/assets/languages/go/examples/testing/factory-composition.md +38 -0
  380. slipwai/_bundle/assets/languages/go/examples/testing/reach-validation-through-behavior.md +46 -0
  381. slipwai/_bundle/assets/languages/go/examples/testing/wrong-extracted-helper-with-own-test.md +19 -0
  382. slipwai/_bundle/assets/languages/go/examples/testing/wrong-incomplete-factory-object.md +6 -0
  383. slipwai/_bundle/assets/languages/go/examples/testing/wrong-redefine-schema-in-test.md +12 -0
  384. slipwai/_bundle/assets/languages/go/examples/testing/wrong-shared-mutable-fixture.md +14 -0
  385. slipwai/_bundle/assets/languages/go/examples/testing/wrong-testing-implementation-detail.md +32 -0
  386. slipwai/_bundle/assets/languages/go/flags/flags/flags.go +202 -0
  387. slipwai/_bundle/assets/languages/go/flags/flags/flags_test.go +146 -0
  388. slipwai/_bundle/assets/languages/go/modules/base/go.mod +48 -0
  389. slipwai/_bundle/assets/languages/go/modules/base/go.sum +75 -0
  390. slipwai/_bundle/assets/languages/go/modules/postgres/go.mod +46 -0
  391. slipwai/_bundle/assets/languages/go/modules/postgres/go.sum +90 -0
  392. slipwai/_bundle/assets/languages/go/modules/sqlite/go.mod +50 -0
  393. slipwai/_bundle/assets/languages/go/modules/sqlite/go.sum +115 -0
  394. slipwai/_bundle/assets/languages/go/scripts/go-coverage.py +135 -0
  395. slipwai/_bundle/assets/languages/go/scripts/go-mutation.py +183 -0
  396. slipwai/_bundle/assets/languages/java/build/.gitattributes +6 -0
  397. slipwai/_bundle/assets/languages/java/build/.mvn/wrapper/maven-wrapper.properties +3 -0
  398. slipwai/_bundle/assets/languages/java/build/config/checkstyle.xml +57 -0
  399. slipwai/_bundle/assets/languages/java/build/config/pmd-ruleset.xml +23 -0
  400. slipwai/_bundle/assets/languages/java/build/config/spotbugs-exclude.xml +10 -0
  401. slipwai/_bundle/assets/languages/java/build/mvnw +295 -0
  402. slipwai/_bundle/assets/languages/java/build/mvnw.cmd +189 -0
  403. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/accept-child-id-remove-exercise.md +17 -0
  404. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/acl-stripe-payment-translation.md +27 -0
  405. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/aggregate-sizing-occasion.md +16 -0
  406. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/aggregate-vs-read-model.md +18 -0
  407. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/always-valid-occasion-invariants.md +53 -0
  408. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/branded-id-types.md +26 -0
  409. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/create-child-through-root.md +15 -0
  410. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/decider-pattern-order.md +53 -0
  411. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/describe-order-exhaustive-switch.md +16 -0
  412. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/discriminated-union-pledge-result.md +25 -0
  413. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/domain-behavioral-tests.md +20 -0
  414. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/domain-service-pledge-contribution.md +31 -0
  415. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/domain-service-test-pledge-contribution.md +13 -0
  416. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/domain-service-vs-use-case.md +53 -0
  417. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/entity-rename-occasion.md +12 -0
  418. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/error-propagation-through-layers.md +43 -0
  419. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/exception-vs-result-type.md +21 -0
  420. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/explicit-return-pledge-no-events.md +29 -0
  421. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/fake-vs-mock-repository.md +29 -0
  422. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/in-process-event-dispatch.md +40 -0
  423. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/integration-test-order-repository.md +24 -0
  424. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/invariant-driven-vending-machine.md +36 -0
  425. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/money-value-object-factory.md +50 -0
  426. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/multiple-error-reasons-union.md +15 -0
  427. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/naming-signature-domain-vs-use-case.md +11 -0
  428. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/occasion-repository-interface.md +14 -0
  429. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/one-aggregate-per-transaction.md +30 -0
  430. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/optimistic-locking-repository-save.md +28 -0
  431. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/optimistic-locking-version-field.md +10 -0
  432. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/order-lifecycle-union.md +25 -0
  433. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/outbox-pattern-dispatch.md +42 -0
  434. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/pledge-result-types.md +21 -0
  435. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/process-manager-gift-purchase.md +78 -0
  436. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/property-based-test-pledge-budget.md +29 -0
  437. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/purity-test-domain-vs-presentation.md +22 -0
  438. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/readonly-array-child-collection.md +15 -0
  439. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/shared-kernel-package-layout.md +16 -0
  440. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/specification-can-pledge.md +22 -0
  441. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/test-decide-order-events.md +22 -0
  442. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/test-error-funding-closed.md +15 -0
  443. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/test-factory-get-occasion.md +16 -0
  444. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/ubiquitous-language-glossary-types.md +15 -0
  445. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/use-case-test-pledge-contribution.md +19 -0
  446. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/wrong-catch-rethrow-context.md +12 -0
  447. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/wrong-exception-for-business-rule.md +10 -0
  448. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/wrong-generic-error-type.md +7 -0
  449. slipwai/_bundle/assets/languages/java/examples/domain-driven-design/zod-branded-type-bridging.md +38 -0
  450. slipwai/_bundle/assets/languages/java/examples/event-sourcing/account-decider-and-evolve.md +135 -0
  451. slipwai/_bundle/assets/languages/java/examples/event-sourcing/balance-view-apply-fold.md +18 -0
  452. slipwai/_bundle/assets/languages/java/examples/event-sourcing/balance-view-projection.md +61 -0
  453. slipwai/_bundle/assets/languages/java/examples/event-sourcing/catch-up-checkpoint-transaction.md +29 -0
  454. slipwai/_bundle/assets/languages/java/examples/event-sourcing/command-handler-loop.md +24 -0
  455. slipwai/_bundle/assets/languages/java/examples/event-sourcing/command-handler-retry-loop.md +39 -0
  456. slipwai/_bundle/assets/languages/java/examples/event-sourcing/decide-withdraw-example.md +18 -0
  457. slipwai/_bundle/assets/languages/java/examples/event-sourcing/decider-behaviour-tests.md +47 -0
  458. slipwai/_bundle/assets/languages/java/examples/event-sourcing/decider-insufficient-funds-test.md +21 -0
  459. slipwai/_bundle/assets/languages/java/examples/event-sourcing/decider-type.md +21 -0
  460. slipwai/_bundle/assets/languages/java/examples/event-sourcing/decision-result-type.md +24 -0
  461. slipwai/_bundle/assets/languages/java/examples/event-sourcing/deposit-money-command-with-timestamp.md +7 -0
  462. slipwai/_bundle/assets/languages/java/examples/event-sourcing/event-envelope-type.md +40 -0
  463. slipwai/_bundle/assets/languages/java/examples/event-sourcing/event-store-port-interface.md +25 -0
  464. slipwai/_bundle/assets/languages/java/examples/event-sourcing/event-store-port.md +19 -0
  465. slipwai/_bundle/assets/languages/java/examples/event-sourcing/evolve-behaviour-via-withdraw-limit.md +13 -0
  466. slipwai/_bundle/assets/languages/java/examples/event-sourcing/generic-rehydrate-fold.md +13 -0
  467. slipwai/_bundle/assets/languages/java/examples/event-sourcing/idempotent-projection-dedupe.md +24 -0
  468. slipwai/_bundle/assets/languages/java/examples/event-sourcing/in-memory-event-store-fake.md +53 -0
  469. slipwai/_bundle/assets/languages/java/examples/event-sourcing/inline-view-in-append-transaction.md +72 -0
  470. slipwai/_bundle/assets/languages/java/examples/event-sourcing/live-view-bounded-fold.md +54 -0
  471. slipwai/_bundle/assets/languages/java/examples/event-sourcing/order-placed-upcaster.md +32 -0
  472. slipwai/_bundle/assets/languages/java/examples/event-sourcing/projection-behaviour-tests.md +34 -0
  473. slipwai/_bundle/assets/languages/java/examples/event-sourcing/rehydrate-left-fold.md +9 -0
  474. slipwai/_bundle/assets/languages/java/examples/event-sourcing/tags-of-from-identifying-attributes.md +61 -0
  475. slipwai/_bundle/assets/languages/java/examples/event-sourcing/todo-list-claiming.md +53 -0
  476. slipwai/_bundle/assets/languages/java/examples/event-sourcing/tolerant-reader-read-path.md +33 -0
  477. slipwai/_bundle/assets/languages/java/examples/event-sourcing/upcaster-behaviour-test.md +11 -0
  478. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/adapter-error-translation.md +34 -0
  479. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/antipattern-business-logic-in-adapter.md +19 -0
  480. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/antipattern-bypass-adapter.md +27 -0
  481. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/antipattern-domain-depends-on-infrastructure.md +13 -0
  482. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/antipattern-pattern-shaped-names.md +19 -0
  483. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/antipattern-technology-shaped-port.md +15 -0
  484. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/composition-root-http-entrypoint.md +51 -0
  485. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/composition-root-queue-entrypoint.md +27 -0
  486. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/cqrs-lite-dashboard-query-function.md +23 -0
  487. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/cqrs-lite-domain-transform-read-data.md +16 -0
  488. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/cross-cutting-auth-driving-adapter.md +30 -0
  489. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/cross-cutting-domain-authorization.md +15 -0
  490. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/cross-cutting-domain-probe-port.md +48 -0
  491. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/cross-cutting-error-formatting-http.md +26 -0
  492. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/cross-cutting-technical-telemetry-adapters.md +26 -0
  493. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/cross-cutting-transactional-persistence-port.md +35 -0
  494. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/cross-cutting-use-case-identity.md +20 -0
  495. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/dependency-injection-order-placement.md +61 -0
  496. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/driven-adapter-and-fake-implementation.md +53 -0
  497. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/greenfield-driven-port-fake.md +30 -0
  498. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/greenfield-driving-port-constant.md +14 -0
  499. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/incremental-after-thin-entrypoint.md +39 -0
  500. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/incremental-before-tangled-handler.md +37 -0
  501. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/incremental-create-adapter.md +45 -0
  502. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/incremental-create-use-case.md +30 -0
  503. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/incremental-extract-domain-function.md +21 -0
  504. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/incremental-extract-port-interface.md +14 -0
  505. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/port-interface-definitions.md +43 -0
  506. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/reads-vs-writes-query-function-example.md +23 -0
  507. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/testing-create-test-db-helper.md +15 -0
  508. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/testing-domain-unit-test-example.md +8 -0
  509. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/testing-fake-order-repo.md +27 -0
  510. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/testing-narrow-integration-tests.md +42 -0
  511. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/testing-recording-fake-instrumentation.md +41 -0
  512. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/testing-use-case-primary-boundary.md +27 -0
  513. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/worked-example-domain-function-record-pledge.md +32 -0
  514. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/worked-example-domain-types.md +63 -0
  515. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/worked-example-domain-unit-test.md +18 -0
  516. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/worked-example-driven-adapters.md +45 -0
  517. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/worked-example-driving-adapter-entrypoint.md +44 -0
  518. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/worked-example-fakes-for-testing.md +62 -0
  519. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/worked-example-port-interfaces.md +56 -0
  520. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/worked-example-use-case-orchestration.md +46 -0
  521. slipwai/_bundle/assets/languages/java/examples/hexagonal-architecture/worked-example-use-case-test.md +68 -0
  522. slipwai/_bundle/assets/languages/java/examples/testing/correct-complete-factory-object.md +13 -0
  523. slipwai/_bundle/assets/languages/java/examples/testing/correct-fresh-state-per-test.md +13 -0
  524. slipwai/_bundle/assets/languages/java/examples/testing/correct-import-real-schema.md +13 -0
  525. slipwai/_bundle/assets/languages/java/examples/testing/correct-inline-tested-through-behavior.md +18 -0
  526. slipwai/_bundle/assets/languages/java/examples/testing/correct-testing-behavior-public-api.md +25 -0
  527. slipwai/_bundle/assets/languages/java/examples/testing/coverage-theater-assert-called-only-correct.md +9 -0
  528. slipwai/_bundle/assets/languages/java/examples/testing/coverage-theater-assert-called-only-wrong.md +10 -0
  529. slipwai/_bundle/assets/languages/java/examples/testing/coverage-theater-branch-coverage-correct.md +21 -0
  530. slipwai/_bundle/assets/languages/java/examples/testing/coverage-theater-happy-path-only-wrong.md +7 -0
  531. slipwai/_bundle/assets/languages/java/examples/testing/coverage-theater-mock-function-under-test-correct.md +8 -0
  532. slipwai/_bundle/assets/languages/java/examples/testing/coverage-theater-mock-function-under-test-wrong.md +10 -0
  533. slipwai/_bundle/assets/languages/java/examples/testing/coverage-theater-trivial-getter-setter-correct.md +8 -0
  534. slipwai/_bundle/assets/languages/java/examples/testing/coverage-theater-trivial-getter-setter-wrong.md +8 -0
  535. slipwai/_bundle/assets/languages/java/examples/testing/factory-basic-pattern.md +16 -0
  536. slipwai/_bundle/assets/languages/java/examples/testing/factory-complete-example.md +17 -0
  537. slipwai/_bundle/assets/languages/java/examples/testing/factory-composition.md +24 -0
  538. slipwai/_bundle/assets/languages/java/examples/testing/reach-validation-through-behavior.md +25 -0
  539. slipwai/_bundle/assets/languages/java/examples/testing/wrong-extracted-helper-with-own-test.md +15 -0
  540. slipwai/_bundle/assets/languages/java/examples/testing/wrong-incomplete-factory-object.md +7 -0
  541. slipwai/_bundle/assets/languages/java/examples/testing/wrong-redefine-schema-in-test.md +9 -0
  542. slipwai/_bundle/assets/languages/java/examples/testing/wrong-shared-mutable-fixture.md +14 -0
  543. slipwai/_bundle/assets/languages/java/examples/testing/wrong-testing-implementation-detail.md +26 -0
  544. slipwai/_bundle/assets/languages/java/flags/src/main/java/com/example/deliverystarter/flags/Flags.java +242 -0
  545. slipwai/_bundle/assets/languages/java/flags/src/test/java/com/example/deliverystarter/flags/FlagsTest.java +116 -0
  546. slipwai/_bundle/assets/languages/java-quarkus/app/pom.xml +428 -0
  547. slipwai/_bundle/assets/languages/java-quarkus/app/src/main/java/com/example/deliverystarter/application/README.md +20 -0
  548. slipwai/_bundle/assets/languages/java-quarkus/app/src/main/java/com/example/deliverystarter/domain/README.md +24 -0
  549. slipwai/_bundle/assets/languages/java-quarkus/app/src/main/java/com/example/deliverystarter/health/HealthStatus.java +18 -0
  550. slipwai/_bundle/assets/languages/java-quarkus/app/src/main/resources/application.properties +157 -0
  551. slipwai/_bundle/assets/languages/java-quarkus/app/src/test/java/com/example/deliverystarter/health/HealthStatusTest.java +21 -0
  552. slipwai/_bundle/assets/languages/java-spring/app/pom.xml +535 -0
  553. slipwai/_bundle/assets/languages/java-spring/app/src/main/java/com/example/deliverystarter/ServiceApplication.java +28 -0
  554. slipwai/_bundle/assets/languages/java-spring/app/src/main/java/com/example/deliverystarter/application/README.md +20 -0
  555. slipwai/_bundle/assets/languages/java-spring/app/src/main/java/com/example/deliverystarter/domain/README.md +23 -0
  556. slipwai/_bundle/assets/languages/java-spring/app/src/main/java/com/example/deliverystarter/health/HealthStatus.java +18 -0
  557. slipwai/_bundle/assets/languages/java-spring/app/src/main/resources/application.properties +158 -0
  558. slipwai/_bundle/assets/languages/java-spring/app/src/test/java/com/example/deliverystarter/health/HealthStatusTest.java +21 -0
  559. slipwai/_bundle/assets/languages/python/app/pyproject.toml +50 -0
  560. slipwai/_bundle/assets/languages/python/app/src/delivery_starter/__init__.py +9 -0
  561. slipwai/_bundle/assets/languages/python/app/src/delivery_starter/application/README.md +21 -0
  562. slipwai/_bundle/assets/languages/python/app/src/delivery_starter/domain/README.md +23 -0
  563. slipwai/_bundle/assets/languages/python/app/tests/test_health.py +5 -0
  564. slipwai/_bundle/assets/languages/python/event-port/src/delivery_starter/application/ports/events.py +27 -0
  565. slipwai/_bundle/assets/languages/python/event-port/tests/test_events.py +5 -0
  566. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/accept-child-id-remove-exercise.md +35 -0
  567. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/acl-stripe-payment-translation.md +67 -0
  568. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/aggregate-sizing-occasion.md +19 -0
  569. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/aggregate-vs-read-model.md +31 -0
  570. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/always-valid-occasion-invariants.md +69 -0
  571. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/branded-id-types.md +24 -0
  572. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/create-child-through-root.md +33 -0
  573. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/decider-pattern-order.md +121 -0
  574. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/describe-order-exhaustive-switch.md +56 -0
  575. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/discriminated-union-pledge-result.md +38 -0
  576. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/domain-behavioral-tests.md +16 -0
  577. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/domain-service-pledge-contribution.md +135 -0
  578. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/domain-service-test-pledge-contribution.md +113 -0
  579. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/domain-service-vs-use-case.md +181 -0
  580. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/entity-rename-occasion.md +35 -0
  581. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/error-propagation-through-layers.md +70 -0
  582. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/exception-vs-result-type.md +34 -0
  583. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/explicit-return-pledge-no-events.md +89 -0
  584. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/fake-vs-mock-repository.md +46 -0
  585. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/in-process-event-dispatch.md +129 -0
  586. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/integration-test-order-repository.md +12 -0
  587. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/invariant-driven-vending-machine.md +46 -0
  588. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/money-value-object-factory.md +29 -0
  589. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/multiple-error-reasons-union.md +23 -0
  590. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/naming-signature-domain-vs-use-case.md +86 -0
  591. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/occasion-repository-interface.md +25 -0
  592. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/one-aggregate-per-transaction.md +68 -0
  593. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/optimistic-locking-repository-save.md +23 -0
  594. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/optimistic-locking-version-field.md +12 -0
  595. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/order-lifecycle-union.md +38 -0
  596. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/outbox-pattern-dispatch.md +123 -0
  597. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/pledge-result-types.md +62 -0
  598. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/process-manager-gift-purchase.md +154 -0
  599. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/property-based-test-pledge-budget.md +28 -0
  600. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/purity-test-domain-vs-presentation.md +32 -0
  601. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/readonly-array-child-collection.md +10 -0
  602. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/shared-kernel-package-layout.md +8 -0
  603. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/specification-can-pledge.md +66 -0
  604. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/test-decide-order-events.md +82 -0
  605. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/test-error-funding-closed.md +23 -0
  606. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/test-factory-get-occasion.md +70 -0
  607. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/ubiquitous-language-glossary-types.md +36 -0
  608. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/use-case-test-pledge-contribution.md +216 -0
  609. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/wrong-catch-rethrow-context.md +8 -0
  610. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/wrong-exception-for-business-rule.md +11 -0
  611. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/wrong-generic-error-type.md +21 -0
  612. slipwai/_bundle/assets/languages/python/examples/domain-driven-design/zod-branded-type-bridging.md +101 -0
  613. slipwai/_bundle/assets/languages/python/examples/event-sourcing/account-decider-and-evolve.md +193 -0
  614. slipwai/_bundle/assets/languages/python/examples/event-sourcing/balance-view-apply-fold.md +98 -0
  615. slipwai/_bundle/assets/languages/python/examples/event-sourcing/balance-view-projection.md +98 -0
  616. slipwai/_bundle/assets/languages/python/examples/event-sourcing/catch-up-checkpoint-transaction.md +42 -0
  617. slipwai/_bundle/assets/languages/python/examples/event-sourcing/command-handler-loop.md +49 -0
  618. slipwai/_bundle/assets/languages/python/examples/event-sourcing/command-handler-retry-loop.md +50 -0
  619. slipwai/_bundle/assets/languages/python/examples/event-sourcing/decide-withdraw-example.md +19 -0
  620. slipwai/_bundle/assets/languages/python/examples/event-sourcing/decider-behaviour-tests.md +45 -0
  621. slipwai/_bundle/assets/languages/python/examples/event-sourcing/decider-insufficient-funds-test.md +36 -0
  622. slipwai/_bundle/assets/languages/python/examples/event-sourcing/decider-type.md +18 -0
  623. slipwai/_bundle/assets/languages/python/examples/event-sourcing/decision-result-type.md +30 -0
  624. slipwai/_bundle/assets/languages/python/examples/event-sourcing/deposit-money-command-with-timestamp.md +12 -0
  625. slipwai/_bundle/assets/languages/python/examples/event-sourcing/event-envelope-type.md +36 -0
  626. slipwai/_bundle/assets/languages/python/examples/event-sourcing/event-store-port-interface.md +33 -0
  627. slipwai/_bundle/assets/languages/python/examples/event-sourcing/event-store-port.md +32 -0
  628. slipwai/_bundle/assets/languages/python/examples/event-sourcing/evolve-behaviour-via-withdraw-limit.md +13 -0
  629. slipwai/_bundle/assets/languages/python/examples/event-sourcing/generic-rehydrate-fold.md +14 -0
  630. slipwai/_bundle/assets/languages/python/examples/event-sourcing/idempotent-projection-dedupe.md +37 -0
  631. slipwai/_bundle/assets/languages/python/examples/event-sourcing/in-memory-event-store-fake.md +51 -0
  632. slipwai/_bundle/assets/languages/python/examples/event-sourcing/inline-view-in-append-transaction.md +67 -0
  633. slipwai/_bundle/assets/languages/python/examples/event-sourcing/live-view-bounded-fold.md +50 -0
  634. slipwai/_bundle/assets/languages/python/examples/event-sourcing/order-placed-upcaster.md +56 -0
  635. slipwai/_bundle/assets/languages/python/examples/event-sourcing/projection-behaviour-tests.md +41 -0
  636. slipwai/_bundle/assets/languages/python/examples/event-sourcing/rehydrate-left-fold.md +8 -0
  637. slipwai/_bundle/assets/languages/python/examples/event-sourcing/tags-of-from-identifying-attributes.md +50 -0
  638. slipwai/_bundle/assets/languages/python/examples/event-sourcing/todo-list-claiming.md +60 -0
  639. slipwai/_bundle/assets/languages/python/examples/event-sourcing/tolerant-reader-read-path.md +19 -0
  640. slipwai/_bundle/assets/languages/python/examples/event-sourcing/upcaster-behaviour-test.md +14 -0
  641. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/adapter-error-translation.md +39 -0
  642. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/antipattern-business-logic-in-adapter.md +32 -0
  643. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/antipattern-bypass-adapter.md +14 -0
  644. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/antipattern-domain-depends-on-infrastructure.md +16 -0
  645. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/antipattern-pattern-shaped-names.md +27 -0
  646. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/antipattern-technology-shaped-port.md +15 -0
  647. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/composition-root-http-entrypoint.md +41 -0
  648. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/composition-root-queue-entrypoint.md +15 -0
  649. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/cqrs-lite-dashboard-query-function.md +42 -0
  650. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/cqrs-lite-domain-transform-read-data.md +34 -0
  651. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/cross-cutting-auth-driving-adapter.md +38 -0
  652. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/cross-cutting-domain-authorization.md +10 -0
  653. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/cross-cutting-domain-probe-port.md +44 -0
  654. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/cross-cutting-error-formatting-http.md +20 -0
  655. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/cross-cutting-technical-telemetry-adapters.md +45 -0
  656. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/cross-cutting-transactional-persistence-port.md +91 -0
  657. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/cross-cutting-use-case-identity.md +21 -0
  658. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/dependency-injection-order-placement.md +120 -0
  659. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/driven-adapter-and-fake-implementation.md +36 -0
  660. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/greenfield-driven-port-fake.md +24 -0
  661. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/greenfield-driving-port-constant.md +15 -0
  662. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/incremental-after-thin-entrypoint.md +59 -0
  663. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/incremental-before-tangled-handler.md +48 -0
  664. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/incremental-create-adapter.md +24 -0
  665. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/incremental-create-use-case.md +52 -0
  666. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/incremental-extract-domain-function.md +36 -0
  667. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/incremental-extract-port-interface.md +16 -0
  668. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/port-interface-definitions.md +69 -0
  669. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/reads-vs-writes-query-function-example.md +36 -0
  670. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/testing-create-test-db-helper.md +11 -0
  671. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/testing-domain-unit-test-example.md +10 -0
  672. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/testing-fake-order-repo.md +16 -0
  673. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/testing-narrow-integration-tests.md +26 -0
  674. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/testing-recording-fake-instrumentation.md +37 -0
  675. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/testing-use-case-primary-boundary.md +27 -0
  676. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/worked-example-domain-function-record-pledge.md +70 -0
  677. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/worked-example-domain-types.md +65 -0
  678. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/worked-example-domain-unit-test.md +38 -0
  679. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/worked-example-driven-adapters.md +128 -0
  680. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/worked-example-driving-adapter-entrypoint.md +102 -0
  681. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/worked-example-fakes-for-testing.md +62 -0
  682. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/worked-example-port-interfaces.md +77 -0
  683. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/worked-example-use-case-orchestration.md +53 -0
  684. slipwai/_bundle/assets/languages/python/examples/hexagonal-architecture/worked-example-use-case-test.md +164 -0
  685. slipwai/_bundle/assets/languages/python/examples/testing/correct-complete-factory-object.md +10 -0
  686. slipwai/_bundle/assets/languages/python/examples/testing/correct-fresh-state-per-test.md +10 -0
  687. slipwai/_bundle/assets/languages/python/examples/testing/correct-import-real-schema.md +8 -0
  688. slipwai/_bundle/assets/languages/python/examples/testing/correct-inline-tested-through-behavior.md +15 -0
  689. slipwai/_bundle/assets/languages/python/examples/testing/correct-testing-behavior-public-api.md +21 -0
  690. slipwai/_bundle/assets/languages/python/examples/testing/coverage-theater-assert-called-only-correct.md +7 -0
  691. slipwai/_bundle/assets/languages/python/examples/testing/coverage-theater-assert-called-only-wrong.md +9 -0
  692. slipwai/_bundle/assets/languages/python/examples/testing/coverage-theater-branch-coverage-correct.md +17 -0
  693. slipwai/_bundle/assets/languages/python/examples/testing/coverage-theater-happy-path-only-wrong.md +8 -0
  694. slipwai/_bundle/assets/languages/python/examples/testing/coverage-theater-mock-function-under-test-correct.md +7 -0
  695. slipwai/_bundle/assets/languages/python/examples/testing/coverage-theater-mock-function-under-test-wrong.md +9 -0
  696. slipwai/_bundle/assets/languages/python/examples/testing/coverage-theater-trivial-getter-setter-correct.md +5 -0
  697. slipwai/_bundle/assets/languages/python/examples/testing/coverage-theater-trivial-getter-setter-wrong.md +5 -0
  698. slipwai/_bundle/assets/languages/python/examples/testing/factory-basic-pattern.md +23 -0
  699. slipwai/_bundle/assets/languages/python/examples/testing/factory-complete-example.md +17 -0
  700. slipwai/_bundle/assets/languages/python/examples/testing/factory-composition.md +24 -0
  701. slipwai/_bundle/assets/languages/python/examples/testing/reach-validation-through-behavior.md +27 -0
  702. slipwai/_bundle/assets/languages/python/examples/testing/wrong-extracted-helper-with-own-test.md +12 -0
  703. slipwai/_bundle/assets/languages/python/examples/testing/wrong-incomplete-factory-object.md +5 -0
  704. slipwai/_bundle/assets/languages/python/examples/testing/wrong-redefine-schema-in-test.md +11 -0
  705. slipwai/_bundle/assets/languages/python/examples/testing/wrong-shared-mutable-fixture.md +12 -0
  706. slipwai/_bundle/assets/languages/python/examples/testing/wrong-testing-implementation-detail.md +22 -0
  707. slipwai/_bundle/assets/languages/python/flags/src/delivery_starter/flags.py +179 -0
  708. slipwai/_bundle/assets/languages/python/flags/tests/test_flags.py +90 -0
  709. slipwai/_bundle/assets/languages/python/locks/uv-fastapi-postgres.lock +1200 -0
  710. slipwai/_bundle/assets/languages/python/locks/uv-fastapi.lock +1120 -0
  711. slipwai/_bundle/assets/languages/python/locks/uv-postgres.lock +463 -0
  712. slipwai/_bundle/assets/languages/python/locks/uv.lock +381 -0
  713. slipwai/_bundle/assets/languages/typescript/app/package.json +19 -0
  714. slipwai/_bundle/assets/languages/typescript/app/src/application/README.md +21 -0
  715. slipwai/_bundle/assets/languages/typescript/app/src/domain/README.md +23 -0
  716. slipwai/_bundle/assets/languages/typescript/app/src/health.ts +5 -0
  717. slipwai/_bundle/assets/languages/typescript/app/tests/health.test.ts +9 -0
  718. slipwai/_bundle/assets/languages/typescript/biome/biome.jsonc +96 -0
  719. slipwai/_bundle/assets/languages/typescript/biome/domain-purity.grit +43 -0
  720. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/accept-child-id-remove-exercise.md +14 -0
  721. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/acl-stripe-payment-translation.md +26 -0
  722. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/aggregate-sizing-occasion.md +15 -0
  723. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/aggregate-vs-read-model.md +25 -0
  724. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/always-valid-occasion-invariants.md +51 -0
  725. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/branded-id-types.md +9 -0
  726. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/create-child-through-root.md +21 -0
  727. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/decider-pattern-order.md +45 -0
  728. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/describe-order-exhaustive-switch.md +10 -0
  729. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/discriminated-union-pledge-result.md +9 -0
  730. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/domain-behavioral-tests.md +17 -0
  731. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/domain-service-pledge-contribution.md +54 -0
  732. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/domain-service-test-pledge-contribution.md +13 -0
  733. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/domain-service-vs-use-case.md +81 -0
  734. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/entity-rename-occasion.md +16 -0
  735. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/error-propagation-through-layers.md +38 -0
  736. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/exception-vs-result-type.md +16 -0
  737. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/explicit-return-pledge-no-events.md +42 -0
  738. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/fake-vs-mock-repository.md +13 -0
  739. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/in-process-event-dispatch.md +37 -0
  740. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/integration-test-order-repository.md +12 -0
  741. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/invariant-driven-vending-machine.md +29 -0
  742. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/money-value-object-factory.md +14 -0
  743. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/multiple-error-reasons-union.md +11 -0
  744. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/naming-signature-domain-vs-use-case.md +11 -0
  745. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/occasion-repository-interface.md +10 -0
  746. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/one-aggregate-per-transaction.md +24 -0
  747. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/optimistic-locking-repository-save.md +8 -0
  748. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/optimistic-locking-version-field.md +9 -0
  749. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/order-lifecycle-union.md +6 -0
  750. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/outbox-pattern-dispatch.md +34 -0
  751. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/pledge-result-types.md +9 -0
  752. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/process-manager-gift-purchase.md +82 -0
  753. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/property-based-test-pledge-budget.md +25 -0
  754. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/purity-test-domain-vs-presentation.md +17 -0
  755. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/readonly-array-child-collection.md +7 -0
  756. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/shared-kernel-package-layout.md +6 -0
  757. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/specification-can-pledge.md +19 -0
  758. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/test-decide-order-events.md +18 -0
  759. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/test-error-funding-closed.md +16 -0
  760. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/test-factory-get-occasion.md +12 -0
  761. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/ubiquitous-language-glossary-types.md +13 -0
  762. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/use-case-test-pledge-contribution.md +21 -0
  763. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/wrong-catch-rethrow-context.md +4 -0
  764. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/wrong-exception-for-business-rule.md +7 -0
  765. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/wrong-generic-error-type.md +5 -0
  766. slipwai/_bundle/assets/languages/typescript/examples/domain-driven-design/zod-branded-type-bridging.md +19 -0
  767. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/account-decider-and-evolve.md +91 -0
  768. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/balance-view-apply-fold.md +74 -0
  769. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/balance-view-projection.md +58 -0
  770. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/catch-up-checkpoint-transaction.md +14 -0
  771. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/command-handler-loop.md +24 -0
  772. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/command-handler-retry-loop.md +22 -0
  773. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/decide-withdraw-example.md +13 -0
  774. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/decider-behaviour-tests.md +32 -0
  775. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/decider-insufficient-funds-test.md +25 -0
  776. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/decider-type.md +8 -0
  777. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/decision-result-type.md +8 -0
  778. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/deposit-money-command-with-timestamp.md +3 -0
  779. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/event-envelope-type.md +22 -0
  780. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/event-store-port-interface.md +17 -0
  781. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/event-store-port.md +13 -0
  782. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/evolve-behaviour-via-withdraw-limit.md +9 -0
  783. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/generic-rehydrate-fold.md +6 -0
  784. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/idempotent-projection-dedupe.md +24 -0
  785. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/in-memory-event-store-fake.md +41 -0
  786. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/inline-view-in-append-transaction.md +60 -0
  787. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/live-view-bounded-fold.md +48 -0
  788. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/order-placed-upcaster.md +29 -0
  789. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/projection-behaviour-tests.md +32 -0
  790. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/rehydrate-left-fold.md +4 -0
  791. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/tags-of-from-identifying-attributes.md +56 -0
  792. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/todo-list-claiming.md +55 -0
  793. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/tolerant-reader-read-path.md +10 -0
  794. slipwai/_bundle/assets/languages/typescript/examples/event-sourcing/upcaster-behaviour-test.md +14 -0
  795. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/adapter-error-translation.md +20 -0
  796. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/antipattern-business-logic-in-adapter.md +14 -0
  797. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/antipattern-bypass-adapter.md +10 -0
  798. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/antipattern-domain-depends-on-infrastructure.md +10 -0
  799. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/antipattern-pattern-shaped-names.md +15 -0
  800. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/antipattern-technology-shaped-port.md +13 -0
  801. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/composition-root-http-entrypoint.md +29 -0
  802. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/composition-root-queue-entrypoint.md +15 -0
  803. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/cqrs-lite-dashboard-query-function.md +17 -0
  804. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/cqrs-lite-domain-transform-read-data.md +10 -0
  805. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-auth-driving-adapter.md +25 -0
  806. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-domain-authorization.md +9 -0
  807. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-domain-probe-port.md +23 -0
  808. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-error-formatting-http.md +18 -0
  809. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-technical-telemetry-adapters.md +31 -0
  810. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-transactional-persistence-port.md +34 -0
  811. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-use-case-identity.md +11 -0
  812. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/dependency-injection-order-placement.md +91 -0
  813. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/driven-adapter-and-fake-implementation.md +21 -0
  814. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/greenfield-driven-port-fake.md +10 -0
  815. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/greenfield-driving-port-constant.md +12 -0
  816. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/incremental-after-thin-entrypoint.md +31 -0
  817. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/incremental-before-tangled-handler.md +28 -0
  818. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/incremental-create-adapter.md +16 -0
  819. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/incremental-create-use-case.md +31 -0
  820. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/incremental-extract-domain-function.md +28 -0
  821. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/incremental-extract-port-interface.md +9 -0
  822. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/port-interface-definitions.md +39 -0
  823. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/reads-vs-writes-query-function-example.md +12 -0
  824. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/testing-create-test-db-helper.md +8 -0
  825. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/testing-domain-unit-test-example.md +6 -0
  826. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/testing-fake-order-repo.md +11 -0
  827. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/testing-narrow-integration-tests.md +23 -0
  828. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/testing-recording-fake-instrumentation.md +29 -0
  829. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/testing-use-case-primary-boundary.md +25 -0
  830. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/worked-example-domain-function-record-pledge.md +59 -0
  831. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/worked-example-domain-types.md +37 -0
  832. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/worked-example-domain-unit-test.md +23 -0
  833. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/worked-example-driven-adapters.md +33 -0
  834. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/worked-example-driving-adapter-entrypoint.md +56 -0
  835. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/worked-example-fakes-for-testing.md +39 -0
  836. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/worked-example-port-interfaces.md +42 -0
  837. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/worked-example-use-case-orchestration.md +36 -0
  838. slipwai/_bundle/assets/languages/typescript/examples/hexagonal-architecture/worked-example-use-case-test.md +128 -0
  839. slipwai/_bundle/assets/languages/typescript/examples/testing/correct-complete-factory-object.md +11 -0
  840. slipwai/_bundle/assets/languages/typescript/examples/testing/correct-fresh-state-per-test.md +11 -0
  841. slipwai/_bundle/assets/languages/typescript/examples/testing/correct-import-real-schema.md +12 -0
  842. slipwai/_bundle/assets/languages/typescript/examples/testing/correct-inline-tested-through-behavior.md +16 -0
  843. slipwai/_bundle/assets/languages/typescript/examples/testing/correct-testing-behavior-public-api.md +19 -0
  844. slipwai/_bundle/assets/languages/typescript/examples/testing/coverage-theater-assert-called-only-correct.md +7 -0
  845. slipwai/_bundle/assets/languages/typescript/examples/testing/coverage-theater-assert-called-only-wrong.md +7 -0
  846. slipwai/_bundle/assets/languages/typescript/examples/testing/coverage-theater-branch-coverage-correct.md +23 -0
  847. slipwai/_bundle/assets/languages/typescript/examples/testing/coverage-theater-happy-path-only-wrong.md +7 -0
  848. slipwai/_bundle/assets/languages/typescript/examples/testing/coverage-theater-mock-function-under-test-correct.md +7 -0
  849. slipwai/_bundle/assets/languages/typescript/examples/testing/coverage-theater-mock-function-under-test-wrong.md +7 -0
  850. slipwai/_bundle/assets/languages/typescript/examples/testing/coverage-theater-trivial-getter-setter-correct.md +6 -0
  851. slipwai/_bundle/assets/languages/typescript/examples/testing/coverage-theater-trivial-getter-setter-wrong.md +6 -0
  852. slipwai/_bundle/assets/languages/typescript/examples/testing/factory-basic-pattern.md +18 -0
  853. slipwai/_bundle/assets/languages/typescript/examples/testing/factory-complete-example.md +15 -0
  854. slipwai/_bundle/assets/languages/typescript/examples/testing/factory-composition.md +31 -0
  855. slipwai/_bundle/assets/languages/typescript/examples/testing/reach-validation-through-behavior.md +30 -0
  856. slipwai/_bundle/assets/languages/typescript/examples/testing/wrong-extracted-helper-with-own-test.md +10 -0
  857. slipwai/_bundle/assets/languages/typescript/examples/testing/wrong-incomplete-factory-object.md +5 -0
  858. slipwai/_bundle/assets/languages/typescript/examples/testing/wrong-redefine-schema-in-test.md +5 -0
  859. slipwai/_bundle/assets/languages/typescript/examples/testing/wrong-shared-mutable-fixture.md +11 -0
  860. slipwai/_bundle/assets/languages/typescript/examples/testing/wrong-testing-implementation-detail.md +20 -0
  861. slipwai/_bundle/assets/languages/typescript/flags/src/flags.ts +229 -0
  862. slipwai/_bundle/assets/languages/typescript/flags/tests/flags.test.ts +140 -0
  863. slipwai/_bundle/assets/languages/typescript/locks/package-lock-fastify-postgres.json +3471 -0
  864. slipwai/_bundle/assets/languages/typescript/locks/package-lock-fastify.json +3075 -0
  865. slipwai/_bundle/assets/languages/typescript/locks/package-lock-postgres.json +2233 -0
  866. slipwai/_bundle/assets/languages/typescript/locks/package-lock.json +1790 -0
  867. slipwai/_bundle/assets/profiles/event-modelling/.specify/presets/.registry +12 -0
  868. slipwai/_bundle/assets/profiles/event-modelling/.specify/presets/event-modelling/preset.yml +62 -0
  869. slipwai/_bundle/assets/profiles/event-modelling/.specify/presets/event-modelling/templates/constitution-template.md +494 -0
  870. slipwai/_bundle/assets/profiles/event-modelling/.specify/presets/event-modelling/templates/plan-template.md +252 -0
  871. slipwai/_bundle/assets/profiles/event-modelling/.specify/presets/event-modelling/templates/tasks-template.md +241 -0
  872. slipwai/_bundle/assets/profiles/event-modelling/commands/example-map.md +11 -0
  873. slipwai/_bundle/assets/profiles/event-modelling/commands/validate-code-against-model.md +11 -0
  874. slipwai/_bundle/assets/profiles/event-modelling/docs/speckit-preset.md +98 -0
  875. slipwai/_bundle/assets/profiles/standard/.specify/presets/.registry +12 -0
  876. slipwai/_bundle/assets/profiles/standard/.specify/presets/standard/preset.yml +58 -0
  877. slipwai/_bundle/assets/profiles/standard/.specify/presets/standard/templates/constitution-template.md +468 -0
  878. slipwai/_bundle/assets/profiles/standard/docs/adr/0001-record-architecture-decisions.md +41 -0
  879. slipwai/_bundle/assets/profiles/standard/docs/speckit-preset.md +108 -0
  880. slipwai/_bundle/assets/profiles/standard/skills/adversarial-testing/SKILL.md +62 -0
  881. slipwai/_bundle/assets/profiles/standard/skills/adversarial-testing/resources/attack-catalogue.md +67 -0
  882. slipwai/_bundle/assets/profiles/standard/skills/architecture-decisions/SKILL.md +79 -0
  883. slipwai/_bundle/assets/targets/aws/README.md +243 -0
  884. slipwai/_bundle/assets/targets/aws/bootstrap/main.tf +316 -0
  885. slipwai/_bundle/assets/targets/aws/bootstrap/outputs.tf +32 -0
  886. slipwai/_bundle/assets/targets/aws/bootstrap/variables.tf +64 -0
  887. slipwai/_bundle/assets/targets/aws/scripts/bootstrap.py +696 -0
  888. slipwai/_bundle/assets/targets/aws/scripts/check-flags.py +400 -0
  889. slipwai/_bundle/assets/targets/aws/scripts/deploy.py +1082 -0
  890. slipwai/_bundle/assets/targets/aws/service/auth0.tf +272 -0
  891. slipwai/_bundle/assets/targets/aws/service/cognito_customers.tf +110 -0
  892. slipwai/_bundle/assets/targets/aws/service/cognito_staff.tf +104 -0
  893. slipwai/_bundle/assets/targets/aws/service/flags.auto.tfvars +37 -0
  894. slipwai/_bundle/assets/targets/aws/service/flags.tf +226 -0
  895. slipwai/_bundle/assets/targets/aws/service/frontend.tf +153 -0
  896. slipwai/_bundle/assets/targets/aws/service/ingress.tf +198 -0
  897. slipwai/_bundle/assets/targets/aws/service/main.tf +359 -0
  898. slipwai/_bundle/assets/targets/aws/service/network.tf +47 -0
  899. slipwai/_bundle/assets/targets/aws/service/no-auth0.tf +18 -0
  900. slipwai/_bundle/assets/targets/aws/service/no-frontend.tf +5 -0
  901. slipwai/_bundle/assets/targets/aws/service/outputs.tf +23 -0
  902. slipwai/_bundle/assets/targets/aws/service/production.tfvars +11 -0
  903. slipwai/_bundle/assets/targets/aws/service/rds.tf +241 -0
  904. slipwai/_bundle/assets/targets/aws/service/staging.tfvars +10 -0
  905. slipwai/_bundle/assets/targets/aws/service/variables.tf +138 -0
  906. slipwai/_bundle/assets/targets/aws/service/versions.tf +50 -0
  907. slipwai/_bundle/assets/targets/azure/README.md +294 -0
  908. slipwai/_bundle/assets/targets/azure/bootstrap/main.tf +322 -0
  909. slipwai/_bundle/assets/targets/azure/bootstrap/outputs.tf +58 -0
  910. slipwai/_bundle/assets/targets/azure/bootstrap/variables.tf +73 -0
  911. slipwai/_bundle/assets/targets/azure/scripts/bootstrap.py +853 -0
  912. slipwai/_bundle/assets/targets/azure/scripts/check-flags.py +407 -0
  913. slipwai/_bundle/assets/targets/azure/scripts/deploy.py +1103 -0
  914. slipwai/_bundle/assets/targets/azure/service/auth0.tf +271 -0
  915. slipwai/_bundle/assets/targets/azure/service/entra_staff.tf +106 -0
  916. slipwai/_bundle/assets/targets/azure/service/flags.auto.tfvars +37 -0
  917. slipwai/_bundle/assets/targets/azure/service/flags.tf +205 -0
  918. slipwai/_bundle/assets/targets/azure/service/frontend.tf +92 -0
  919. slipwai/_bundle/assets/targets/azure/service/ingress.tf +25 -0
  920. slipwai/_bundle/assets/targets/azure/service/main.tf +293 -0
  921. slipwai/_bundle/assets/targets/azure/service/no-auth0.tf +18 -0
  922. slipwai/_bundle/assets/targets/azure/service/no-frontend.tf +7 -0
  923. slipwai/_bundle/assets/targets/azure/service/outputs.tf +22 -0
  924. slipwai/_bundle/assets/targets/azure/service/postgres.tf +246 -0
  925. slipwai/_bundle/assets/targets/azure/service/production.tfvars +13 -0
  926. slipwai/_bundle/assets/targets/azure/service/staging.tfvars +13 -0
  927. slipwai/_bundle/assets/targets/azure/service/variables.tf +157 -0
  928. slipwai/_bundle/assets/targets/azure/service/versions.tf +81 -0
  929. slipwai/_bundle/assets/toolkit/.specify/extensions.yml +149 -0
  930. slipwai/_bundle/assets/toolkit/docs/adr/0001-record-architecture-decisions.md +85 -0
  931. slipwai/_bundle/assets/toolkit/docs/agent-harnesses.md +127 -0
  932. slipwai/_bundle/assets/toolkit/docs/delegated-agent-safety.md +27 -0
  933. slipwai/_bundle/assets/toolkit/docs/event-model/README.md +668 -0
  934. slipwai/_bundle/assets/toolkit/docs/event-model/model.yaml +69 -0
  935. slipwai/_bundle/assets/toolkit/docs/event-modeling-to-code.md +250 -0
  936. slipwai/_bundle/assets/toolkit/docs/first-slice.md +104 -0
  937. slipwai/_bundle/assets/toolkit/scripts/agents/benchmark.py +739 -0
  938. slipwai/_bundle/assets/toolkit/scripts/agents/models.py +251 -0
  939. slipwai/_bundle/assets/toolkit/scripts/agents/project.py +674 -0
  940. slipwai/_bundle/assets/toolkit/scripts/agents/registry.json +744 -0
  941. slipwai/_bundle/assets/toolkit/scripts/check-codegraph.py +189 -0
  942. slipwai/_bundle/assets/toolkit/scripts/check-constitution.py +1013 -0
  943. slipwai/_bundle/assets/toolkit/scripts/check-imports.py +292 -0
  944. slipwai/_bundle/assets/toolkit/scripts/check-migrations.py +211 -0
  945. slipwai/_bundle/assets/toolkit/scripts/check-slice-scope.py +365 -0
  946. slipwai/_bundle/assets/toolkit/scripts/check-speckit.py +196 -0
  947. slipwai/_bundle/assets/toolkit/scripts/check-styles.py +159 -0
  948. slipwai/_bundle/assets/toolkit/scripts/event-model/check.py +553 -0
  949. slipwai/_bundle/assets/toolkit/scripts/event-model/check.ts +225 -0
  950. slipwai/_bundle/assets/toolkit/scripts/event-model/mermaid.ts +226 -0
  951. slipwai/_bundle/assets/toolkit/scripts/event-model/model.ts +589 -0
  952. slipwai/_bundle/assets/toolkit/scripts/event-model/package.json +12 -0
  953. slipwai/_bundle/assets/toolkit/scripts/event-model/page.ts +795 -0
  954. slipwai/_bundle/assets/toolkit/scripts/event-model/patch-mermaid-swimlanes.ts +228 -0
  955. slipwai/_bundle/assets/toolkit/scripts/event-model/readme.ts +197 -0
  956. slipwai/_bundle/assets/toolkit/scripts/event-model/render.ts +223 -0
  957. slipwai/_bundle/assets/toolkit/scripts/event-model/requirements.txt +1 -0
  958. slipwai/_bundle/assets/toolkit/scripts/event-model/validate.ts +859 -0
  959. slipwai/_bundle/assets/toolkit/scripts/event-model/workspace.ts +214 -0
  960. slipwai/_bundle/assets/toolkit/scripts/extensions/codegraph/init.py +120 -0
  961. slipwai/_bundle/assets/toolkit/scripts/extensions/guidance.py +105 -0
  962. slipwai/_bundle/assets/toolkit/scripts/extensions/menu.py +149 -0
  963. slipwai/_bundle/assets/toolkit/scripts/extensions/project.py +69 -0
  964. slipwai/_bundle/assets/toolkit/scripts/test_benchmark.py +106 -0
  965. slipwai/_bundle/assets/toolkit/skills/LICENSE +32 -0
  966. slipwai/_bundle/assets/toolkit/skills/REFERENCES.md +617 -0
  967. slipwai/_bundle/assets/toolkit/skills/acceptance-review/LICENSE +27 -0
  968. slipwai/_bundle/assets/toolkit/skills/acceptance-review/SKILL.md +109 -0
  969. slipwai/_bundle/assets/toolkit/skills/acceptance-review/agents/openai.yaml +4 -0
  970. slipwai/_bundle/assets/toolkit/skills/acceptance-review/references/source-notes.md +21 -0
  971. slipwai/_bundle/assets/toolkit/skills/adversarial-testing/SKILL.md +243 -0
  972. slipwai/_bundle/assets/toolkit/skills/adversarial-testing/resources/attack-catalogue.md +157 -0
  973. slipwai/_bundle/assets/toolkit/skills/api-design/LICENSE +28 -0
  974. slipwai/_bundle/assets/toolkit/skills/api-design/SKILL.md +452 -0
  975. slipwai/_bundle/assets/toolkit/skills/api-design/resources/api-evolution.md +148 -0
  976. slipwai/_bundle/assets/toolkit/skills/api-design/resources/api-security.md +265 -0
  977. slipwai/_bundle/assets/toolkit/skills/api-design/resources/auth-security.md +73 -0
  978. slipwai/_bundle/assets/toolkit/skills/api-design/resources/http-fundamentals.md +94 -0
  979. slipwai/_bundle/assets/toolkit/skills/api-design/resources/problem-details.md +74 -0
  980. slipwai/_bundle/assets/toolkit/skills/api-design/resources/source-notes.md +30 -0
  981. slipwai/_bundle/assets/toolkit/skills/architecture-decisions/SKILL.md +233 -0
  982. slipwai/_bundle/assets/toolkit/skills/bff-design/SKILL.md +92 -0
  983. slipwai/_bundle/assets/toolkit/skills/bff-design/agents/openai.yaml +4 -0
  984. slipwai/_bundle/assets/toolkit/skills/bff-design/references/adoption-and-granularity.md +67 -0
  985. slipwai/_bundle/assets/toolkit/skills/bff-design/references/aggregation-and-resilience.md +70 -0
  986. slipwai/_bundle/assets/toolkit/skills/bff-design/references/alternatives.md +50 -0
  987. slipwai/_bundle/assets/toolkit/skills/bff-design/references/upstream-identity.md +64 -0
  988. slipwai/_bundle/assets/toolkit/skills/bff-entry-points/SKILL.md +175 -0
  989. slipwai/_bundle/assets/toolkit/skills/bff-entry-points/agents/openai.yaml +4 -0
  990. slipwai/_bundle/assets/toolkit/skills/bff-entry-points/references/browser-session-coordination.md +72 -0
  991. slipwai/_bundle/assets/toolkit/skills/bff-entry-points/references/endpoint-protection.md +159 -0
  992. slipwai/_bundle/assets/toolkit/skills/bff-entry-points/references/enforcement-and-testing.md +88 -0
  993. slipwai/_bundle/assets/toolkit/skills/bff-entry-points/references/hexagonal-auth-boundaries.md +145 -0
  994. slipwai/_bundle/assets/toolkit/skills/bff-entry-points/references/hono-example.md +196 -0
  995. slipwai/_bundle/assets/toolkit/skills/bff-entry-points/references/realtime-entry-points.md +99 -0
  996. slipwai/_bundle/assets/toolkit/skills/characterisation-tests/SKILL.md +218 -0
  997. slipwai/_bundle/assets/toolkit/skills/characterisation-tests/resources/modern-tooling.md +159 -0
  998. slipwai/_bundle/assets/toolkit/skills/characterisation-tests/resources/writing-process.md +239 -0
  999. slipwai/_bundle/assets/toolkit/skills/ci-debugging/SKILL.md +120 -0
  1000. slipwai/_bundle/assets/toolkit/skills/cli-design/LICENSE +21 -0
  1001. slipwai/_bundle/assets/toolkit/skills/cli-design/SKILL.md +503 -0
  1002. slipwai/_bundle/assets/toolkit/skills/cli-design/resources/composability.md +29 -0
  1003. slipwai/_bundle/assets/toolkit/skills/cli-design/resources/output-architecture.md +995 -0
  1004. slipwai/_bundle/assets/toolkit/skills/cli-design/resources/source-notes.md +59 -0
  1005. slipwai/_bundle/assets/toolkit/skills/cli-design/resources/stream-contracts.md +721 -0
  1006. slipwai/_bundle/assets/toolkit/skills/cli-design/resources/testing-cli.md +684 -0
  1007. slipwai/_bundle/assets/toolkit/skills/codebase-design/LICENSE +28 -0
  1008. slipwai/_bundle/assets/toolkit/skills/codebase-design/SKILL.md +157 -0
  1009. slipwai/_bundle/assets/toolkit/skills/codebase-design/agents/openai.yaml +4 -0
  1010. slipwai/_bundle/assets/toolkit/skills/codebase-design/references/deepening.md +100 -0
  1011. slipwai/_bundle/assets/toolkit/skills/codebase-design/references/design-it-twice.md +74 -0
  1012. slipwai/_bundle/assets/toolkit/skills/codebase-design/references/source-notes.md +58 -0
  1013. slipwai/_bundle/assets/toolkit/skills/debugging/SKILL.md +119 -0
  1014. slipwai/_bundle/assets/toolkit/skills/debugging/agents/openai.yaml +4 -0
  1015. slipwai/_bundle/assets/toolkit/skills/debugging/references/source-notes.md +19 -0
  1016. slipwai/_bundle/assets/toolkit/skills/diagrams/NOTICE +8 -0
  1017. slipwai/_bundle/assets/toolkit/skills/diagrams/SKILL.md +114 -0
  1018. slipwai/_bundle/assets/toolkit/skills/diagrams/references/source-notes.md +14 -0
  1019. slipwai/_bundle/assets/toolkit/skills/domain-driven-design/SKILL.md +363 -0
  1020. slipwai/_bundle/assets/toolkit/skills/domain-driven-design/resources/aggregate-design.md +152 -0
  1021. slipwai/_bundle/assets/toolkit/skills/domain-driven-design/resources/bounded-contexts.md +205 -0
  1022. slipwai/_bundle/assets/toolkit/skills/domain-driven-design/resources/domain-events.md +114 -0
  1023. slipwai/_bundle/assets/toolkit/skills/domain-driven-design/resources/domain-services.md +41 -0
  1024. slipwai/_bundle/assets/toolkit/skills/domain-driven-design/resources/error-modeling.md +72 -0
  1025. slipwai/_bundle/assets/toolkit/skills/domain-driven-design/resources/modelling-process.md +61 -0
  1026. slipwai/_bundle/assets/toolkit/skills/domain-driven-design/resources/references.md +12 -0
  1027. slipwai/_bundle/assets/toolkit/skills/domain-driven-design/resources/testing-by-layer.md +90 -0
  1028. slipwai/_bundle/assets/toolkit/skills/double-check/SKILL.md +133 -0
  1029. slipwai/_bundle/assets/toolkit/skills/double-check/resources/brief-template.md +71 -0
  1030. slipwai/_bundle/assets/toolkit/skills/double-check/resources/providers.md +46 -0
  1031. slipwai/_bundle/assets/toolkit/skills/evaluate-existing-solutions/SKILL.md +184 -0
  1032. slipwai/_bundle/assets/toolkit/skills/evaluate-existing-solutions/agents/openai.yaml +4 -0
  1033. slipwai/_bundle/assets/toolkit/skills/evaluate-existing-solutions/assets/solution-decision-template.md +83 -0
  1034. slipwai/_bundle/assets/toolkit/skills/evaluate-existing-solutions/references/evaluation-dimensions.md +49 -0
  1035. slipwai/_bundle/assets/toolkit/skills/evaluate-existing-solutions/references/evidence-and-currentness.md +75 -0
  1036. slipwai/_bundle/assets/toolkit/skills/event-modeling/NOTICE +16 -0
  1037. slipwai/_bundle/assets/toolkit/skills/event-modeling/SKILL.md +337 -0
  1038. slipwai/_bundle/assets/toolkit/skills/event-modeling/references/gwt-template.md +158 -0
  1039. slipwai/_bundle/assets/toolkit/skills/event-modeling/references/nine-steps.md +333 -0
  1040. slipwai/_bundle/assets/toolkit/skills/event-sourcing/SKILL.md +215 -0
  1041. slipwai/_bundle/assets/toolkit/skills/event-sourcing/resources/decider-and-rehydration.md +79 -0
  1042. slipwai/_bundle/assets/toolkit/skills/event-sourcing/resources/event-store.md +186 -0
  1043. slipwai/_bundle/assets/toolkit/skills/event-sourcing/resources/event-versioning.md +76 -0
  1044. slipwai/_bundle/assets/toolkit/skills/event-sourcing/resources/modelling-events.md +98 -0
  1045. slipwai/_bundle/assets/toolkit/skills/event-sourcing/resources/production-concerns.md +81 -0
  1046. slipwai/_bundle/assets/toolkit/skills/event-sourcing/resources/projections-and-read-models.md +174 -0
  1047. slipwai/_bundle/assets/toolkit/skills/event-sourcing/resources/references.md +61 -0
  1048. slipwai/_bundle/assets/toolkit/skills/event-sourcing/resources/testing-event-sourced-systems.md +73 -0
  1049. slipwai/_bundle/assets/toolkit/skills/event-sourcing/resources/when-to-use-event-sourcing.md +33 -0
  1050. slipwai/_bundle/assets/toolkit/skills/expectations/SKILL.md +80 -0
  1051. slipwai/_bundle/assets/toolkit/skills/find-gaps/SKILL.md +336 -0
  1052. slipwai/_bundle/assets/toolkit/skills/find-skills/LICENSE +29 -0
  1053. slipwai/_bundle/assets/toolkit/skills/find-skills/SKILL.md +173 -0
  1054. slipwai/_bundle/assets/toolkit/skills/find-skills/references/source-notes.md +29 -0
  1055. slipwai/_bundle/assets/toolkit/skills/finding-seams/SKILL.md +125 -0
  1056. slipwai/_bundle/assets/toolkit/skills/finding-seams/resources/creating-seams.md +286 -0
  1057. slipwai/_bundle/assets/toolkit/skills/finding-seams/resources/oop-patterns.md +143 -0
  1058. slipwai/_bundle/assets/toolkit/skills/finding-seams/resources/seam-types.md +282 -0
  1059. slipwai/_bundle/assets/toolkit/skills/folder-structure/SKILL.md +15 -0
  1060. slipwai/_bundle/assets/toolkit/skills/folder-structure/agents/openai.yaml +6 -0
  1061. slipwai/_bundle/assets/toolkit/skills/front-end-testing/SKILL.md +409 -0
  1062. slipwai/_bundle/assets/toolkit/skills/front-end-testing/resources/async-patterns.md +151 -0
  1063. slipwai/_bundle/assets/toolkit/skills/front-end-testing/resources/dom-testing-library-legacy.md +147 -0
  1064. slipwai/_bundle/assets/toolkit/skills/front-end-testing/resources/msw.md +138 -0
  1065. slipwai/_bundle/assets/toolkit/skills/front-end-testing/resources/playwright-e2e.md +131 -0
  1066. slipwai/_bundle/assets/toolkit/skills/functional/SKILL.md +276 -0
  1067. slipwai/_bundle/assets/toolkit/skills/functional/resources/composition-patterns.md +182 -0
  1068. slipwai/_bundle/assets/toolkit/skills/functional/resources/immutability-catalog.md +147 -0
  1069. slipwai/_bundle/assets/toolkit/skills/global-event-model/SKILL.md +297 -0
  1070. slipwai/_bundle/assets/toolkit/skills/hexagonal-architecture/SKILL.md +311 -0
  1071. slipwai/_bundle/assets/toolkit/skills/hexagonal-architecture/resources/cqrs-lite.md +42 -0
  1072. slipwai/_bundle/assets/toolkit/skills/hexagonal-architecture/resources/cross-cutting-concerns.md +94 -0
  1073. slipwai/_bundle/assets/toolkit/skills/hexagonal-architecture/resources/greenfield-sequence.md +48 -0
  1074. slipwai/_bundle/assets/toolkit/skills/hexagonal-architecture/resources/incremental-adoption.md +64 -0
  1075. slipwai/_bundle/assets/toolkit/skills/hexagonal-architecture/resources/references.md +83 -0
  1076. slipwai/_bundle/assets/toolkit/skills/hexagonal-architecture/resources/testing-hex-arch.md +76 -0
  1077. slipwai/_bundle/assets/toolkit/skills/hexagonal-architecture/resources/worked-example.md +145 -0
  1078. slipwai/_bundle/assets/toolkit/skills/improve-codebase-architecture/LICENSE +28 -0
  1079. slipwai/_bundle/assets/toolkit/skills/improve-codebase-architecture/SKILL.md +186 -0
  1080. slipwai/_bundle/assets/toolkit/skills/improve-codebase-architecture/agents/openai.yaml +4 -0
  1081. slipwai/_bundle/assets/toolkit/skills/improve-codebase-architecture/references/html-report.md +256 -0
  1082. slipwai/_bundle/assets/toolkit/skills/improve-codebase-architecture/references/source-notes.md +42 -0
  1083. slipwai/_bundle/assets/toolkit/skills/mutation-testing/SKILL.md +242 -0
  1084. slipwai/_bundle/assets/toolkit/skills/mutation-testing/resources/mutator-rules.md +247 -0
  1085. slipwai/_bundle/assets/toolkit/skills/observability/SKILL.md +281 -0
  1086. slipwai/_bundle/assets/toolkit/skills/observability/resources/node-patterns.md +167 -0
  1087. slipwai/_bundle/assets/toolkit/skills/observability/resources/references.md +71 -0
  1088. slipwai/_bundle/assets/toolkit/skills/observability/resources/slo-alerting.md +123 -0
  1089. slipwai/_bundle/assets/toolkit/skills/observability/resources/testing-telemetry.md +127 -0
  1090. slipwai/_bundle/assets/toolkit/skills/planning/SKILL.md +382 -0
  1091. slipwai/_bundle/assets/toolkit/skills/production-parity-skill-builder/SKILL.md +151 -0
  1092. slipwai/_bundle/assets/toolkit/skills/production-parity-skill-builder/resources/generated-skill-template.md +97 -0
  1093. slipwai/_bundle/assets/toolkit/skills/production-parity-skill-builder/resources/parity-surface-catalog.md +185 -0
  1094. slipwai/_bundle/assets/toolkit/skills/production-parity-skill-builder/resources/question-patterns.md +79 -0
  1095. slipwai/_bundle/assets/toolkit/skills/react-testing/SKILL.md +339 -0
  1096. slipwai/_bundle/assets/toolkit/skills/react-testing/resources/testing-library-react-legacy.md +325 -0
  1097. slipwai/_bundle/assets/toolkit/skills/reduce-system-complexity/LICENSE +28 -0
  1098. slipwai/_bundle/assets/toolkit/skills/reduce-system-complexity/SKILL.md +187 -0
  1099. slipwai/_bundle/assets/toolkit/skills/reduce-system-complexity/agents/openai.yaml +4 -0
  1100. slipwai/_bundle/assets/toolkit/skills/reduce-system-complexity/references/ledger-template.md +96 -0
  1101. slipwai/_bundle/assets/toolkit/skills/reduce-system-complexity/references/source-notes.md +44 -0
  1102. slipwai/_bundle/assets/toolkit/skills/refactoring/SKILL.md +155 -0
  1103. slipwai/_bundle/assets/toolkit/skills/secure-oauth-oidc/SKILL.md +159 -0
  1104. slipwai/_bundle/assets/toolkit/skills/secure-oauth-oidc/agents/openai.yaml +4 -0
  1105. slipwai/_bundle/assets/toolkit/skills/secure-oauth-oidc/references/attack-and-test-catalog.md +79 -0
  1106. slipwai/_bundle/assets/toolkit/skills/secure-oauth-oidc/references/oidc-validation.md +191 -0
  1107. slipwai/_bundle/assets/toolkit/skills/secure-oauth-oidc/references/review-and-delivery.md +183 -0
  1108. slipwai/_bundle/assets/toolkit/skills/secure-oauth-oidc/references/rfc9700-control-catalog.md +117 -0
  1109. slipwai/_bundle/assets/toolkit/skills/secure-oauth-oidc/references/standards-map.md +101 -0
  1110. slipwai/_bundle/assets/toolkit/skills/specification/SKILL.md +90 -0
  1111. slipwai/_bundle/assets/toolkit/skills/specification/resources/references.md +8 -0
  1112. slipwai/_bundle/assets/toolkit/skills/specification/resources/spec-review-template.html +201 -0
  1113. slipwai/_bundle/assets/toolkit/skills/stack-pull-requests/SKILL.md +323 -0
  1114. slipwai/_bundle/assets/toolkit/skills/stack-pull-requests/agents/openai.yaml +4 -0
  1115. slipwai/_bundle/assets/toolkit/skills/stack-pull-requests/references/source-notes.md +61 -0
  1116. slipwai/_bundle/assets/toolkit/skills/story-splitting/SKILL.md +295 -0
  1117. slipwai/_bundle/assets/toolkit/skills/story-splitting/resources/pattern-catalog.md +205 -0
  1118. slipwai/_bundle/assets/toolkit/skills/story-splitting/resources/source-notes.md +48 -0
  1119. slipwai/_bundle/assets/toolkit/skills/storyboard/SKILL.md +249 -0
  1120. slipwai/_bundle/assets/toolkit/skills/structure-codebase/SKILL.md +216 -0
  1121. slipwai/_bundle/assets/toolkit/skills/structure-codebase/agents/openai.yaml +4 -0
  1122. slipwai/_bundle/assets/toolkit/skills/structure-codebase/references/backend-patterns.md +206 -0
  1123. slipwai/_bundle/assets/toolkit/skills/structure-codebase/references/enforcement-and-migration.md +125 -0
  1124. slipwai/_bundle/assets/toolkit/skills/structure-codebase/references/frontend-patterns.md +179 -0
  1125. slipwai/_bundle/assets/toolkit/skills/structure-codebase/references/research-notes.md +71 -0
  1126. slipwai/_bundle/assets/toolkit/skills/structure-codebase/references/visible-hexagon.md +200 -0
  1127. slipwai/_bundle/assets/toolkit/skills/tdd/SKILL.md +288 -0
  1128. slipwai/_bundle/assets/toolkit/skills/tdd/resources/vitest-watch-feedback.md +64 -0
  1129. slipwai/_bundle/assets/toolkit/skills/teach-me/SKILL.md +455 -0
  1130. slipwai/_bundle/assets/toolkit/skills/teach-me/resources/assessment-patterns.md +224 -0
  1131. slipwai/_bundle/assets/toolkit/skills/teach-me/resources/course-generation.md +372 -0
  1132. slipwai/_bundle/assets/toolkit/skills/teach-me/resources/html-lessons.md +249 -0
  1133. slipwai/_bundle/assets/toolkit/skills/teach-me/resources/learning-science.md +203 -0
  1134. slipwai/_bundle/assets/toolkit/skills/teach-me/resources/session-management.md +250 -0
  1135. slipwai/_bundle/assets/toolkit/skills/technical-writing/LICENSE +21 -0
  1136. slipwai/_bundle/assets/toolkit/skills/technical-writing/SKILL.md +152 -0
  1137. slipwai/_bundle/assets/toolkit/skills/technical-writing/resources/agent-docs.md +40 -0
  1138. slipwai/_bundle/assets/toolkit/skills/technical-writing/resources/doc-types.md +67 -0
  1139. slipwai/_bundle/assets/toolkit/skills/technical-writing/resources/docs-quality.md +100 -0
  1140. slipwai/_bundle/assets/toolkit/skills/technical-writing/resources/formatting.md +55 -0
  1141. slipwai/_bundle/assets/toolkit/skills/technical-writing/resources/readme.md +46 -0
  1142. slipwai/_bundle/assets/toolkit/skills/technical-writing/resources/references.md +38 -0
  1143. slipwai/_bundle/assets/toolkit/skills/technical-writing/resources/source-notes.md +23 -0
  1144. slipwai/_bundle/assets/toolkit/skills/test-design-reviewer/SKILL.md +82 -0
  1145. slipwai/_bundle/assets/toolkit/skills/test-design-reviewer/references/source-notes.md +7 -0
  1146. slipwai/_bundle/assets/toolkit/skills/testing/SKILL.md +274 -0
  1147. slipwai/_bundle/assets/toolkit/skills/twelve-factor/SKILL.md +243 -0
  1148. slipwai/_bundle/assets/toolkit/skills/twelve-factor/resources/node-patterns.md +227 -0
  1149. slipwai/_bundle/assets/toolkit/skills/typescript-strict/SKILL.md +236 -0
  1150. slipwai/_bundle/assets/toolkit/skills/ubiquitous-language/SKILL.md +92 -0
  1151. slipwai/_bundle/assets/toolkit/skills/ubiquitous-language/resources/glossary-format.md +66 -0
  1152. slipwai/_bundle/assets/toolkit/skills/ubiquitous-language/resources/language-protocol.md +68 -0
  1153. slipwai/_bundle/assets/toolkit/skills/wtf/LICENSE +21 -0
  1154. slipwai/_bundle/assets/toolkit/skills/wtf/SKILL.md +55 -0
  1155. slipwai/_bundle/assets/toolkit/skills/wtf/agents/openai.yaml +6 -0
  1156. slipwai/_bundle/assets/toolkit/skills/wtf/references/source-notes.md +15 -0
  1157. slipwai/_bundle/catalog.json +694 -0
  1158. slipwai/_bundle/changelog.d/README.md +34 -0
  1159. slipwai/_bundle/changelog.d/init-reruns-leave-spec-kit-alone.md +12 -0
  1160. slipwai/_bundle/changelog.d/initial-public-release.md +6 -0
  1161. slipwai/add_service.py +231 -0
  1162. slipwai/adopt.py +264 -0
  1163. slipwai/adopt_report.py +247 -0
  1164. slipwai/assets.py +123 -0
  1165. slipwai/axes.py +196 -0
  1166. slipwai/backends.py +300 -0
  1167. slipwai/capabilities.py +100 -0
  1168. slipwai/catalog.py +224 -0
  1169. slipwai/catch_up.py +243 -0
  1170. slipwai/changelog.py +77 -0
  1171. slipwai/cli.py +241 -0
  1172. slipwai/cli_add.py +233 -0
  1173. slipwai/cli_adopt.py +338 -0
  1174. slipwai/cli_prompts.py +340 -0
  1175. slipwai/converge.py +265 -0
  1176. slipwai/convergence.py +255 -0
  1177. slipwai/delivery_facts.py +147 -0
  1178. slipwai/ecosystems.py +347 -0
  1179. slipwai/errors.py +6 -0
  1180. slipwai/examples.py +136 -0
  1181. slipwai/extensions.py +37 -0
  1182. slipwai/features.py +99 -0
  1183. slipwai/images.py +293 -0
  1184. slipwai/layout.py +134 -0
  1185. slipwai/manifest.py +190 -0
  1186. slipwai/migrate.py +293 -0
  1187. slipwai/naming.py +36 -0
  1188. slipwai/origin.py +168 -0
  1189. slipwai/platform.py +319 -0
  1190. slipwai/preflight.py +97 -0
  1191. slipwai/probes.py +70 -0
  1192. slipwai/programme.py +225 -0
  1193. slipwai/project/__init__.py +6 -0
  1194. slipwai/project/add_commands.py +349 -0
  1195. slipwai/project/adopted.py +348 -0
  1196. slipwai/project/adopted_ci.py +151 -0
  1197. slipwai/project/adopted_targets.py +63 -0
  1198. slipwai/project/adversary.py +134 -0
  1199. slipwai/project/agent_settings.py +82 -0
  1200. slipwai/project/agents.py +244 -0
  1201. slipwai/project/aws_docs.py +259 -0
  1202. slipwai/project/azure_docs.py +271 -0
  1203. slipwai/project/backing_service_prose.py +252 -0
  1204. slipwai/project/backing_services.py +122 -0
  1205. slipwai/project/benchmark.py +130 -0
  1206. slipwai/project/biome.py +56 -0
  1207. slipwai/project/ci_services.py +49 -0
  1208. slipwai/project/ci_workflows.py +259 -0
  1209. slipwai/project/commands.py +330 -0
  1210. slipwai/project/compose.py +131 -0
  1211. slipwai/project/composition.py +81 -0
  1212. slipwai/project/constitution_journey.py +99 -0
  1213. slipwai/project/convergence_page.py +66 -0
  1214. slipwai/project/demo_stop.py +110 -0
  1215. slipwai/project/deploy_workflow.py +348 -0
  1216. slipwai/project/design_page.py +156 -0
  1217. slipwai/project/docs.py +288 -0
  1218. slipwai/project/docs_index.py +76 -0
  1219. slipwai/project/drive_adoption.py +198 -0
  1220. slipwai/project/entry_stores.py +350 -0
  1221. slipwai/project/event_model.py +327 -0
  1222. slipwai/project/evolving.py +51 -0
  1223. slipwai/project/existing.py +133 -0
  1224. slipwai/project/flag_route.py +218 -0
  1225. slipwai/project/flags.py +294 -0
  1226. slipwai/project/frontend.py +224 -0
  1227. slipwai/project/gitignore.py +145 -0
  1228. slipwai/project/ground_command.py +232 -0
  1229. slipwai/project/guidance.py +321 -0
  1230. slipwai/project/infra.py +195 -0
  1231. slipwai/project/init_production.py +74 -0
  1232. slipwai/project/init_script.py +296 -0
  1233. slipwai/project/integration.py +79 -0
  1234. slipwai/project/languages/__init__.py +40 -0
  1235. slipwai/project/languages/go.py +183 -0
  1236. slipwai/project/languages/java.py +71 -0
  1237. slipwai/project/languages/java_quarkus.py +59 -0
  1238. slipwai/project/languages/java_spring.py +57 -0
  1239. slipwai/project/languages/python.py +262 -0
  1240. slipwai/project/languages/typescript.py +336 -0
  1241. slipwai/project/makefile.py +350 -0
  1242. slipwai/project/metadata.py +73 -0
  1243. slipwai/project/model_to_code.py +60 -0
  1244. slipwai/project/mutation.py +215 -0
  1245. slipwai/project/native_commands.py +283 -0
  1246. slipwai/project/openapi.py +161 -0
  1247. slipwai/project/parallel_slices.py +130 -0
  1248. slipwai/project/pin_commands.py +174 -0
  1249. slipwai/project/pins.py +88 -0
  1250. slipwai/project/production.py +137 -0
  1251. slipwai/project/provisioning.py +24 -0
  1252. slipwai/project/read_side_layouts.py +260 -0
  1253. slipwai/project/readme.py +346 -0
  1254. slipwai/project/renovate.py +181 -0
  1255. slipwai/project/repository.py +164 -0
  1256. slipwai/project/rules.py +286 -0
  1257. slipwai/project/run_skill.py +333 -0
  1258. slipwai/project/service_layouts.py +349 -0
  1259. slipwai/project/shared_packages.py +137 -0
  1260. slipwai/project/skills_page.py +96 -0
  1261. slipwai/project/stage_models.py +289 -0
  1262. slipwai/project/strangle_command.py +230 -0
  1263. slipwai/project/structure_page.py +203 -0
  1264. slipwai/project/target_docs.py +104 -0
  1265. slipwai/project/where_are_we.py +91 -0
  1266. slipwai/quick_wins.py +212 -0
  1267. slipwai/replay.py +297 -0
  1268. slipwai/resurvey.py +336 -0
  1269. slipwai/scaffold.py +238 -0
  1270. slipwai/selection.py +237 -0
  1271. slipwai/services.py +350 -0
  1272. slipwai/strategy.py +193 -0
  1273. slipwai/structure.py +350 -0
  1274. slipwai/survey.py +302 -0
  1275. slipwai/targets.py +271 -0
  1276. slipwai/tooling.py +74 -0
  1277. slipwai/toolkit.py +193 -0
  1278. slipwai/upgrade.py +302 -0
  1279. slipwai/versions.py +111 -0
  1280. slipwai/wrappers.py +118 -0
  1281. slipwai-1.0.0.dev10.dist-info/METADATA +299 -0
  1282. slipwai-1.0.0.dev10.dist-info/RECORD +1298 -0
  1283. slipwai-1.0.0.dev10.dist-info/WHEEL +4 -0
  1284. slipwai-1.0.0.dev10.dist-info/entry_points.txt +2 -0
  1285. slipwai-1.0.0.dev10.dist-info/licenses/LICENSE +21 -0
  1286. slipwai-1.0.0.dev10.dist-info/licenses/NOTICE +29 -0
  1287. slipwai-1.0.0.dev10.dist-info/licenses/assets/toolkit/skills/LICENSE +32 -0
  1288. slipwai-1.0.0.dev10.dist-info/licenses/assets/toolkit/skills/acceptance-review/LICENSE +27 -0
  1289. slipwai-1.0.0.dev10.dist-info/licenses/assets/toolkit/skills/api-design/LICENSE +28 -0
  1290. slipwai-1.0.0.dev10.dist-info/licenses/assets/toolkit/skills/cli-design/LICENSE +21 -0
  1291. slipwai-1.0.0.dev10.dist-info/licenses/assets/toolkit/skills/codebase-design/LICENSE +28 -0
  1292. slipwai-1.0.0.dev10.dist-info/licenses/assets/toolkit/skills/diagrams/NOTICE +8 -0
  1293. slipwai-1.0.0.dev10.dist-info/licenses/assets/toolkit/skills/event-modeling/NOTICE +16 -0
  1294. slipwai-1.0.0.dev10.dist-info/licenses/assets/toolkit/skills/find-skills/LICENSE +29 -0
  1295. slipwai-1.0.0.dev10.dist-info/licenses/assets/toolkit/skills/improve-codebase-architecture/LICENSE +28 -0
  1296. slipwai-1.0.0.dev10.dist-info/licenses/assets/toolkit/skills/reduce-system-complexity/LICENSE +28 -0
  1297. slipwai-1.0.0.dev10.dist-info/licenses/assets/toolkit/skills/technical-writing/LICENSE +21 -0
  1298. slipwai-1.0.0.dev10.dist-info/licenses/assets/toolkit/skills/wtf/LICENSE +21 -0
slipwai/__init__.py ADDED
@@ -0,0 +1,6 @@
1
+ """Slipwai, the factory: one command that scaffolds a new product monorepo.
2
+
3
+ `cli` is the entry point, `scaffold` assembles a project, and `project/` holds one module per part of
4
+ the repository being generated. Nothing here reads the working directory: every path comes from
5
+ `assets`, so the same answers produce the same project from anywhere.
6
+ """
slipwai/__main__.py ADDED
@@ -0,0 +1,6 @@
1
+ """`python -m slipwai` — and the entry point the frozen executable is built from."""
2
+
3
+ from slipwai.cli import main
4
+
5
+ if __name__ == "__main__":
6
+ main()
@@ -0,0 +1,3 @@
1
+ # Changelog
2
+
3
+ No public releases yet. Release notes are recorded here newest first.
@@ -0,0 +1 @@
1
+ 1.0.0.dev10
@@ -0,0 +1,40 @@
1
+ # The canonical toolkit
2
+
3
+ Everything a generated project receives lives here. No starter copy is committed anywhere, so a change in
4
+ this tree reaches every combination the moment it is generated.
5
+
6
+ | Directory | Holds |
7
+ |---|---|
8
+ | `toolkit/skills/` | The shared delivery and event skills, canonical in their event-modelling form |
9
+ | `toolkit/docs/` | Shared methodology documentation (event modeling to code, first slice) |
10
+ | `toolkit/scripts/` | The dependency-free gate scripts a generated repository ships |
11
+ | `profiles/standard/` | The rewritten overlays, and the preset, that derive the standard profile |
12
+ | `profiles/event-modelling/` | Additions specific to the event profile |
13
+ | `languages/<language>/app/` | Each backend's walking skeleton, laid out at the paths it lands on under the service's directory — `apps/service/` by default |
14
+ | `languages/java/build/` | The Maven wrapper and analyser configuration both Java backends share |
15
+ | `languages/<language>/event-port/` | The event-store port with no adapter behind it, for a backend whose event-store axis offers nothing yet. Every backend offers the axis today, so this is not emitted for any of them; it is kept for the next language on the day it lands before its stores do |
16
+ | `languages/<language>/locks/`, `go/modules/` | Committed dependency locks, one per dependency set the axes can produce |
17
+ | `languages/<language>/examples/` | The snippet a `{{example: skill/id}}` marker resolves to, per language; a project written in several languages gets one labelled block per language at each marker |
18
+ | `frontends/<frontend>/` | Frontend packs — currently `react-vite`: the `app/` skeleton, `features/<feature>/` copied into every browser app when a service has that feature (the customer login), and `locks/` per dependency set |
19
+ | `backing-services/` | Axis implementations: event-store, HTTP, staff-identity and customer-identity adapters per backend, the shared `sql/` event-log schema, the Keycloak realms under `keycloak/realms/`, the Compose file, and the pruner shared with generated projects |
20
+
21
+ The toolkit is canonical in its event-modelling form, which is why `profiles/standard/` is the
22
+ only profile directory with rewritten overlays.
23
+
24
+ ## Editing it
25
+
26
+ Edit the material in place, then run `make verify` from the factory root. There is no import or
27
+ synchronization step and no remote source repository: the factory is self-contained. Spec Kit itself is
28
+ not vendored — each generated project's `./init` installs it.
29
+
30
+ **A generated file's body belongs in this tree, never as a string in the generator.** The `app/` trees
31
+ here and under `frontends/` are read as trees, so adding a file to a starter is an edit in this directory
32
+ and nothing else. Code decides content only where the *selection* does — a marked region, a per-feature
33
+ dependency list, a name derived from the project — and `tests/test_language_skeletons.py` fails a language
34
+ module that stops reading its tree.
35
+
36
+ Routing and the generated adaptations live in `src/slipwai/`: one module per part of the
37
+ repository being generated, so the file to open is named after the file you are changing.
38
+
39
+ See [docs/maintaining.md](../docs/maintaining.md) for the verification and browsing workflow, and
40
+ [docs/axes.md](../docs/axes.md) for what each axis answer is expected to deliver.
@@ -0,0 +1,137 @@
1
+ # How this repository changes
2
+
3
+ > **Experimental.** This page arrived with brownfield adoption and will change as real programmes teach it
4
+ > what it gets wrong. What surprised you belongs on the public issue tracker.
5
+
6
+ The delivery method is installed. `make verify` is green, the survey says what is here, and `/characterise`
7
+ can pin any behaviour before it changes. Nothing on this page had to be decided for that to happen, and that
8
+ was the point: the method makes every later step safe for an agent to attempt, and only now is the question
9
+ *which* step. This page is the Choose and Slice stages — three strategies, the order to change in, what
10
+ to do about data and infrastructure, and the one rule that holds all of it together.
11
+
12
+ ## Three strategies, not two
13
+
14
+ | Strategy | What it is | When it is right | What it needs |
15
+ |---|---|---|---|
16
+ | **Strangler fig** | New capability grows beside the old system and takes its traffic one capability at a time, until the old system serves nothing and is removed | The system is large, alive and cannot stop; there is a seam requests enter through; the business trigger (`project.json`'s `why`) is a capability that has to change, not a platform that has to go | A routing seam, a data strategy that is not dual-write, and the retirement ledger |
17
+ | **Modular monolith in place** | The code is restructured behind its characterisation tests — contexts found, seams made, layers separated — without a second deployable or a routing seam | The system is one deployable that mostly works, the trigger is "cannot change it safely" rather than "cannot run it", and the team is small | `/characterise` before every move, `refactoring` and `improve-codebase-architecture`, and patience; the import gate's rule can be adopted context by context (`"layout": "hexagonal"`) |
18
+ | **Rewrite** | A new system replaces the old one, and the old one is switched off | The system is small enough to hold in one head; there is no seam to strangle through; the platform is dead and cannot be upgraded in place | Characterisation of everything the rewrite claims to preserve, a cut-over plan with a rollback, and the honesty that most rewrites are cancelled halfway |
19
+
20
+ Rewrite is the exception, chosen when the other two cannot work, not the default because it is cleaner.
21
+ A programme is allowed to change its mind: a strangler that finds one context is the whole system may
22
+ become a rewrite of that context, and a rewrite that turns out to have a seam after all may become a
23
+ strangler. What is not allowed is to do neither and call the refactoring a strategy.
24
+
25
+ ## Be honest about the event model
26
+
27
+ The generated method carries Event Modeling and event sourcing as one bundle, and the factory's own position
28
+ is that "start standard and adopt events where a subdomain earns it" is an option that mostly does not
29
+ exist: state cannot be turned back into history it never recorded. Brownfield does not change that. What
30
+ event modelling means here is **new slices at the edge**: a capability that moves to a new home is modelled
31
+ as events from the day it moves, with its history starting at a **genesis event** that records the state
32
+ the legacy system handed over, or with a change-data-capture stream translating the legacy tables into
33
+ events the new home reads. The legacy system itself is an **external system** in the model — an actor and
34
+ a swimlane, its events marked `external: true`, never a set of events invented by renaming its tables.
35
+ `/survey` says the same in the event-modelling profile; do not promise more than this.
36
+
37
+ ## Separate the layers, and do one at a time
38
+
39
+ Most programmes mix six changes into one and then cannot say which one broke it. The order below is
40
+ from the cheapest and most mechanical to the one only a person can decide, and each is a stopping point that
41
+ leaves the system better than before.
42
+
43
+ Under the ladder is its floor: **a build that declares its dependencies and fetches them** — Maven or Gradle
44
+ through the wrapper for Java, the package manager for everything else. An Ant build with its jars committed is
45
+ below it, and no rung above can be taken from there: nothing dates a jar by its name for long, nothing audits
46
+ it, and no CI runner has the tool without being told. So where the survey finds one, the programme opens with
47
+ the move — a `pom.xml` that declares each committed jar by its coordinates, sources under `src/main/java`, the
48
+ same artifact out of `./mvnw -q package`, then `/survey` reads the tree as Maven — and it is the one step no
49
+ strategy paces differently: *leave it* still takes it, because it is the least the method holds any repository
50
+ to. The rungs:
51
+
52
+ 1. **Language version** — the runtime the code is compiled or interpreted against. Java 8 → 21, Python 2 →
53
+ 3, .NET Framework → .NET. Largely mechanical: **OpenRewrite** recipes for Java (`UpgradeToJava21` and the
54
+ framework migrations beside it), `pyupgrade` and `futurize` for Python, the .NET **Upgrade Assistant**
55
+ for C#. Point the agent at the recipe, not at the files: a recipe applied is a diff to review; an agent
56
+ hand-rewriting a thousand files is a thousand chances to be wrong.
57
+ 2. **Framework** — Spring 4 → Boot, Struts → anything, AngularJS → Angular through `ngUpgrade`'s hybrid
58
+ mode, Express 3 → 4. OpenRewrite has recipes for the Java rungs (`SpringBootUpgrade`); the others are
59
+ guided and pinned by `/characterise` at the HTTP boundary.
60
+ 3. **Packaging** — WAR on an application server → an executable jar, a `.NET Framework` site → a self-hosted
61
+ process, a set of scripts → a package. The survey records `packaging: war` where it sees one; this rung
62
+ is where it stops mattering.
63
+ 4. **Runtime** — VM → container, or the container base image the packaging now allows. The first `Dockerfile`
64
+ is written here, and `make verify` grows a step that builds it.
65
+ 5. **Host** — where it runs: on-premises → a cloud, or one cloud → another. `docs/deployment.md` records the
66
+ infrastructure's home and the rule (import or reference, never manage a resource in two places); the
67
+ factory's `aws` target is one possible destination for a *generated* service, and never a claim about the
68
+ legacy system's host.
69
+ 6. **Architecture** — the strangler, the modular monolith, the contexts. Last, because every rung above it is
70
+ cheaper with a green gate and characterisation tests, and none of them needs an architectural decision.
71
+
72
+ A programme whose `why` is "end-of-life runtime" stops after rung 1 or 2 and has succeeded. One whose `why`
73
+ is "cannot ship" usually finds its problem at rung 6 and needs the five below it first. The survey reads
74
+ which of these is actually out of support — the runtime the tree pins, the framework and test framework the
75
+ manifest declares, the images a `Dockerfile` starts from — and dates each against the factory's support table
76
+ (`__DELIVERY__/survey/structure.md`, *What it runs on*); a product past its end of life goes at the head of the
77
+ recommendation's `before` list whatever `why` says, with the way up named for it, and is the map's Platform
78
+ row climbing `inventoried` → `supported` → `audited`. `/survey` re-dates on the day it runs, so a runtime that
79
+ leaves support while the programme goes on shows up without anyone looking.
80
+
81
+ ## Data
82
+
83
+ - **Schema ownership is the usual blocker.** `project.json`'s `database.schema` records where the schema is
84
+ versioned: `here`, `elsewhere` (a repository that is now the contract), `unmanaged` (a DBA, a console) or
85
+ `none`. Nothing is moved until somebody can answer who else reads these tables; the answer is written in
86
+ `docs/deployment.md` beside the infrastructure.
87
+ - **Migration tooling, where there is none.** Flyway or Liquibase for the JVM, Alembic or Django's for
88
+ Python, Prisma or knex for Node, EF migrations for .NET, `golang-migrate` for Go — recommended, not
89
+ scaffolded: the tool belongs to the ecosystem the schema lives in, and a baseline migration that matches
90
+ the database as it is (`baseline-on-migrate` in Flyway's words) is the first migration, never a rewrite of
91
+ the schema from memory.
92
+ - **Dual-write is a trap.** Two systems each writing the same fact drift the first time one of them fails.
93
+ Move data with **change data capture** from the legacy store, or an **outbox** written in the legacy
94
+ system's own transaction, and let the new home read that. One writer per fact, always.
95
+ - **Rehearse the migration.** Every cut-over is run against a copy first, with a **reconciliation report**
96
+ — counts, sums, samples — between the old and new stores, and a **rollback plan** that has been executed
97
+ at least once in rehearsal. A migration that has not been rolled back in rehearsal has no rollback plan.
98
+ - **Dual-run, then cut over.** The new home serves reads in shadow, its answers reconciled against the old
99
+ system's, before it serves anything to an actor; then the flag flips one capability at a time.
100
+ - **Some things do not move.** Data residency, audit retention, regulatory constraints on where a record may
101
+ live — find them in the survey stage and write them down, because a strategy that ignores one is cancelled
102
+ the day somebody notices.
103
+
104
+ ## Infrastructure
105
+
106
+ Three cases, and one rule. **ClickOps**, nothing describes the infrastructure: describe it before anything
107
+ imports it, because describing is safe and importing what is not described is how two things end up
108
+ managing one resource. **A platform team's IaC in another repository**: that repository is the contract, and
109
+ what this one hands over — a tag, an image, a ticket — is written in `docs/deployment.md`. **IaC in this
110
+ repository**: the factory adds nothing to it and manages none of it. The rule in all three: **import or
111
+ reference** — `tofu import`, data sources — and never manage a resource in two places. `docs/deployment.md`
112
+ records which case this is and where the description lives.
113
+
114
+ ## Every step shippable, every step reversible
115
+
116
+ Most programmes are cancelled halfway. Slice the programme so that stopping at any point leaves the
117
+ system better than it was: a runtime upgrade shipped is a win whether or not the strangler ever starts; a
118
+ capability moved and routed is a win whether or not the next one moves. A step that only pays off once the
119
+ whole programme finishes is a step to split. And every step is reversible while it is fresh: the flag flips
120
+ back, the router points back, the migration rolls back — which is why the flag, the router and the rollback
121
+ are decided in the slice's plan and not after the code exists.
122
+
123
+ ## The agent's context
124
+
125
+ A legacy codebase is larger than any context window, and an agent that reads files one at a time in it will
126
+ be confidently wrong. Before the first slice: the survey (`survey/survey.md`), the code index
127
+ (`./init --extension codegraph`), and a module map — which directories are which contexts, in the agent's
128
+ guidance. `/characterise` before each change, `/strangle` for each capability that moves, and the ledgers
129
+ they keep are what let a later session pick up where this one stopped.
130
+
131
+ ## The retirement ledger
132
+
133
+ `__DELIVERY__/retirement.md` is the record of the strangler: one row per capability, from where, to where,
134
+ routed by what, pinned by which tests, and its status — *routed*, *moved*, *retired* or *removed*. `/strangle`
135
+ writes the rows; the programme is finished when every row is *removed* and nothing else is left. A ledger
136
+ that stops being written is the first sign that a programme has quietly become a second system beside
137
+ the first, which is the one outcome worse than either.
@@ -0,0 +1,208 @@
1
+ #!/usr/bin/env python3
2
+ """Hold the convergence map to the tree: fail a row that claims a rung the repository contradicts, and a page
3
+ that no longer matches the record.
4
+
5
+ python3 scripts/check-convergence.py
6
+
7
+ `project.json`'s `convergence` rows say where an adopted repository stands on each ladder (brownfield adoption;
8
+ experimental). Most rungs only a person can establish, and those stand as written. What the tree can contradict
9
+ it does: a constitution that is still the template cannot be `ratified`; a test suite the ratchet quarantines
10
+ cannot be `tests-pass`; a repository whose release path is `manual` is not on `pipeline`; an application whose
11
+ role is not established is not `named`. An `unrecorded` row passes with a line saying so — it is a question, not
12
+ a gap. A page rendered from other rows than the record now holds is stale, and fails: `/survey` regenerates it.
13
+ """
14
+ from __future__ import annotations
15
+
16
+ import hashlib
17
+ import json
18
+ import re
19
+ import sys
20
+ from pathlib import Path
21
+
22
+
23
+ def project_root(script: Path) -> Path:
24
+ for candidate in script.parents:
25
+ if (candidate / "project.json").is_file():
26
+ return candidate
27
+ return script.parents[1]
28
+
29
+
30
+ SCRIPT = Path(__file__).resolve()
31
+ ROOT = project_root(SCRIPT)
32
+ DELIVERY = SCRIPT.parents[1]
33
+ PAGE = DELIVERY / "docs/convergence.md"
34
+ BASELINE = DELIVERY / "baseline.json"
35
+ CONSTITUTION = ROOT / ".specify/memory/constitution.md"
36
+ PLACEHOLDER = re.compile(r"\[[A-Z][A-Z0-9_]{2,}[^\]]*\]")
37
+ # A whole line, as `slipwai.strategy` reads it; a sentence mentioning the `Strategy:` line is not the line.
38
+ ADR_STRATEGY = re.compile(r"^\W*strategy\W*:\W*([a-z-]+)\W*$", re.IGNORECASE | re.MULTILINE)
39
+ STRATEGIES = ("leave-it", "in-place", "modular-monolith", "strangler-fig", "rewrite")
40
+ # What a strategy was called before the axis was `strategy`: an ADR accepted under the older spelling still
41
+ # decides, and the record is written under the current name by the next `/survey`.
42
+ OLD_STRATEGIES = {"modernise-in-place": "in-place"}
43
+ ADR_ACCEPTED = re.compile(r"^## Status\s*\n+\s*Accepted\b", re.MULTILINE)
44
+ LEDGER = DELIVERY / "retirement.md"
45
+ MARKER = re.compile(r"<!-- convergence: ([0-9a-f]+) -->")
46
+ RUNGS = {
47
+ "path-to-production": ("unknown", "manual", "scripted", "pipeline", "one-path", "pipeline-decides"),
48
+ "integration": ("unknown", "branches", "trunk", "continuous"),
49
+ "safety-net": ("none", "tests-exist", "tests-pass", "fast", "pinned", "mutation-measured"),
50
+ "structure": ("as-found", "named", "laid-out", "hexagonal", "typed"),
51
+ "platform": ("unknown", "inventoried", "supported", "audited"),
52
+ "constitution": ("template", "ratified", "in-full"),
53
+ "data": ("open", "recorded", "settled"),
54
+ "infrastructure": ("open", "recorded", "settled"),
55
+ "strategy": ("open", "why-recorded", "recommended", "decided", "done"),
56
+ }
57
+
58
+
59
+ def caps(document: dict) -> dict[str, tuple[str, str]]:
60
+ """The highest rung the tree allows each axis, with the fact that caps it — only where the tree can say."""
61
+ found: dict[str, tuple[str, str]] = {}
62
+ release = (document.get("release") or {}).get("path", "unknown")
63
+ if release in ("unknown", "manual", "scripted"):
64
+ found["path-to-production"] = (release, f"release.path is `{release}`")
65
+ wrapped = [r for r in (document.get("deployables") or {}).values() if r.get("generated") is False]
66
+ if wrapped:
67
+ if any(r.get("kind") == "application" for r in wrapped):
68
+ found["structure"] = ("as-found", "an application's role is not established (`kind: application`)")
69
+ elif not all(r.get("path", "").startswith("apps/") for r in wrapped):
70
+ found["structure"] = ("named", "not every application lives under apps/")
71
+ elif not all(r.get("layout") == "hexagonal" for r in wrapped):
72
+ found["structure"] = ("laid-out", "not every application declares the hexagonal layout")
73
+ elif not all((r.get("commands") or {}).get("typecheck") for r in wrapped):
74
+ found["structure"] = ("hexagonal", "not every application records a typecheck command")
75
+ if not any((r.get("commands") or {}).get("test") for r in wrapped):
76
+ found["safety-net"] = ("none", "no application records a test command")
77
+ # What the applications run on, as `/survey` dated it: a product past its end of life, or one the table does
78
+ # not know, caps the row; a missing audit command caps it below `audited`. A person who knows better — a
79
+ # vendor's paid support — records the row with `confirmed` provenance and the terms as evidence, and this
80
+ # still says what the tree and the table say.
81
+ products = [p for p in ((document.get("platform") or {}).get("products") or []) if isinstance(p, dict)]
82
+ if not products:
83
+ found["platform"] = ("unknown", "no runtime pin, framework version or image was dated by the survey")
84
+ else:
85
+ behind = [f"{p.get('title')} {p.get('version')}" for p in products
86
+ if p.get("status") in ("end-of-life", "unknown")]
87
+ # An Ant build declares nothing a tool can audit: its jars are committed. The floor under the ladder is
88
+ # a build that does (`docs/change-strategy.md`), and the programme's first step is to move there.
89
+ ant = [r.get("name") for r in wrapped if (r.get("toolchain") or {}).get("ecosystem") == "ant"]
90
+ if behind and (document.get("platform") or {}).get("provenance") != "confirmed":
91
+ found["platform"] = ("inventoried",
92
+ f"{', '.join(behind)} is out of support or not in the support table")
93
+ elif ant:
94
+ found["platform"] = ("inventoried", f"{', '.join(map(str, ant))} builds with Ant, whose committed jars "
95
+ "nothing can audit — Maven or Gradle first")
96
+ elif not all((r.get("commands") or {}).get("audit") for r in wrapped):
97
+ found["platform"] = ("supported", "not every application records an audit command")
98
+ if BASELINE.is_file():
99
+ try:
100
+ baseline = json.loads(BASELINE.read_text())
101
+ except ValueError:
102
+ baseline = {}
103
+ red = []
104
+ for name, targets in baseline.items():
105
+ test = targets.get("test") or {}
106
+ if test.get("exit"):
107
+ # The runner's own failure names are findings (`test: <name>`), so the count is of failing tests
108
+ # where the output named them, and of nothing where it did not.
109
+ failing = sum(1 for finding in test.get("findings") or [] if str(finding).startswith("test: "))
110
+ red.append(f"{name} ({failing} failing)" if failing else name)
111
+ if red and "safety-net" not in found:
112
+ found["safety-net"] = ("tests-exist", f"the ratchet quarantines the test suite of {', '.join(red)}")
113
+ if not CONSTITUTION.is_file() or PLACEHOLDER.search(CONSTITUTION.read_text(errors="replace")):
114
+ found["constitution"] = ("template", "the constitution is missing or still carries the template's placeholders")
115
+ if not document.get("why"):
116
+ found["strategy"] = ("open", "no `why` is recorded")
117
+ else:
118
+ decided = decided_strategy()
119
+ if decided is None:
120
+ found["strategy"] = ("recommended", "no accepted ADR under docs/adr/ carries a `Strategy:` line")
121
+ elif decided != "leave-it" and not ledger_finished():
122
+ found["strategy"] = ("decided", f"the ADR decides `{decided}` and the retirement ledger does not "
123
+ "read *removed* throughout")
124
+ return found
125
+
126
+
127
+ def decided_strategy() -> str | None:
128
+ """The strategy the highest-numbered accepted ADR names, or None."""
129
+ decided = None
130
+ for path in sorted((DELIVERY / "docs/adr").glob("*.md")):
131
+ text = path.read_text(errors="replace")
132
+ spelled = [match.group(1).lower() for match in ADR_STRATEGY.finditer(text)]
133
+ named = [OLD_STRATEGIES.get(name, name) for name in spelled]
134
+ strategy = next((name for name in named if name in STRATEGIES), None)
135
+ if strategy and ADR_ACCEPTED.search(text):
136
+ decided = strategy
137
+ return decided
138
+
139
+
140
+ def ledger_finished() -> bool:
141
+ last: dict[str, str] = {}
142
+ for line in (LEDGER.read_text(errors="replace") if LEDGER.is_file() else "").splitlines():
143
+ cells = [cell.strip() for cell in line.strip().strip("|").split("|")]
144
+ if len(cells) == 7 and cells[0] not in ("Date", "---") and not cells[0].startswith("-"):
145
+ last[cells[1]] = cells[6].strip("*").lower()
146
+ return bool(last) and all(status == "removed" for status in last.values())
147
+
148
+
149
+ def main() -> int:
150
+ document = json.loads((ROOT / "project.json").read_text())
151
+ rows = document.get("convergence")
152
+ if not isinstance(rows, list) or not rows:
153
+ print("check-convergence: no map recorded — adopted before the map existed; `slipwai adopt --refresh` writes "
154
+ "it")
155
+ return 0
156
+ if not PAGE.is_file():
157
+ print(f"check-convergence: {PAGE.relative_to(ROOT)} is missing; /survey (slipwai adopt --refresh) writes it",
158
+ file=sys.stderr)
159
+ return 1
160
+ marker = MARKER.search(PAGE.read_text())
161
+ expected = hashlib.sha256(json.dumps(rows, sort_keys=True).encode()).hexdigest()[:16]
162
+ if marker is None or marker.group(1) != expected:
163
+ print(
164
+ f"check-convergence: {PAGE.relative_to(ROOT)} is stale — project.json's convergence rows changed and the "
165
+ "page was not regenerated; run /survey (slipwai adopt --refresh) and commit both.", file=sys.stderr,
166
+ )
167
+ return 1
168
+ capped = caps(document)
169
+ failures = 0
170
+ for row in rows:
171
+ axis, rung = row.get("axis"), row.get("rung")
172
+ if axis not in RUNGS or rung not in RUNGS[axis]:
173
+ print(f"check-convergence: {axis}: `{rung}` is not a rung this factory knows", file=sys.stderr)
174
+ failures += 1
175
+ continue
176
+ if row.get("provenance") == "unrecorded":
177
+ print(f" {axis}: `{rung}` — unrecorded: nothing has established it; /drive asks before the first slice")
178
+ continue
179
+ cap = capped.get(axis)
180
+ if cap and RUNGS[axis].index(rung) > RUNGS[axis].index(cap[0]):
181
+ print(
182
+ f"check-convergence: {axis} is recorded at `{rung}` ({row.get('provenance')}), but {cap[1]} — the tree "
183
+ f"allows `{cap[0]}` at most. Establish the rung, or record where it stands.", file=sys.stderr,
184
+ )
185
+ failures += 1
186
+ continue
187
+ mark = "at target" if rung == row.get("target") else f"below `{row.get('target')}`"
188
+ print(f" {axis}: `{rung}` — {mark}" + (f"; planned as {row['planned']}" if row.get("planned") else ""))
189
+ # Said, not failed: a strangler fig decided with nowhere for a capability to move to. The first strangler
190
+ # adoption archived five product slices, all built in the WAR it had decided to strangle, with an empty ledger.
191
+ deployables = document.get("deployables") or {}
192
+ if decided_strategy() == "strangler-fig" and not ledger_finished() and deployables and all(
193
+ not (record or {}).get("generated") for record in deployables.values()
194
+ ):
195
+ archived = len([path for path in (ROOT / "specs").glob("*/slices/*") if path.is_dir()])
196
+ print(
197
+ f" strategy: `strangler-fig` is decided, {archived} slice(s) are archived, the retirement ledger "
198
+ "reads *removed* for nothing, and every deployable is one that was here — nothing has moved to a new "
199
+ "home. A product slice under a strangler lands in a new home (`add-service`, then `/strangle`); the "
200
+ "Plan stage of /drive has the rule."
201
+ )
202
+ at = sum(1 for r in rows if r.get("rung") == r.get("target"))
203
+ print(f"check-convergence: {at} of {len(rows)} axes at target; the map is {PAGE.relative_to(ROOT)}")
204
+ return 1 if failures else 0
205
+
206
+
207
+ if __name__ == "__main__":
208
+ raise SystemExit(main())