slipwai 1.2.0.dev23__tar.gz → 1.2.0.dev25__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1325) hide show
  1. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/PKG-INFO +1 -1
  2. slipwai-1.2.0.dev25/VERSION +1 -0
  3. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/agents/cruise.py +346 -102
  4. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/agents/project.py +113 -1
  5. slipwai-1.2.0.dev25/assets/toolkit/scripts/agents/registry.json +1216 -0
  6. slipwai-1.2.0.dev25/changelog.d/cruise-runner-everywhere.md +21 -0
  7. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/agent_settings.py +6 -5
  8. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/agent_targets.py +4 -2
  9. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/cruise.py +34 -24
  10. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/cruise_record.py +5 -0
  11. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/gitignore.py +4 -1
  12. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/readme.py +1 -1
  13. slipwai-1.2.0.dev23/VERSION +0 -1
  14. slipwai-1.2.0.dev23/assets/toolkit/scripts/agents/registry.json +0 -852
  15. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/.gitignore +0 -0
  16. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/CHANGELOG.md +0 -0
  17. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/LICENSE +0 -0
  18. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/NOTICE +0 -0
  19. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/README.md +0 -0
  20. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/README.md +0 -0
  21. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/docs/change-strategy.md +0 -0
  22. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/scripts/check-convergence.py +0 -0
  23. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/scripts/ratchet.py +0 -0
  24. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/support.json +0 -0
  25. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/wrappers/gradle/gradle-wrapper.jar.base64 +0 -0
  26. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/wrappers/gradle/gradle-wrapper.properties +0 -0
  27. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/wrappers/gradle/gradlew +0 -0
  28. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/wrappers/gradle/gradlew.bat +0 -0
  29. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/wrappers/gradle/source-notes.md +0 -0
  30. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/docker-compose.yml +0 -0
  31. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/env.example +0 -0
  32. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/checkpoint_store_contract.go +0 -0
  33. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/checkpoint_store_memory.go +0 -0
  34. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/checkpoint_store_memory_test.go +0 -0
  35. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/checkpoint_store_postgres.go +0 -0
  36. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/checkpoint_store_postgres_integration_test.go +0 -0
  37. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/checkpoint_store_sqlite.go +0 -0
  38. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/checkpoint_store_sqlite_test.go +0 -0
  39. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/config.go +0 -0
  40. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/config_test.go +0 -0
  41. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/event_store_contract.go +0 -0
  42. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/event_store_memory.go +0 -0
  43. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/event_store_memory_test.go +0 -0
  44. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/event_store_postgres.go +0 -0
  45. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/event_store_postgres_integration_test.go +0 -0
  46. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/event_store_sqlite.go +0 -0
  47. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/event_store_sqlite_test.go +0 -0
  48. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/events.go +0 -0
  49. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/http_app.go +0 -0
  50. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/http_app_test.go +0 -0
  51. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/http_openapi_test.go +0 -0
  52. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/http_security.go +0 -0
  53. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/http_security_test.go +0 -0
  54. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/migrate_main.go +0 -0
  55. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/migrate_main_test.go +0 -0
  56. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/migrations_embed.go +0 -0
  57. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/migrations_keep +0 -0
  58. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/oidc_keycloak.go +0 -0
  59. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/oidc_keycloak_test.go +0 -0
  60. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/openapi.yaml +0 -0
  61. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/projections.go +0 -0
  62. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/projections_test.go +0 -0
  63. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/projections_ticker.go +0 -0
  64. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/projections_ticker_test.go +0 -0
  65. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/read_models.go +0 -0
  66. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/serve_main.go +0 -0
  67. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/tracing.go +0 -0
  68. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/tracing_test.go +0 -0
  69. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/users_oidc_keycloak.go +0 -0
  70. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/users_oidc_keycloak_test.go +0 -0
  71. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/actor.java +0 -0
  72. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/append_result.java +0 -0
  73. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/causation_id.java +0 -0
  74. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/checkpoint_store_memory.java +0 -0
  75. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/checkpoint_store_postgres.java +0 -0
  76. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/checkpoint_store_sqlite.java +0 -0
  77. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/committed_event.java +0 -0
  78. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/condition.java +0 -0
  79. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/conditional_append_result.java +0 -0
  80. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/correlation_id.java +0 -0
  81. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/database_url.java +0 -0
  82. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/domain_event.java +0 -0
  83. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/event_store.java +0 -0
  84. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/event_store_exception.java +0 -0
  85. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/event_store_memory.java +0 -0
  86. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/event_store_memory_database.java +0 -0
  87. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/event_store_postgres.java +0 -0
  88. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/event_store_sqlite.java +0 -0
  89. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/event_visitor.java +0 -0
  90. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/http_schema_failure.java +0 -0
  91. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/migrate_main.java +0 -0
  92. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/oidc_keycloak.java +0 -0
  93. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/projection.java +0 -0
  94. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/projections.java +0 -0
  95. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/read_models.java +0 -0
  96. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tag_query.java +0 -0
  97. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tagged_read.java +0 -0
  98. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tags_of.java +0 -0
  99. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/checkpoint_store_contract.java +0 -0
  100. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/checkpoint_store_memory_test.java +0 -0
  101. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/checkpoint_store_sqlite_test.java +0 -0
  102. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/database_url_test.java +0 -0
  103. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/event_store_contract.java +0 -0
  104. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/event_store_memory_test.java +0 -0
  105. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/event_store_sqlite_test.java +0 -0
  106. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/oidc_keycloak_test.java +0 -0
  107. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/projections_test.java +0 -0
  108. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/users_oidc_keycloak_test.java +0 -0
  109. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/transactions.java +0 -0
  110. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/users_oidc_keycloak.java +0 -0
  111. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/config_source_registration +0 -0
  112. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/database_url_config_source.java +0 -0
  113. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/http_flags_resource.java +0 -0
  114. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/http_health_check.java +0 -0
  115. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/http_not_found_mapper.java +0 -0
  116. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/jta_transactions.java +0 -0
  117. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/oidc_keycloak_augmentor.java +0 -0
  118. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/scheduled_projections.java +0 -0
  119. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/tests/checkpoint_store_postgres_it.java +0 -0
  120. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/tests/event_store_postgres_it.java +0 -0
  121. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/tests/http_app_test.java +0 -0
  122. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/users_current_customer.java +0 -0
  123. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/database_url_environment_post_processor.java +0 -0
  124. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/environment_post_processor_registration +0 -0
  125. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/http_flags_controller.java +0 -0
  126. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/http_health_indicator.java +0 -0
  127. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/http_not_found_advice.java +0 -0
  128. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/oidc_keycloak_security.java +0 -0
  129. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/scheduled_projections.java +0 -0
  130. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/spring_transactions.java +0 -0
  131. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/tests/checkpoint_store_postgres_it.java +0 -0
  132. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/tests/event_store_postgres_it.java +0 -0
  133. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/tests/http_app_test.java +0 -0
  134. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/users_security.java +0 -0
  135. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/keycloak/README.md +0 -0
  136. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/keycloak/realms/app.json +0 -0
  137. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/keycloak/realms/customers.json +0 -0
  138. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/prune.py +0 -0
  139. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/checkpoint_store_memory.py +0 -0
  140. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/checkpoint_store_postgres.py +0 -0
  141. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/checkpoint_store_sqlite.py +0 -0
  142. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/event_store_memory.py +0 -0
  143. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/event_store_postgres.py +0 -0
  144. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/event_store_sqlite.py +0 -0
  145. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/events.py +0 -0
  146. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/http_app.py +0 -0
  147. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/logging_setup.py +0 -0
  148. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/main.py +0 -0
  149. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/migrations_apply.py +0 -0
  150. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/oidc_keycloak.py +0 -0
  151. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/openapi-flags.json +0 -0
  152. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/openapi.json +0 -0
  153. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/openapi_export.py +0 -0
  154. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/projections.py +0 -0
  155. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/projections_lifespan.py +0 -0
  156. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/read_models.py +0 -0
  157. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/settings.py +0 -0
  158. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/checkpoint_store_contract.py +0 -0
  159. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/conftest.py +0 -0
  160. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/event_store_contract.py +0 -0
  161. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_checkpoint_store_memory.py +0 -0
  162. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_checkpoint_store_postgres.py +0 -0
  163. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_checkpoint_store_sqlite.py +0 -0
  164. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_event_store_memory.py +0 -0
  165. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_event_store_postgres.py +0 -0
  166. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_event_store_sqlite.py +0 -0
  167. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_http_app.py +0 -0
  168. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_logging_setup.py +0 -0
  169. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_oidc_keycloak.py +0 -0
  170. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_projections.py +0 -0
  171. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_projections_lifespan.py +0 -0
  172. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_settings.py +0 -0
  173. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_tracing.py +0 -0
  174. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_users_oidc_keycloak.py +0 -0
  175. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tracing.py +0 -0
  176. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/users_oidc_keycloak.py +0 -0
  177. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/sql/001_events.sql +0 -0
  178. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/sql/002_events_append_only.sql +0 -0
  179. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/sql/003_projection_checkpoints.sql +0 -0
  180. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/sql/004_event_tags.sql +0 -0
  181. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/checkpoint-store-memory.ts +0 -0
  182. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/checkpoint-store-postgres.ts +0 -0
  183. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/checkpoint-store-sqlite.ts +0 -0
  184. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/config.ts +0 -0
  185. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/event-store-memory.ts +0 -0
  186. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/event-store-postgres.ts +0 -0
  187. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/event-store-sqlite.ts +0 -0
  188. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/events.ts +0 -0
  189. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/http-app.ts +0 -0
  190. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/main.ts +0 -0
  191. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/migrations/001_events.js +0 -0
  192. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/migrations/002_events_append_only.js +0 -0
  193. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/migrations/003_projection_checkpoints.js +0 -0
  194. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/migrations/004_event_tags.js +0 -0
  195. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/oidc-keycloak.ts +0 -0
  196. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/openapi-export.ts +0 -0
  197. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/openapi-flags.json +0 -0
  198. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/openapi.json +0 -0
  199. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/projections-plugin.ts +0 -0
  200. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/projections.ts +0 -0
  201. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/read-models.ts +0 -0
  202. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/checkpoint-store-contract.ts +0 -0
  203. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/checkpoint-store-memory.test.ts +0 -0
  204. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/checkpoint-store-postgres.test.ts +0 -0
  205. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/checkpoint-store-sqlite.test.ts +0 -0
  206. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/event-store-contract.ts +0 -0
  207. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/event-store-memory.test.ts +0 -0
  208. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/event-store-postgres.test.ts +0 -0
  209. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/event-store-sqlite.test.ts +0 -0
  210. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/http-app.test.ts +0 -0
  211. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/oidc-keycloak.test.ts +0 -0
  212. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/projections-plugin.test.ts +0 -0
  213. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/projections.test.ts +0 -0
  214. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/tracing.test.ts +0 -0
  215. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/users-oidc-keycloak.test.ts +0 -0
  216. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tracing.ts +0 -0
  217. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/users-oidc-keycloak.ts +0 -0
  218. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/vitest.integration.config.ts +0 -0
  219. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/api-client/package.json +0 -0
  220. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/api-client/src/index.ts +0 -0
  221. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/index.html +0 -0
  222. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/package.json +0 -0
  223. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/src/App.tsx +0 -0
  224. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/src/main.tsx +0 -0
  225. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/src/styles/base.css +0 -0
  226. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/src/styles/tokens.css +0 -0
  227. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/tests/App.test.tsx +0 -0
  228. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/tests/setup.ts +0 -0
  229. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/tsconfig.json +0 -0
  230. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/vite.config.ts +0 -0
  231. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app-flags-local/flags.test.ts +0 -0
  232. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app-flags-local/flags.ts +0 -0
  233. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app-flags-target/flags.test.ts +0 -0
  234. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app-flags-target/flags.ts +0 -0
  235. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app-route-client/Home.test.tsx +0 -0
  236. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app-route-client/Home.tsx +0 -0
  237. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app-route-plain/Home.test.tsx +0 -0
  238. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app-route-plain/Home.tsx +0 -0
  239. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/features/users-keycloak/src/auth/Account.tsx +0 -0
  240. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/features/users-keycloak/src/auth/users.tsx +0 -0
  241. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/features/users-keycloak/tests/auth/Account.test.tsx +0 -0
  242. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/features/users-keycloak/tests/auth/users.test.ts +0 -0
  243. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/frontend-only-users-keycloak.json +0 -0
  244. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/frontend-only.json +0 -0
  245. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/typescript-backend-fastify-postgres-users-keycloak.json +0 -0
  246. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/typescript-backend-fastify-postgres.json +0 -0
  247. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/typescript-backend-fastify-users-keycloak.json +0 -0
  248. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/typescript-backend-fastify.json +0 -0
  249. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/typescript-backend-postgres-users-keycloak.json +0 -0
  250. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/typescript-backend-postgres.json +0 -0
  251. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/typescript-backend-users-keycloak.json +0 -0
  252. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/typescript-backend.json +0 -0
  253. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/app/.gremlins.yaml +0 -0
  254. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/app/application/README.md +0 -0
  255. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/app/domain/README.md +0 -0
  256. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/app/health/health.go +0 -0
  257. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/app/health/health_test.go +0 -0
  258. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/event-port/application/ports/events/events.go +0 -0
  259. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/event-port/application/ports/events/events_test.go +0 -0
  260. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/accept-child-id-remove-exercise.md +0 -0
  261. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/acl-stripe-payment-translation.md +0 -0
  262. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/aggregate-sizing-occasion.md +0 -0
  263. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/aggregate-vs-read-model.md +0 -0
  264. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/always-valid-occasion-invariants.md +0 -0
  265. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/branded-id-types.md +0 -0
  266. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/create-child-through-root.md +0 -0
  267. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/decider-pattern-order.md +0 -0
  268. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/describe-order-exhaustive-switch.md +0 -0
  269. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/discriminated-union-pledge-result.md +0 -0
  270. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/domain-behavioral-tests.md +0 -0
  271. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/domain-service-pledge-contribution.md +0 -0
  272. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/domain-service-test-pledge-contribution.md +0 -0
  273. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/domain-service-vs-use-case.md +0 -0
  274. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/entity-rename-occasion.md +0 -0
  275. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/error-propagation-through-layers.md +0 -0
  276. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/exception-vs-result-type.md +0 -0
  277. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/explicit-return-pledge-no-events.md +0 -0
  278. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/fake-vs-mock-repository.md +0 -0
  279. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/in-process-event-dispatch.md +0 -0
  280. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/integration-test-order-repository.md +0 -0
  281. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/invariant-driven-vending-machine.md +0 -0
  282. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/money-value-object-factory.md +0 -0
  283. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/multiple-error-reasons-union.md +0 -0
  284. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/naming-signature-domain-vs-use-case.md +0 -0
  285. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/occasion-repository-interface.md +0 -0
  286. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/one-aggregate-per-transaction.md +0 -0
  287. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/optimistic-locking-repository-save.md +0 -0
  288. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/optimistic-locking-version-field.md +0 -0
  289. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/order-lifecycle-union.md +0 -0
  290. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/outbox-pattern-dispatch.md +0 -0
  291. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/pledge-result-types.md +0 -0
  292. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/process-manager-gift-purchase.md +0 -0
  293. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/property-based-test-pledge-budget.md +0 -0
  294. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/purity-test-domain-vs-presentation.md +0 -0
  295. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/readonly-array-child-collection.md +0 -0
  296. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/shared-kernel-package-layout.md +0 -0
  297. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/specification-can-pledge.md +0 -0
  298. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/test-decide-order-events.md +0 -0
  299. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/test-error-funding-closed.md +0 -0
  300. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/test-factory-get-occasion.md +0 -0
  301. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/ubiquitous-language-glossary-types.md +0 -0
  302. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/use-case-test-pledge-contribution.md +0 -0
  303. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/wrong-catch-rethrow-context.md +0 -0
  304. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/wrong-exception-for-business-rule.md +0 -0
  305. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/wrong-generic-error-type.md +0 -0
  306. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/zod-branded-type-bridging.md +0 -0
  307. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/account-decider-and-evolve.md +0 -0
  308. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/balance-view-apply-fold.md +0 -0
  309. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/balance-view-projection.md +0 -0
  310. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/catch-up-checkpoint-transaction.md +0 -0
  311. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/command-handler-loop.md +0 -0
  312. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/command-handler-retry-loop.md +0 -0
  313. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/decide-withdraw-example.md +0 -0
  314. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/decider-behaviour-tests.md +0 -0
  315. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/decider-insufficient-funds-test.md +0 -0
  316. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/decider-type.md +0 -0
  317. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/decision-result-type.md +0 -0
  318. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/deposit-money-command-with-timestamp.md +0 -0
  319. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/event-envelope-type.md +0 -0
  320. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/event-store-port-interface.md +0 -0
  321. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/event-store-port.md +0 -0
  322. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/evolve-behaviour-via-withdraw-limit.md +0 -0
  323. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/generic-rehydrate-fold.md +0 -0
  324. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/idempotent-projection-dedupe.md +0 -0
  325. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/in-memory-event-store-fake.md +0 -0
  326. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/inline-view-in-append-transaction.md +0 -0
  327. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/live-view-bounded-fold.md +0 -0
  328. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/order-placed-upcaster.md +0 -0
  329. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/projection-behaviour-tests.md +0 -0
  330. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/rehydrate-left-fold.md +0 -0
  331. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/tags-of-from-identifying-attributes.md +0 -0
  332. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/todo-list-claiming.md +0 -0
  333. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/tolerant-reader-read-path.md +0 -0
  334. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/upcaster-behaviour-test.md +0 -0
  335. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/adapter-error-translation.md +0 -0
  336. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/antipattern-business-logic-in-adapter.md +0 -0
  337. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/antipattern-bypass-adapter.md +0 -0
  338. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/antipattern-domain-depends-on-infrastructure.md +0 -0
  339. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/antipattern-pattern-shaped-names.md +0 -0
  340. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/antipattern-technology-shaped-port.md +0 -0
  341. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/composition-root-http-entrypoint.md +0 -0
  342. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/composition-root-queue-entrypoint.md +0 -0
  343. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/cqrs-lite-dashboard-query-function.md +0 -0
  344. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/cqrs-lite-domain-transform-read-data.md +0 -0
  345. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-auth-driving-adapter.md +0 -0
  346. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-domain-authorization.md +0 -0
  347. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-domain-probe-port.md +0 -0
  348. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-error-formatting-http.md +0 -0
  349. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-technical-telemetry-adapters.md +0 -0
  350. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-transactional-persistence-port.md +0 -0
  351. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-use-case-identity.md +0 -0
  352. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/dependency-injection-order-placement.md +0 -0
  353. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/driven-adapter-and-fake-implementation.md +0 -0
  354. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/greenfield-driven-port-fake.md +0 -0
  355. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/greenfield-driving-port-constant.md +0 -0
  356. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/incremental-after-thin-entrypoint.md +0 -0
  357. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/incremental-before-tangled-handler.md +0 -0
  358. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/incremental-create-adapter.md +0 -0
  359. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/incremental-create-use-case.md +0 -0
  360. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/incremental-extract-domain-function.md +0 -0
  361. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/incremental-extract-port-interface.md +0 -0
  362. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/port-interface-definitions.md +0 -0
  363. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/reads-vs-writes-query-function-example.md +0 -0
  364. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/testing-create-test-db-helper.md +0 -0
  365. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/testing-domain-unit-test-example.md +0 -0
  366. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/testing-fake-order-repo.md +0 -0
  367. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/testing-narrow-integration-tests.md +0 -0
  368. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/testing-recording-fake-instrumentation.md +0 -0
  369. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/testing-use-case-primary-boundary.md +0 -0
  370. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/worked-example-domain-function-record-pledge.md +0 -0
  371. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/worked-example-domain-types.md +0 -0
  372. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/worked-example-domain-unit-test.md +0 -0
  373. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/worked-example-driven-adapters.md +0 -0
  374. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/worked-example-driving-adapter-entrypoint.md +0 -0
  375. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/worked-example-fakes-for-testing.md +0 -0
  376. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/worked-example-port-interfaces.md +0 -0
  377. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/worked-example-use-case-orchestration.md +0 -0
  378. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/worked-example-use-case-test.md +0 -0
  379. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/correct-complete-factory-object.md +0 -0
  380. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/correct-fresh-state-per-test.md +0 -0
  381. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/correct-import-real-schema.md +0 -0
  382. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/correct-inline-tested-through-behavior.md +0 -0
  383. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/correct-testing-behavior-public-api.md +0 -0
  384. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/coverage-theater-assert-called-only-correct.md +0 -0
  385. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/coverage-theater-assert-called-only-wrong.md +0 -0
  386. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/coverage-theater-branch-coverage-correct.md +0 -0
  387. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/coverage-theater-happy-path-only-wrong.md +0 -0
  388. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/coverage-theater-mock-function-under-test-correct.md +0 -0
  389. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/coverage-theater-mock-function-under-test-wrong.md +0 -0
  390. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/coverage-theater-trivial-getter-setter-correct.md +0 -0
  391. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/coverage-theater-trivial-getter-setter-wrong.md +0 -0
  392. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/factory-basic-pattern.md +0 -0
  393. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/factory-complete-example.md +0 -0
  394. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/factory-composition.md +0 -0
  395. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/reach-validation-through-behavior.md +0 -0
  396. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/wrong-extracted-helper-with-own-test.md +0 -0
  397. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/wrong-incomplete-factory-object.md +0 -0
  398. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/wrong-redefine-schema-in-test.md +0 -0
  399. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/wrong-shared-mutable-fixture.md +0 -0
  400. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/wrong-testing-implementation-detail.md +0 -0
  401. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/flags/flags/flags.go +0 -0
  402. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/flags/flags/flags_test.go +0 -0
  403. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/modules/base/go.mod +0 -0
  404. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/modules/base/go.sum +0 -0
  405. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/modules/postgres/go.mod +0 -0
  406. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/modules/postgres/go.sum +0 -0
  407. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/modules/sqlite/go.mod +0 -0
  408. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/modules/sqlite/go.sum +0 -0
  409. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/scripts/go-coverage.py +0 -0
  410. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/scripts/go-mutation.py +0 -0
  411. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/build/.gitattributes +0 -0
  412. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/build/.mvn/wrapper/maven-wrapper.properties +0 -0
  413. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/build/config/checkstyle.xml +0 -0
  414. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/build/config/pmd-ruleset.xml +0 -0
  415. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/build/config/spotbugs-exclude.xml +0 -0
  416. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/build/mvnw +0 -0
  417. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/build/mvnw.cmd +0 -0
  418. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/accept-child-id-remove-exercise.md +0 -0
  419. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/acl-stripe-payment-translation.md +0 -0
  420. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/aggregate-sizing-occasion.md +0 -0
  421. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/aggregate-vs-read-model.md +0 -0
  422. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/always-valid-occasion-invariants.md +0 -0
  423. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/branded-id-types.md +0 -0
  424. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/create-child-through-root.md +0 -0
  425. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/decider-pattern-order.md +0 -0
  426. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/describe-order-exhaustive-switch.md +0 -0
  427. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/discriminated-union-pledge-result.md +0 -0
  428. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/domain-behavioral-tests.md +0 -0
  429. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/domain-service-pledge-contribution.md +0 -0
  430. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/domain-service-test-pledge-contribution.md +0 -0
  431. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/domain-service-vs-use-case.md +0 -0
  432. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/entity-rename-occasion.md +0 -0
  433. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/error-propagation-through-layers.md +0 -0
  434. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/exception-vs-result-type.md +0 -0
  435. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/explicit-return-pledge-no-events.md +0 -0
  436. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/fake-vs-mock-repository.md +0 -0
  437. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/in-process-event-dispatch.md +0 -0
  438. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/integration-test-order-repository.md +0 -0
  439. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/invariant-driven-vending-machine.md +0 -0
  440. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/money-value-object-factory.md +0 -0
  441. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/multiple-error-reasons-union.md +0 -0
  442. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/naming-signature-domain-vs-use-case.md +0 -0
  443. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/occasion-repository-interface.md +0 -0
  444. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/one-aggregate-per-transaction.md +0 -0
  445. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/optimistic-locking-repository-save.md +0 -0
  446. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/optimistic-locking-version-field.md +0 -0
  447. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/order-lifecycle-union.md +0 -0
  448. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/outbox-pattern-dispatch.md +0 -0
  449. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/pledge-result-types.md +0 -0
  450. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/process-manager-gift-purchase.md +0 -0
  451. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/property-based-test-pledge-budget.md +0 -0
  452. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/purity-test-domain-vs-presentation.md +0 -0
  453. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/readonly-array-child-collection.md +0 -0
  454. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/shared-kernel-package-layout.md +0 -0
  455. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/specification-can-pledge.md +0 -0
  456. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/test-decide-order-events.md +0 -0
  457. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/test-error-funding-closed.md +0 -0
  458. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/test-factory-get-occasion.md +0 -0
  459. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/ubiquitous-language-glossary-types.md +0 -0
  460. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/use-case-test-pledge-contribution.md +0 -0
  461. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/wrong-catch-rethrow-context.md +0 -0
  462. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/wrong-exception-for-business-rule.md +0 -0
  463. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/wrong-generic-error-type.md +0 -0
  464. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/zod-branded-type-bridging.md +0 -0
  465. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/account-decider-and-evolve.md +0 -0
  466. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/balance-view-apply-fold.md +0 -0
  467. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/balance-view-projection.md +0 -0
  468. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/catch-up-checkpoint-transaction.md +0 -0
  469. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/command-handler-loop.md +0 -0
  470. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/command-handler-retry-loop.md +0 -0
  471. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/decide-withdraw-example.md +0 -0
  472. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/decider-behaviour-tests.md +0 -0
  473. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/decider-insufficient-funds-test.md +0 -0
  474. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/decider-type.md +0 -0
  475. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/decision-result-type.md +0 -0
  476. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/deposit-money-command-with-timestamp.md +0 -0
  477. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/event-envelope-type.md +0 -0
  478. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/event-store-port-interface.md +0 -0
  479. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/event-store-port.md +0 -0
  480. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/evolve-behaviour-via-withdraw-limit.md +0 -0
  481. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/generic-rehydrate-fold.md +0 -0
  482. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/idempotent-projection-dedupe.md +0 -0
  483. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/in-memory-event-store-fake.md +0 -0
  484. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/inline-view-in-append-transaction.md +0 -0
  485. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/live-view-bounded-fold.md +0 -0
  486. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/order-placed-upcaster.md +0 -0
  487. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/projection-behaviour-tests.md +0 -0
  488. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/rehydrate-left-fold.md +0 -0
  489. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/tags-of-from-identifying-attributes.md +0 -0
  490. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/todo-list-claiming.md +0 -0
  491. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/tolerant-reader-read-path.md +0 -0
  492. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/upcaster-behaviour-test.md +0 -0
  493. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/adapter-error-translation.md +0 -0
  494. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/antipattern-business-logic-in-adapter.md +0 -0
  495. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/antipattern-bypass-adapter.md +0 -0
  496. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/antipattern-domain-depends-on-infrastructure.md +0 -0
  497. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/antipattern-pattern-shaped-names.md +0 -0
  498. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/antipattern-technology-shaped-port.md +0 -0
  499. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/composition-root-http-entrypoint.md +0 -0
  500. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/composition-root-queue-entrypoint.md +0 -0
  501. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/cqrs-lite-dashboard-query-function.md +0 -0
  502. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/cqrs-lite-domain-transform-read-data.md +0 -0
  503. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-auth-driving-adapter.md +0 -0
  504. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-domain-authorization.md +0 -0
  505. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-domain-probe-port.md +0 -0
  506. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-error-formatting-http.md +0 -0
  507. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-technical-telemetry-adapters.md +0 -0
  508. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-transactional-persistence-port.md +0 -0
  509. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-use-case-identity.md +0 -0
  510. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/dependency-injection-order-placement.md +0 -0
  511. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/driven-adapter-and-fake-implementation.md +0 -0
  512. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/greenfield-driven-port-fake.md +0 -0
  513. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/greenfield-driving-port-constant.md +0 -0
  514. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/incremental-after-thin-entrypoint.md +0 -0
  515. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/incremental-before-tangled-handler.md +0 -0
  516. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/incremental-create-adapter.md +0 -0
  517. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/incremental-create-use-case.md +0 -0
  518. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/incremental-extract-domain-function.md +0 -0
  519. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/incremental-extract-port-interface.md +0 -0
  520. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/port-interface-definitions.md +0 -0
  521. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/reads-vs-writes-query-function-example.md +0 -0
  522. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/testing-create-test-db-helper.md +0 -0
  523. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/testing-domain-unit-test-example.md +0 -0
  524. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/testing-fake-order-repo.md +0 -0
  525. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/testing-narrow-integration-tests.md +0 -0
  526. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/testing-recording-fake-instrumentation.md +0 -0
  527. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/testing-use-case-primary-boundary.md +0 -0
  528. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/worked-example-domain-function-record-pledge.md +0 -0
  529. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/worked-example-domain-types.md +0 -0
  530. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/worked-example-domain-unit-test.md +0 -0
  531. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/worked-example-driven-adapters.md +0 -0
  532. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/worked-example-driving-adapter-entrypoint.md +0 -0
  533. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/worked-example-fakes-for-testing.md +0 -0
  534. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/worked-example-port-interfaces.md +0 -0
  535. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/worked-example-use-case-orchestration.md +0 -0
  536. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/worked-example-use-case-test.md +0 -0
  537. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/correct-complete-factory-object.md +0 -0
  538. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/correct-fresh-state-per-test.md +0 -0
  539. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/correct-import-real-schema.md +0 -0
  540. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/correct-inline-tested-through-behavior.md +0 -0
  541. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/correct-testing-behavior-public-api.md +0 -0
  542. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/coverage-theater-assert-called-only-correct.md +0 -0
  543. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/coverage-theater-assert-called-only-wrong.md +0 -0
  544. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/coverage-theater-branch-coverage-correct.md +0 -0
  545. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/coverage-theater-happy-path-only-wrong.md +0 -0
  546. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/coverage-theater-mock-function-under-test-correct.md +0 -0
  547. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/coverage-theater-mock-function-under-test-wrong.md +0 -0
  548. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/coverage-theater-trivial-getter-setter-correct.md +0 -0
  549. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/coverage-theater-trivial-getter-setter-wrong.md +0 -0
  550. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/factory-basic-pattern.md +0 -0
  551. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/factory-complete-example.md +0 -0
  552. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/factory-composition.md +0 -0
  553. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/reach-validation-through-behavior.md +0 -0
  554. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/wrong-extracted-helper-with-own-test.md +0 -0
  555. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/wrong-incomplete-factory-object.md +0 -0
  556. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/wrong-redefine-schema-in-test.md +0 -0
  557. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/wrong-shared-mutable-fixture.md +0 -0
  558. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/wrong-testing-implementation-detail.md +0 -0
  559. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/flags/src/main/java/com/example/deliverystarter/flags/Flags.java +0 -0
  560. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/flags/src/test/java/com/example/deliverystarter/flags/FlagsTest.java +0 -0
  561. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java-quarkus/app/pom.xml +0 -0
  562. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java-quarkus/app/src/main/java/com/example/deliverystarter/application/README.md +0 -0
  563. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java-quarkus/app/src/main/java/com/example/deliverystarter/domain/README.md +0 -0
  564. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java-quarkus/app/src/main/java/com/example/deliverystarter/health/HealthStatus.java +0 -0
  565. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java-quarkus/app/src/main/resources/application.properties +0 -0
  566. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java-quarkus/app/src/test/java/com/example/deliverystarter/health/HealthStatusTest.java +0 -0
  567. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java-spring/app/pom.xml +0 -0
  568. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java-spring/app/src/main/java/com/example/deliverystarter/ServiceApplication.java +0 -0
  569. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java-spring/app/src/main/java/com/example/deliverystarter/application/README.md +0 -0
  570. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java-spring/app/src/main/java/com/example/deliverystarter/domain/README.md +0 -0
  571. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java-spring/app/src/main/java/com/example/deliverystarter/health/HealthStatus.java +0 -0
  572. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java-spring/app/src/main/resources/application.properties +0 -0
  573. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java-spring/app/src/test/java/com/example/deliverystarter/health/HealthStatusTest.java +0 -0
  574. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/app/pyproject.toml +0 -0
  575. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/app/src/delivery_starter/__init__.py +0 -0
  576. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/app/src/delivery_starter/application/README.md +0 -0
  577. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/app/src/delivery_starter/domain/README.md +0 -0
  578. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/app/tests/test_health.py +0 -0
  579. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/event-port/src/delivery_starter/application/ports/events.py +0 -0
  580. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/event-port/tests/test_events.py +0 -0
  581. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/accept-child-id-remove-exercise.md +0 -0
  582. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/acl-stripe-payment-translation.md +0 -0
  583. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/aggregate-sizing-occasion.md +0 -0
  584. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/aggregate-vs-read-model.md +0 -0
  585. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/always-valid-occasion-invariants.md +0 -0
  586. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/branded-id-types.md +0 -0
  587. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/create-child-through-root.md +0 -0
  588. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/decider-pattern-order.md +0 -0
  589. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/describe-order-exhaustive-switch.md +0 -0
  590. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/discriminated-union-pledge-result.md +0 -0
  591. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/domain-behavioral-tests.md +0 -0
  592. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/domain-service-pledge-contribution.md +0 -0
  593. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/domain-service-test-pledge-contribution.md +0 -0
  594. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/domain-service-vs-use-case.md +0 -0
  595. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/entity-rename-occasion.md +0 -0
  596. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/error-propagation-through-layers.md +0 -0
  597. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/exception-vs-result-type.md +0 -0
  598. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/explicit-return-pledge-no-events.md +0 -0
  599. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/fake-vs-mock-repository.md +0 -0
  600. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/in-process-event-dispatch.md +0 -0
  601. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/integration-test-order-repository.md +0 -0
  602. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/invariant-driven-vending-machine.md +0 -0
  603. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/money-value-object-factory.md +0 -0
  604. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/multiple-error-reasons-union.md +0 -0
  605. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/naming-signature-domain-vs-use-case.md +0 -0
  606. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/occasion-repository-interface.md +0 -0
  607. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/one-aggregate-per-transaction.md +0 -0
  608. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/optimistic-locking-repository-save.md +0 -0
  609. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/optimistic-locking-version-field.md +0 -0
  610. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/order-lifecycle-union.md +0 -0
  611. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/outbox-pattern-dispatch.md +0 -0
  612. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/pledge-result-types.md +0 -0
  613. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/process-manager-gift-purchase.md +0 -0
  614. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/property-based-test-pledge-budget.md +0 -0
  615. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/purity-test-domain-vs-presentation.md +0 -0
  616. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/readonly-array-child-collection.md +0 -0
  617. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/shared-kernel-package-layout.md +0 -0
  618. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/specification-can-pledge.md +0 -0
  619. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/test-decide-order-events.md +0 -0
  620. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/test-error-funding-closed.md +0 -0
  621. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/test-factory-get-occasion.md +0 -0
  622. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/ubiquitous-language-glossary-types.md +0 -0
  623. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/use-case-test-pledge-contribution.md +0 -0
  624. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/wrong-catch-rethrow-context.md +0 -0
  625. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/wrong-exception-for-business-rule.md +0 -0
  626. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/wrong-generic-error-type.md +0 -0
  627. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/zod-branded-type-bridging.md +0 -0
  628. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/account-decider-and-evolve.md +0 -0
  629. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/balance-view-apply-fold.md +0 -0
  630. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/balance-view-projection.md +0 -0
  631. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/catch-up-checkpoint-transaction.md +0 -0
  632. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/command-handler-loop.md +0 -0
  633. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/command-handler-retry-loop.md +0 -0
  634. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/decide-withdraw-example.md +0 -0
  635. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/decider-behaviour-tests.md +0 -0
  636. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/decider-insufficient-funds-test.md +0 -0
  637. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/decider-type.md +0 -0
  638. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/decision-result-type.md +0 -0
  639. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/deposit-money-command-with-timestamp.md +0 -0
  640. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/event-envelope-type.md +0 -0
  641. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/event-store-port-interface.md +0 -0
  642. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/event-store-port.md +0 -0
  643. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/evolve-behaviour-via-withdraw-limit.md +0 -0
  644. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/generic-rehydrate-fold.md +0 -0
  645. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/idempotent-projection-dedupe.md +0 -0
  646. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/in-memory-event-store-fake.md +0 -0
  647. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/inline-view-in-append-transaction.md +0 -0
  648. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/live-view-bounded-fold.md +0 -0
  649. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/order-placed-upcaster.md +0 -0
  650. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/projection-behaviour-tests.md +0 -0
  651. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/rehydrate-left-fold.md +0 -0
  652. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/tags-of-from-identifying-attributes.md +0 -0
  653. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/todo-list-claiming.md +0 -0
  654. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/tolerant-reader-read-path.md +0 -0
  655. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/upcaster-behaviour-test.md +0 -0
  656. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/adapter-error-translation.md +0 -0
  657. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/antipattern-business-logic-in-adapter.md +0 -0
  658. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/antipattern-bypass-adapter.md +0 -0
  659. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/antipattern-domain-depends-on-infrastructure.md +0 -0
  660. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/antipattern-pattern-shaped-names.md +0 -0
  661. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/antipattern-technology-shaped-port.md +0 -0
  662. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/composition-root-http-entrypoint.md +0 -0
  663. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/composition-root-queue-entrypoint.md +0 -0
  664. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/cqrs-lite-dashboard-query-function.md +0 -0
  665. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/cqrs-lite-domain-transform-read-data.md +0 -0
  666. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-auth-driving-adapter.md +0 -0
  667. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-domain-authorization.md +0 -0
  668. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-domain-probe-port.md +0 -0
  669. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-error-formatting-http.md +0 -0
  670. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-technical-telemetry-adapters.md +0 -0
  671. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-transactional-persistence-port.md +0 -0
  672. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-use-case-identity.md +0 -0
  673. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/dependency-injection-order-placement.md +0 -0
  674. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/driven-adapter-and-fake-implementation.md +0 -0
  675. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/greenfield-driven-port-fake.md +0 -0
  676. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/greenfield-driving-port-constant.md +0 -0
  677. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/incremental-after-thin-entrypoint.md +0 -0
  678. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/incremental-before-tangled-handler.md +0 -0
  679. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/incremental-create-adapter.md +0 -0
  680. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/incremental-create-use-case.md +0 -0
  681. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/incremental-extract-domain-function.md +0 -0
  682. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/incremental-extract-port-interface.md +0 -0
  683. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/port-interface-definitions.md +0 -0
  684. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/reads-vs-writes-query-function-example.md +0 -0
  685. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/testing-create-test-db-helper.md +0 -0
  686. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/testing-domain-unit-test-example.md +0 -0
  687. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/testing-fake-order-repo.md +0 -0
  688. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/testing-narrow-integration-tests.md +0 -0
  689. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/testing-recording-fake-instrumentation.md +0 -0
  690. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/testing-use-case-primary-boundary.md +0 -0
  691. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/worked-example-domain-function-record-pledge.md +0 -0
  692. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/worked-example-domain-types.md +0 -0
  693. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/worked-example-domain-unit-test.md +0 -0
  694. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/worked-example-driven-adapters.md +0 -0
  695. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/worked-example-driving-adapter-entrypoint.md +0 -0
  696. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/worked-example-fakes-for-testing.md +0 -0
  697. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/worked-example-port-interfaces.md +0 -0
  698. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/worked-example-use-case-orchestration.md +0 -0
  699. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/worked-example-use-case-test.md +0 -0
  700. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/correct-complete-factory-object.md +0 -0
  701. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/correct-fresh-state-per-test.md +0 -0
  702. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/correct-import-real-schema.md +0 -0
  703. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/correct-inline-tested-through-behavior.md +0 -0
  704. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/correct-testing-behavior-public-api.md +0 -0
  705. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/coverage-theater-assert-called-only-correct.md +0 -0
  706. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/coverage-theater-assert-called-only-wrong.md +0 -0
  707. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/coverage-theater-branch-coverage-correct.md +0 -0
  708. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/coverage-theater-happy-path-only-wrong.md +0 -0
  709. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/coverage-theater-mock-function-under-test-correct.md +0 -0
  710. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/coverage-theater-mock-function-under-test-wrong.md +0 -0
  711. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/coverage-theater-trivial-getter-setter-correct.md +0 -0
  712. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/coverage-theater-trivial-getter-setter-wrong.md +0 -0
  713. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/factory-basic-pattern.md +0 -0
  714. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/factory-complete-example.md +0 -0
  715. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/factory-composition.md +0 -0
  716. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/reach-validation-through-behavior.md +0 -0
  717. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/wrong-extracted-helper-with-own-test.md +0 -0
  718. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/wrong-incomplete-factory-object.md +0 -0
  719. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/wrong-redefine-schema-in-test.md +0 -0
  720. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/wrong-shared-mutable-fixture.md +0 -0
  721. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/wrong-testing-implementation-detail.md +0 -0
  722. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/flags/src/delivery_starter/flags.py +0 -0
  723. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/flags/tests/test_flags.py +0 -0
  724. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/locks/uv-fastapi-postgres.lock +0 -0
  725. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/locks/uv-fastapi.lock +0 -0
  726. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/locks/uv-postgres.lock +0 -0
  727. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/locks/uv.lock +0 -0
  728. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/app/package.json +0 -0
  729. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/app/src/application/README.md +0 -0
  730. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/app/src/domain/README.md +0 -0
  731. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/app/src/health.ts +0 -0
  732. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/app/tests/health.test.ts +0 -0
  733. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/biome/biome.jsonc +0 -0
  734. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/biome/domain-purity.grit +0 -0
  735. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/accept-child-id-remove-exercise.md +0 -0
  736. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/acl-stripe-payment-translation.md +0 -0
  737. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/aggregate-sizing-occasion.md +0 -0
  738. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/aggregate-vs-read-model.md +0 -0
  739. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/always-valid-occasion-invariants.md +0 -0
  740. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/branded-id-types.md +0 -0
  741. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/create-child-through-root.md +0 -0
  742. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/decider-pattern-order.md +0 -0
  743. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/describe-order-exhaustive-switch.md +0 -0
  744. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/discriminated-union-pledge-result.md +0 -0
  745. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/domain-behavioral-tests.md +0 -0
  746. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/domain-service-pledge-contribution.md +0 -0
  747. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/domain-service-test-pledge-contribution.md +0 -0
  748. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/domain-service-vs-use-case.md +0 -0
  749. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/entity-rename-occasion.md +0 -0
  750. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/error-propagation-through-layers.md +0 -0
  751. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/exception-vs-result-type.md +0 -0
  752. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/explicit-return-pledge-no-events.md +0 -0
  753. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/fake-vs-mock-repository.md +0 -0
  754. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/in-process-event-dispatch.md +0 -0
  755. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/integration-test-order-repository.md +0 -0
  756. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/invariant-driven-vending-machine.md +0 -0
  757. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/money-value-object-factory.md +0 -0
  758. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/multiple-error-reasons-union.md +0 -0
  759. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/naming-signature-domain-vs-use-case.md +0 -0
  760. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/occasion-repository-interface.md +0 -0
  761. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/one-aggregate-per-transaction.md +0 -0
  762. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/optimistic-locking-repository-save.md +0 -0
  763. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/optimistic-locking-version-field.md +0 -0
  764. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/order-lifecycle-union.md +0 -0
  765. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/outbox-pattern-dispatch.md +0 -0
  766. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/pledge-result-types.md +0 -0
  767. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/process-manager-gift-purchase.md +0 -0
  768. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/property-based-test-pledge-budget.md +0 -0
  769. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/purity-test-domain-vs-presentation.md +0 -0
  770. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/readonly-array-child-collection.md +0 -0
  771. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/shared-kernel-package-layout.md +0 -0
  772. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/specification-can-pledge.md +0 -0
  773. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/test-decide-order-events.md +0 -0
  774. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/test-error-funding-closed.md +0 -0
  775. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/test-factory-get-occasion.md +0 -0
  776. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/ubiquitous-language-glossary-types.md +0 -0
  777. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/use-case-test-pledge-contribution.md +0 -0
  778. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/wrong-catch-rethrow-context.md +0 -0
  779. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/wrong-exception-for-business-rule.md +0 -0
  780. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/wrong-generic-error-type.md +0 -0
  781. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/zod-branded-type-bridging.md +0 -0
  782. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/account-decider-and-evolve.md +0 -0
  783. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/balance-view-apply-fold.md +0 -0
  784. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/balance-view-projection.md +0 -0
  785. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/catch-up-checkpoint-transaction.md +0 -0
  786. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/command-handler-loop.md +0 -0
  787. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/command-handler-retry-loop.md +0 -0
  788. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/decide-withdraw-example.md +0 -0
  789. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/decider-behaviour-tests.md +0 -0
  790. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/decider-insufficient-funds-test.md +0 -0
  791. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/decider-type.md +0 -0
  792. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/decision-result-type.md +0 -0
  793. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/deposit-money-command-with-timestamp.md +0 -0
  794. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/event-envelope-type.md +0 -0
  795. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/event-store-port-interface.md +0 -0
  796. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/event-store-port.md +0 -0
  797. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/evolve-behaviour-via-withdraw-limit.md +0 -0
  798. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/generic-rehydrate-fold.md +0 -0
  799. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/idempotent-projection-dedupe.md +0 -0
  800. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/in-memory-event-store-fake.md +0 -0
  801. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/inline-view-in-append-transaction.md +0 -0
  802. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/live-view-bounded-fold.md +0 -0
  803. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/order-placed-upcaster.md +0 -0
  804. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/projection-behaviour-tests.md +0 -0
  805. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/rehydrate-left-fold.md +0 -0
  806. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/tags-of-from-identifying-attributes.md +0 -0
  807. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/todo-list-claiming.md +0 -0
  808. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/tolerant-reader-read-path.md +0 -0
  809. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/upcaster-behaviour-test.md +0 -0
  810. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/adapter-error-translation.md +0 -0
  811. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/antipattern-business-logic-in-adapter.md +0 -0
  812. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/antipattern-bypass-adapter.md +0 -0
  813. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/antipattern-domain-depends-on-infrastructure.md +0 -0
  814. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/antipattern-pattern-shaped-names.md +0 -0
  815. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/antipattern-technology-shaped-port.md +0 -0
  816. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/composition-root-http-entrypoint.md +0 -0
  817. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/composition-root-queue-entrypoint.md +0 -0
  818. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/cqrs-lite-dashboard-query-function.md +0 -0
  819. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/cqrs-lite-domain-transform-read-data.md +0 -0
  820. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-auth-driving-adapter.md +0 -0
  821. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-domain-authorization.md +0 -0
  822. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-domain-probe-port.md +0 -0
  823. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-error-formatting-http.md +0 -0
  824. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-technical-telemetry-adapters.md +0 -0
  825. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-transactional-persistence-port.md +0 -0
  826. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-use-case-identity.md +0 -0
  827. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/dependency-injection-order-placement.md +0 -0
  828. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/driven-adapter-and-fake-implementation.md +0 -0
  829. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/greenfield-driven-port-fake.md +0 -0
  830. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/greenfield-driving-port-constant.md +0 -0
  831. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/incremental-after-thin-entrypoint.md +0 -0
  832. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/incremental-before-tangled-handler.md +0 -0
  833. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/incremental-create-adapter.md +0 -0
  834. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/incremental-create-use-case.md +0 -0
  835. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/incremental-extract-domain-function.md +0 -0
  836. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/incremental-extract-port-interface.md +0 -0
  837. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/port-interface-definitions.md +0 -0
  838. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/reads-vs-writes-query-function-example.md +0 -0
  839. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/testing-create-test-db-helper.md +0 -0
  840. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/testing-domain-unit-test-example.md +0 -0
  841. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/testing-fake-order-repo.md +0 -0
  842. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/testing-narrow-integration-tests.md +0 -0
  843. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/testing-recording-fake-instrumentation.md +0 -0
  844. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/testing-use-case-primary-boundary.md +0 -0
  845. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-domain-function-record-pledge.md +0 -0
  846. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-domain-types.md +0 -0
  847. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-domain-unit-test.md +0 -0
  848. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-driven-adapters.md +0 -0
  849. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-driving-adapter-entrypoint.md +0 -0
  850. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-fakes-for-testing.md +0 -0
  851. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-port-interfaces.md +0 -0
  852. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-use-case-orchestration.md +0 -0
  853. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-use-case-test.md +0 -0
  854. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/correct-complete-factory-object.md +0 -0
  855. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/correct-fresh-state-per-test.md +0 -0
  856. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/correct-import-real-schema.md +0 -0
  857. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/correct-inline-tested-through-behavior.md +0 -0
  858. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/correct-testing-behavior-public-api.md +0 -0
  859. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/coverage-theater-assert-called-only-correct.md +0 -0
  860. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/coverage-theater-assert-called-only-wrong.md +0 -0
  861. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/coverage-theater-branch-coverage-correct.md +0 -0
  862. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/coverage-theater-happy-path-only-wrong.md +0 -0
  863. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/coverage-theater-mock-function-under-test-correct.md +0 -0
  864. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/coverage-theater-mock-function-under-test-wrong.md +0 -0
  865. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/coverage-theater-trivial-getter-setter-correct.md +0 -0
  866. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/coverage-theater-trivial-getter-setter-wrong.md +0 -0
  867. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/factory-basic-pattern.md +0 -0
  868. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/factory-complete-example.md +0 -0
  869. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/factory-composition.md +0 -0
  870. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/reach-validation-through-behavior.md +0 -0
  871. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/wrong-extracted-helper-with-own-test.md +0 -0
  872. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/wrong-incomplete-factory-object.md +0 -0
  873. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/wrong-redefine-schema-in-test.md +0 -0
  874. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/wrong-shared-mutable-fixture.md +0 -0
  875. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/wrong-testing-implementation-detail.md +0 -0
  876. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/flags/src/flags.ts +0 -0
  877. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/flags/tests/flags.test.ts +0 -0
  878. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/locks/package-lock-fastify-postgres.json +0 -0
  879. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/locks/package-lock-fastify.json +0 -0
  880. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/locks/package-lock-postgres.json +0 -0
  881. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/locks/package-lock.json +0 -0
  882. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/event-modelling/.specify/presets/.registry +0 -0
  883. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/event-modelling/.specify/presets/event-modelling/preset.yml +0 -0
  884. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/event-modelling/.specify/presets/event-modelling/templates/constitution-template.md +0 -0
  885. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/event-modelling/.specify/presets/event-modelling/templates/plan-template.md +0 -0
  886. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/event-modelling/.specify/presets/event-modelling/templates/tasks-template.md +0 -0
  887. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/event-modelling/commands/example-map.md +0 -0
  888. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/event-modelling/commands/validate-code-against-model.md +0 -0
  889. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/event-modelling/docs/speckit-preset.md +0 -0
  890. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/standard/.specify/presets/.registry +0 -0
  891. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/standard/.specify/presets/standard/preset.yml +0 -0
  892. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/standard/.specify/presets/standard/templates/constitution-template.md +0 -0
  893. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/standard/docs/adr/0001-record-architecture-decisions.md +0 -0
  894. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/standard/docs/speckit-preset.md +0 -0
  895. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/standard/skills/adversarial-testing/SKILL.md +0 -0
  896. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/standard/skills/adversarial-testing/resources/attack-catalogue.md +0 -0
  897. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/standard/skills/architecture-decisions/SKILL.md +0 -0
  898. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/README.md +0 -0
  899. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/bootstrap/main.tf +0 -0
  900. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/bootstrap/outputs.tf +0 -0
  901. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/bootstrap/variables.tf +0 -0
  902. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/scripts/bootstrap.py +0 -0
  903. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/scripts/check-flags.py +0 -0
  904. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/scripts/deploy.py +0 -0
  905. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/auth0.tf +0 -0
  906. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/cognito_customers.tf +0 -0
  907. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/cognito_staff.tf +0 -0
  908. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/flags.auto.tfvars +0 -0
  909. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/flags.tf +0 -0
  910. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/frontend.tf +0 -0
  911. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/ingress.tf +0 -0
  912. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/main.tf +0 -0
  913. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/network.tf +0 -0
  914. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/no-auth0.tf +0 -0
  915. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/no-frontend.tf +0 -0
  916. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/outputs.tf +0 -0
  917. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/production.tfvars +0 -0
  918. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/rds.tf +0 -0
  919. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/staging.tfvars +0 -0
  920. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/variables.tf +0 -0
  921. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/versions.tf +0 -0
  922. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/README.md +0 -0
  923. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/bootstrap/main.tf +0 -0
  924. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/bootstrap/outputs.tf +0 -0
  925. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/bootstrap/variables.tf +0 -0
  926. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/scripts/bootstrap.py +0 -0
  927. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/scripts/check-flags.py +0 -0
  928. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/scripts/deploy.py +0 -0
  929. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/auth0.tf +0 -0
  930. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/entra_staff.tf +0 -0
  931. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/flags.auto.tfvars +0 -0
  932. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/flags.tf +0 -0
  933. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/frontend.tf +0 -0
  934. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/ingress.tf +0 -0
  935. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/main.tf +0 -0
  936. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/no-auth0.tf +0 -0
  937. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/no-frontend.tf +0 -0
  938. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/outputs.tf +0 -0
  939. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/postgres.tf +0 -0
  940. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/production.tfvars +0 -0
  941. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/staging.tfvars +0 -0
  942. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/variables.tf +0 -0
  943. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/versions.tf +0 -0
  944. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/.specify/extensions.yml +0 -0
  945. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/docs/adr/0001-record-architecture-decisions.md +0 -0
  946. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/docs/agent-harnesses.md +0 -0
  947. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/docs/delegated-agent-safety.md +0 -0
  948. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/docs/event-model/README.md +0 -0
  949. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/docs/event-model/model.yaml +0 -0
  950. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/docs/event-modeling-to-code.md +0 -0
  951. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/docs/first-slice.md +0 -0
  952. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/agents/benchmark.py +0 -0
  953. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/agents/drive.py +0 -0
  954. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/agents/models.py +0 -0
  955. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-codegraph.py +0 -0
  956. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-constitution.py +0 -0
  957. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-decisions.py +0 -0
  958. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-imports.py +0 -0
  959. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-migrations.py +0 -0
  960. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-slice-scope.py +0 -0
  961. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-speckit.py +0 -0
  962. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-styles.py +0 -0
  963. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-ux-gates.py +0 -0
  964. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/board-plan.test.ts +0 -0
  965. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/board-plan.ts +0 -0
  966. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/check.py +0 -0
  967. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/check.ts +0 -0
  968. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/drawio.test.ts +0 -0
  969. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/drawio.ts +0 -0
  970. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/example-model.ts +0 -0
  971. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/mermaid.ts +0 -0
  972. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/model.ts +0 -0
  973. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/package.json +0 -0
  974. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/page.ts +0 -0
  975. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/palette.ts +0 -0
  976. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/patch-mermaid-swimlanes.ts +0 -0
  977. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/readme.ts +0 -0
  978. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/render-drawio.ts +0 -0
  979. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/render.ts +0 -0
  980. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/requirements.txt +0 -0
  981. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/validate.ts +0 -0
  982. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/workspace.ts +0 -0
  983. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/extensions/codegraph/init.py +0 -0
  984. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/extensions/guidance.py +0 -0
  985. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/extensions/menu.py +0 -0
  986. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/extensions/project.py +0 -0
  987. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/extensions/uipro/init.py +0 -0
  988. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/extensions/ux-gates/init.py +0 -0
  989. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/test_benchmark.py +0 -0
  990. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/LICENSE +0 -0
  991. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/REFERENCES.md +0 -0
  992. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/acceptance-review/LICENSE +0 -0
  993. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/acceptance-review/SKILL.md +0 -0
  994. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/acceptance-review/agents/openai.yaml +0 -0
  995. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/acceptance-review/references/source-notes.md +0 -0
  996. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/adversarial-testing/SKILL.md +0 -0
  997. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/adversarial-testing/resources/attack-catalogue.md +0 -0
  998. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/api-design/LICENSE +0 -0
  999. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/api-design/SKILL.md +0 -0
  1000. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/api-design/resources/api-evolution.md +0 -0
  1001. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/api-design/resources/api-security.md +0 -0
  1002. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/api-design/resources/auth-security.md +0 -0
  1003. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/api-design/resources/http-fundamentals.md +0 -0
  1004. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/api-design/resources/problem-details.md +0 -0
  1005. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/api-design/resources/source-notes.md +0 -0
  1006. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/architecture-decisions/SKILL.md +0 -0
  1007. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-design/SKILL.md +0 -0
  1008. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-design/agents/openai.yaml +0 -0
  1009. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-design/references/adoption-and-granularity.md +0 -0
  1010. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-design/references/aggregation-and-resilience.md +0 -0
  1011. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-design/references/alternatives.md +0 -0
  1012. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-design/references/upstream-identity.md +0 -0
  1013. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-entry-points/SKILL.md +0 -0
  1014. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-entry-points/agents/openai.yaml +0 -0
  1015. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-entry-points/references/browser-session-coordination.md +0 -0
  1016. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-entry-points/references/endpoint-protection.md +0 -0
  1017. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-entry-points/references/enforcement-and-testing.md +0 -0
  1018. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-entry-points/references/hexagonal-auth-boundaries.md +0 -0
  1019. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-entry-points/references/hono-example.md +0 -0
  1020. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-entry-points/references/realtime-entry-points.md +0 -0
  1021. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/characterisation-tests/SKILL.md +0 -0
  1022. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/characterisation-tests/resources/modern-tooling.md +0 -0
  1023. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/characterisation-tests/resources/writing-process.md +0 -0
  1024. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/ci-debugging/SKILL.md +0 -0
  1025. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/cli-design/LICENSE +0 -0
  1026. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/cli-design/SKILL.md +0 -0
  1027. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/cli-design/resources/composability.md +0 -0
  1028. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/cli-design/resources/output-architecture.md +0 -0
  1029. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/cli-design/resources/source-notes.md +0 -0
  1030. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/cli-design/resources/stream-contracts.md +0 -0
  1031. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/cli-design/resources/testing-cli.md +0 -0
  1032. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/codebase-design/LICENSE +0 -0
  1033. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/codebase-design/SKILL.md +0 -0
  1034. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/codebase-design/agents/openai.yaml +0 -0
  1035. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/codebase-design/references/deepening.md +0 -0
  1036. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/codebase-design/references/design-it-twice.md +0 -0
  1037. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/codebase-design/references/source-notes.md +0 -0
  1038. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/debugging/SKILL.md +0 -0
  1039. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/debugging/agents/openai.yaml +0 -0
  1040. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/debugging/references/source-notes.md +0 -0
  1041. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/diagrams/NOTICE +0 -0
  1042. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/diagrams/SKILL.md +0 -0
  1043. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/diagrams/references/source-notes.md +0 -0
  1044. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/SKILL.md +0 -0
  1045. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/resources/aggregate-design.md +0 -0
  1046. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/resources/bounded-contexts.md +0 -0
  1047. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/resources/domain-events.md +0 -0
  1048. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/resources/domain-services.md +0 -0
  1049. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/resources/error-modeling.md +0 -0
  1050. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/resources/modelling-process.md +0 -0
  1051. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/resources/references.md +0 -0
  1052. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/resources/testing-by-layer.md +0 -0
  1053. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/double-check/SKILL.md +0 -0
  1054. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/double-check/resources/brief-template.md +0 -0
  1055. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/double-check/resources/providers.md +0 -0
  1056. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/evaluate-existing-solutions/SKILL.md +0 -0
  1057. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/evaluate-existing-solutions/agents/openai.yaml +0 -0
  1058. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/evaluate-existing-solutions/assets/solution-decision-template.md +0 -0
  1059. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/evaluate-existing-solutions/references/evaluation-dimensions.md +0 -0
  1060. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/evaluate-existing-solutions/references/evidence-and-currentness.md +0 -0
  1061. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-modeling/NOTICE +0 -0
  1062. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-modeling/SKILL.md +0 -0
  1063. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-modeling/references/gwt-template.md +0 -0
  1064. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-modeling/references/nine-steps.md +0 -0
  1065. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/SKILL.md +0 -0
  1066. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/decider-and-rehydration.md +0 -0
  1067. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/event-store.md +0 -0
  1068. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/event-versioning.md +0 -0
  1069. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/modelling-events.md +0 -0
  1070. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/production-concerns.md +0 -0
  1071. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/projections-and-read-models.md +0 -0
  1072. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/references.md +0 -0
  1073. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/testing-event-sourced-systems.md +0 -0
  1074. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/when-to-use-event-sourcing.md +0 -0
  1075. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/expectations/SKILL.md +0 -0
  1076. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/find-gaps/SKILL.md +0 -0
  1077. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/find-skills/LICENSE +0 -0
  1078. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/find-skills/SKILL.md +0 -0
  1079. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/find-skills/references/source-notes.md +0 -0
  1080. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/finding-seams/SKILL.md +0 -0
  1081. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/finding-seams/resources/creating-seams.md +0 -0
  1082. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/finding-seams/resources/oop-patterns.md +0 -0
  1083. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/finding-seams/resources/seam-types.md +0 -0
  1084. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/folder-structure/SKILL.md +0 -0
  1085. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/folder-structure/agents/openai.yaml +0 -0
  1086. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/front-end-testing/SKILL.md +0 -0
  1087. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/front-end-testing/resources/async-patterns.md +0 -0
  1088. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/front-end-testing/resources/dom-testing-library-legacy.md +0 -0
  1089. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/front-end-testing/resources/msw.md +0 -0
  1090. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/front-end-testing/resources/playwright-e2e.md +0 -0
  1091. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/frontend-design/LICENSE +0 -0
  1092. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/frontend-design/SKILL.md +0 -0
  1093. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/frontend-design/references/source-notes.md +0 -0
  1094. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/functional/SKILL.md +0 -0
  1095. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/functional/resources/composition-patterns.md +0 -0
  1096. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/functional/resources/immutability-catalog.md +0 -0
  1097. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/global-event-model/SKILL.md +0 -0
  1098. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/hexagonal-architecture/SKILL.md +0 -0
  1099. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/hexagonal-architecture/resources/cqrs-lite.md +0 -0
  1100. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/hexagonal-architecture/resources/cross-cutting-concerns.md +0 -0
  1101. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/hexagonal-architecture/resources/greenfield-sequence.md +0 -0
  1102. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/hexagonal-architecture/resources/incremental-adoption.md +0 -0
  1103. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/hexagonal-architecture/resources/references.md +0 -0
  1104. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/hexagonal-architecture/resources/testing-hex-arch.md +0 -0
  1105. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/hexagonal-architecture/resources/worked-example.md +0 -0
  1106. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/improve-codebase-architecture/LICENSE +0 -0
  1107. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/improve-codebase-architecture/SKILL.md +0 -0
  1108. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/improve-codebase-architecture/agents/openai.yaml +0 -0
  1109. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/improve-codebase-architecture/references/html-report.md +0 -0
  1110. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/improve-codebase-architecture/references/source-notes.md +0 -0
  1111. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/mutation-testing/SKILL.md +0 -0
  1112. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/mutation-testing/resources/mutator-rules.md +0 -0
  1113. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/observability/SKILL.md +0 -0
  1114. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/observability/resources/node-patterns.md +0 -0
  1115. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/observability/resources/references.md +0 -0
  1116. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/observability/resources/slo-alerting.md +0 -0
  1117. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/observability/resources/testing-telemetry.md +0 -0
  1118. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/planning/SKILL.md +0 -0
  1119. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/production-parity-skill-builder/SKILL.md +0 -0
  1120. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/production-parity-skill-builder/resources/generated-skill-template.md +0 -0
  1121. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/production-parity-skill-builder/resources/parity-surface-catalog.md +0 -0
  1122. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/production-parity-skill-builder/resources/question-patterns.md +0 -0
  1123. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/react-testing/SKILL.md +0 -0
  1124. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/react-testing/resources/testing-library-react-legacy.md +0 -0
  1125. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/reduce-system-complexity/LICENSE +0 -0
  1126. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/reduce-system-complexity/SKILL.md +0 -0
  1127. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/reduce-system-complexity/agents/openai.yaml +0 -0
  1128. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/reduce-system-complexity/references/ledger-template.md +0 -0
  1129. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/reduce-system-complexity/references/source-notes.md +0 -0
  1130. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/refactoring/SKILL.md +0 -0
  1131. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/secure-oauth-oidc/SKILL.md +0 -0
  1132. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/secure-oauth-oidc/agents/openai.yaml +0 -0
  1133. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/secure-oauth-oidc/references/attack-and-test-catalog.md +0 -0
  1134. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/secure-oauth-oidc/references/oidc-validation.md +0 -0
  1135. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/secure-oauth-oidc/references/review-and-delivery.md +0 -0
  1136. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/secure-oauth-oidc/references/rfc9700-control-catalog.md +0 -0
  1137. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/secure-oauth-oidc/references/standards-map.md +0 -0
  1138. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/specification/SKILL.md +0 -0
  1139. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/specification/resources/references.md +0 -0
  1140. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/specification/resources/spec-review-template.html +0 -0
  1141. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/stack-pull-requests/SKILL.md +0 -0
  1142. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/stack-pull-requests/agents/openai.yaml +0 -0
  1143. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/stack-pull-requests/references/source-notes.md +0 -0
  1144. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/story-splitting/SKILL.md +0 -0
  1145. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/story-splitting/resources/pattern-catalog.md +0 -0
  1146. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/story-splitting/resources/source-notes.md +0 -0
  1147. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/storyboard/SKILL.md +0 -0
  1148. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/structure-codebase/SKILL.md +0 -0
  1149. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/structure-codebase/agents/openai.yaml +0 -0
  1150. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/structure-codebase/references/backend-patterns.md +0 -0
  1151. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/structure-codebase/references/enforcement-and-migration.md +0 -0
  1152. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/structure-codebase/references/frontend-patterns.md +0 -0
  1153. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/structure-codebase/references/research-notes.md +0 -0
  1154. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/structure-codebase/references/visible-hexagon.md +0 -0
  1155. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/tdd/SKILL.md +0 -0
  1156. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/tdd/resources/vitest-watch-feedback.md +0 -0
  1157. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/teach-me/SKILL.md +0 -0
  1158. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/teach-me/resources/assessment-patterns.md +0 -0
  1159. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/teach-me/resources/course-generation.md +0 -0
  1160. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/teach-me/resources/html-lessons.md +0 -0
  1161. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/teach-me/resources/learning-science.md +0 -0
  1162. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/teach-me/resources/session-management.md +0 -0
  1163. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/LICENSE +0 -0
  1164. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/SKILL.md +0 -0
  1165. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/resources/agent-docs.md +0 -0
  1166. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/resources/doc-types.md +0 -0
  1167. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/resources/docs-quality.md +0 -0
  1168. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/resources/formatting.md +0 -0
  1169. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/resources/readme.md +0 -0
  1170. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/resources/references.md +0 -0
  1171. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/resources/source-notes.md +0 -0
  1172. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/test-design-reviewer/SKILL.md +0 -0
  1173. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/test-design-reviewer/references/source-notes.md +0 -0
  1174. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/testing/SKILL.md +0 -0
  1175. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/twelve-factor/SKILL.md +0 -0
  1176. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/twelve-factor/resources/node-patterns.md +0 -0
  1177. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/typescript-strict/SKILL.md +0 -0
  1178. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/ubiquitous-language/SKILL.md +0 -0
  1179. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/ubiquitous-language/resources/glossary-format.md +0 -0
  1180. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/ubiquitous-language/resources/language-protocol.md +0 -0
  1181. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/web-interface-guidelines/LICENSE +0 -0
  1182. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/web-interface-guidelines/SKILL.md +0 -0
  1183. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/web-interface-guidelines/references/guidelines.md +0 -0
  1184. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/web-interface-guidelines/references/source-notes.md +0 -0
  1185. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/wtf/LICENSE +0 -0
  1186. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/wtf/SKILL.md +0 -0
  1187. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/wtf/agents/openai.yaml +0 -0
  1188. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/wtf/references/source-notes.md +0 -0
  1189. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/catalog.json +0 -0
  1190. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/changelog.d/README.md +0 -0
  1191. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/changelog.d/cruise.md +0 -0
  1192. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/changelog.d/describe-service.md +0 -0
  1193. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/changelog.d/drawio-canvas.md +0 -0
  1194. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/changelog.d/init-pyyaml.md +0 -0
  1195. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/changelog.d/uipro-extension.md +0 -0
  1196. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/changelog.d/ux-design-skills.md +0 -0
  1197. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/changelog.d/ux-gates-extension.md +0 -0
  1198. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/pyproject.toml +0 -0
  1199. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/__init__.py +0 -0
  1200. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/__main__.py +0 -0
  1201. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/add_service.py +0 -0
  1202. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/adopt.py +0 -0
  1203. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/adopt_report.py +0 -0
  1204. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/assets.py +0 -0
  1205. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/axes.py +0 -0
  1206. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/backends.py +0 -0
  1207. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/capabilities.py +0 -0
  1208. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/catalog.py +0 -0
  1209. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/catch_up.py +0 -0
  1210. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/changelog.py +0 -0
  1211. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/cli.py +0 -0
  1212. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/cli_add.py +0 -0
  1213. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/cli_adopt.py +0 -0
  1214. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/cli_prompts.py +0 -0
  1215. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/converge.py +0 -0
  1216. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/convergence.py +0 -0
  1217. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/delivery_facts.py +0 -0
  1218. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/ecosystems.py +0 -0
  1219. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/errors.py +0 -0
  1220. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/examples.py +0 -0
  1221. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/extensions.py +0 -0
  1222. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/features.py +0 -0
  1223. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/images.py +0 -0
  1224. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/layout.py +0 -0
  1225. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/manifest.py +0 -0
  1226. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/migrate.py +0 -0
  1227. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/naming.py +0 -0
  1228. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/origin.py +0 -0
  1229. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/platform.py +0 -0
  1230. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/preflight.py +0 -0
  1231. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/probes.py +0 -0
  1232. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/programme.py +0 -0
  1233. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/__init__.py +0 -0
  1234. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/add_commands.py +0 -0
  1235. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/adopted.py +0 -0
  1236. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/adopted_ci.py +0 -0
  1237. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/adopted_targets.py +0 -0
  1238. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/adversary.py +0 -0
  1239. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/agents.py +0 -0
  1240. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/aws_docs.py +0 -0
  1241. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/azure_docs.py +0 -0
  1242. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/backing_service_prose.py +0 -0
  1243. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/backing_services.py +0 -0
  1244. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/benchmark.py +0 -0
  1245. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/biome.py +0 -0
  1246. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/ci_services.py +0 -0
  1247. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/ci_workflows.py +0 -0
  1248. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/commands.py +0 -0
  1249. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/compose.py +0 -0
  1250. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/composition.py +0 -0
  1251. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/constitution_journey.py +0 -0
  1252. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/converge_stage.py +0 -0
  1253. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/convergence_page.py +0 -0
  1254. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/cruise_agents.py +0 -0
  1255. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/cruise_stops.py +0 -0
  1256. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/cruise_unblock.py +0 -0
  1257. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/decisions.py +0 -0
  1258. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/demo_stop.py +0 -0
  1259. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/deploy_workflow.py +0 -0
  1260. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/design_page.py +0 -0
  1261. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/docs.py +0 -0
  1262. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/docs_index.py +0 -0
  1263. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/drive_adoption.py +0 -0
  1264. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/drive_settings.py +0 -0
  1265. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/entry_stores.py +0 -0
  1266. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/event_model.py +0 -0
  1267. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/evolving.py +0 -0
  1268. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/existing.py +0 -0
  1269. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/flag_route.py +0 -0
  1270. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/flags.py +0 -0
  1271. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/frontend.py +0 -0
  1272. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/ground_command.py +0 -0
  1273. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/guidance.py +0 -0
  1274. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/infra.py +0 -0
  1275. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/init_production.py +0 -0
  1276. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/init_script.py +0 -0
  1277. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/integration.py +0 -0
  1278. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/languages/__init__.py +0 -0
  1279. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/languages/go.py +0 -0
  1280. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/languages/java.py +0 -0
  1281. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/languages/java_quarkus.py +0 -0
  1282. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/languages/java_spring.py +0 -0
  1283. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/languages/python.py +0 -0
  1284. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/languages/typescript.py +0 -0
  1285. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/makefile.py +0 -0
  1286. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/metadata.py +0 -0
  1287. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/model_targets.py +0 -0
  1288. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/model_to_code.py +0 -0
  1289. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/mutation.py +0 -0
  1290. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/native_commands.py +0 -0
  1291. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/openapi.py +0 -0
  1292. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/parallel_slices.py +0 -0
  1293. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/pin_commands.py +0 -0
  1294. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/pins.py +0 -0
  1295. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/production.py +0 -0
  1296. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/provisioning.py +0 -0
  1297. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/read_side_layouts.py +0 -0
  1298. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/renovate.py +0 -0
  1299. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/repository.py +0 -0
  1300. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/rules.py +0 -0
  1301. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/run_skill.py +0 -0
  1302. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/service_layouts.py +0 -0
  1303. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/shared_packages.py +0 -0
  1304. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/skills_page.py +0 -0
  1305. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/stage_models.py +0 -0
  1306. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/strangle_command.py +0 -0
  1307. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/structure_page.py +0 -0
  1308. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/target_docs.py +0 -0
  1309. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/whats_next.py +0 -0
  1310. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/where_are_we.py +0 -0
  1311. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/quick_wins.py +0 -0
  1312. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/replay.py +0 -0
  1313. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/resurvey.py +0 -0
  1314. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/scaffold.py +0 -0
  1315. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/selection.py +0 -0
  1316. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/services.py +0 -0
  1317. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/strategy.py +0 -0
  1318. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/structure.py +0 -0
  1319. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/survey.py +0 -0
  1320. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/targets.py +0 -0
  1321. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/tooling.py +0 -0
  1322. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/toolkit.py +0 -0
  1323. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/upgrade.py +0 -0
  1324. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/versions.py +0 -0
  1325. {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/wrappers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: slipwai
3
- Version: 1.2.0.dev23
3
+ Version: 1.2.0.dev25
4
4
  Summary: One-shot scaffolder for product monorepos: a walking skeleton, a verify gate, a path to production, and a repository set up for coding agents.
5
5
  Project-URL: Homepage, https://github.com/ROBCOATVG/slipwai
6
6
  Project-URL: Repository, https://git.treyco.dev/ROBCOATVG/slipwai
@@ -0,0 +1 @@
1
+ 1.2.0.dev25
@@ -5,26 +5,37 @@
5
5
  product question, how a slice is released, what a demo is driven with, when a run parks. This reads the file
6
6
  and says what each setting is and controls, checks a hand edit, and changes them through `--set`, refusing
7
7
  anything the command could not act on. `run` is the loop: one headless harness session per iteration, each a
8
- fresh context, until the last line of an iteration says `done`, a person stops it, or nothing can move.
8
+ fresh context, until the last line of an iteration says `done`, a person stops it, or nothing can move. It is
9
+ the one thing that continues a run, on every harness: a `/cruise` typed in a session starts it, detached,
10
+ with `start`, and the session that typed it runs no stage of the ladder.
9
11
 
10
12
  python3 scripts/agents/cruise.py # every setting and what it controls
11
13
  python3 scripts/agents/cruise.py --check # well-formed; `make check-agents` runs this
12
14
  python3 scripts/agents/cruise.py --set enabled=true # change settings, checked, any time
13
15
  python3 scripts/agents/cruise.py run [--feature F] [--no-park] [--sandbox] # the loop; `make cruise`
14
- python3 scripts/agents/cruise.py status # what the log says the run is doing
16
+ python3 scripts/agents/cruise.py start [--feature F] [--no-park] [--sandbox] # the loop, detached from this session
17
+ python3 scripts/agents/cruise.py stop [--now] # end the run after the iteration in flight, or now
18
+ python3 scripts/agents/cruise.py status # whether a runner is running, and what the log says it is doing
15
19
  python3 scripts/agents/cruise.py resume # print the checkpoint into a compacted context; nothing when none
16
20
  python3 scripts/agents/cruise.py compacting # stamp the checkpoint before the harness compacts
17
21
  python3 scripts/agents/cruise.py loop # what is reading this session's last line: the runner, or nobody
18
- python3 scripts/agents/cruise.py stopping # Claude Code's Stop hook: refuse to end a turn mid-iteration
22
+ python3 scripts/agents/cruise.py stopping # a harness's stop hook: refuse to end a runner's iteration early
23
+ python3 scripts/agents/cruise.py responded # a harness's after-response hook: keep the last message for `stopping`
19
24
 
20
25
  `run` marks every session it starts with `CRUISE_RUNNER=1` and `CRUISE_ITERATION=<n>`, which is how `loop` and
21
- `stopping` tell a runner's iteration from a `/cruise` a person typed — where nothing reads the last line, so
22
- `continue` is not an end the ladder has, and the session goes on to the next unit instead.
23
-
24
- A person stops a run with `touch .specify/cruise.stop`, or by interrupting this script: the iteration under
25
- way is killed, its increment commits are on the slice branch, and the next iteration re-derives from disk.
26
- `CRUISE_HARNESS_COMMAND` (a shell template with `{prompt}`) overrides how the harness is run and
27
- `CRUISE_POLL_SECONDS` how long a parked loop waits, so a run can be rehearsed against a fake harness.
26
+ `stopping` tell a runner's iteration from a `/cruise` a person typed — where nothing reads the last line, so the
27
+ command starts the runner instead of running the ladder itself.
28
+
29
+ Which harness an iteration runs through is the registry's `headless` column (`scripts/agents/registry.json`):
30
+ the first installed harness with a verified headless command whose binary is on PATH, else any harness in the
31
+ registry whose binary is, so a `/cruise` typed into an editor with no command line of its own still runs
32
+ through whichever CLI harness the machine has. `CRUISE_HARNESS_COMMAND` (a shell template with `{prompt}`)
33
+ overrides all of that, and `CRUISE_POLL_SECONDS` how long a parked loop waits, so a run can be rehearsed
34
+ against a fake harness.
35
+
36
+ A person stops a run with `touch .specify/cruise.stop` (`stop`), or by interrupting a foreground `run`: the
37
+ iteration under way is killed, its increment commits are on the slice branch, and the next iteration re-derives
38
+ from disk.
28
39
  """
29
40
 
30
41
  from __future__ import annotations
@@ -35,6 +46,7 @@ import os
35
46
  import re
36
47
  import shlex
37
48
  import shutil
49
+ import signal
38
50
  import subprocess
39
51
  import sys
40
52
  import time
@@ -51,9 +63,19 @@ def project_root(script: Path, depth: int) -> Path:
51
63
  return script.parents[depth]
52
64
 
53
65
 
54
- ROOT = project_root(Path(__file__).resolve(), 2)
66
+ SCRIPT = Path(__file__).resolve()
67
+ ROOT = project_root(SCRIPT, 2)
68
+ # The delivery toolkit this script is part of: `commands/`, `scripts/`, `skills/` beside each other, at the root
69
+ # or under the delivery directory of an adopted repository.
70
+ DELIVERY = SCRIPT.parents[2]
71
+ COMMAND = DELIVERY / "commands/cruise.md"
55
72
  CONFIG = ROOT / ".specify/cruise.json"
56
73
  STOP = ROOT / ".specify/cruise.stop"
74
+ # The runner's own state: its pid while it runs, and where a detached runner writes what a foreground one prints.
75
+ PID = ROOT / ".specify/cruise.pid"
76
+ RUN_LOG = ROOT / ".specify/cruise-run.log"
77
+ # The last message a harness's after-response hook saw, for a stop hook whose event does not carry it.
78
+ LAST_RESPONSE = ROOT / ".specify/cruise-last-response.txt"
57
79
  LOG = ROOT / "specs/cruise-log.jsonl"
58
80
  # The iteration in flight, rewritten by `/cruise` at every stage boundary so a compacted context can resume.
59
81
  CHECKPOINT = ROOT / "specs/cruise-checkpoint.md"
@@ -63,13 +85,14 @@ RESUME = ("cruise: this session is a /cruise iteration whose context was compact
63
85
  # The two variables `run` sets in every session it starts: what tells a runner's iteration from a typed one.
64
86
  RUNNER_VARIABLE, ITERATION_VARIABLE = "CRUISE_RUNNER", "CRUISE_ITERATION"
65
87
  # What a session is told when nothing reads its last line — the same words `commands/cruise.md` carries.
66
- UNREAD = ("no outer loop is reading this: `cruise: continue` is not an end here, so the ladder goes on to the next "
67
- "unit in this session and ends only with `done`, `parked` or `stopped`; `make cruise` runs it unattended")
88
+ UNREAD = ("no outer loop is reading this: a `/cruise` typed in a session starts the runner — `python3 "
89
+ "scripts/agents/cruise.py start` — and ends the turn with what that printed; the runner drives the ladder "
90
+ "from here, a fresh session per iteration, and this session runs no stage of it")
68
91
  # How many times the Stop hook holds a turn against one checkpoint before it lets go: the command rewrites the
69
92
  # checkpoint at every stage boundary, so a checkpoint held this often without a rewrite is a session that is
70
93
  # not moving, and a hook that never let go would spend tokens forever on it.
71
94
  HOLD_LIMIT = 3
72
- REGISTRY = Path(__file__).with_name("registry.json")
95
+ REGISTRY = SCRIPT.with_name("registry.json")
73
96
  INTEGRATION = ROOT / ".specify/integration.json"
74
97
  # Every setting: the values it takes — a tuple of words, or a kind — its default, and what it controls. The
75
98
  # factory writes the same list into `.specify/cruise.json` and `commands/cruise-settings.md`.
@@ -110,12 +133,21 @@ CONTROLS = {
110
133
  LAST_LINE = re.compile(r"^cruise: (continue|done|parked: .+|stopped: human)\s*$")
111
134
  PARKED_EXIT = 3
112
135
  ABSENT = f"no {CONFIG.relative_to(ROOT)}: /cruise is not enabled here; `slipwai migrate` writes the file"
136
+ # The environment a harness session started from inside another harness's session must not inherit: the parent's
137
+ # own identity, or the child would read the parent's transcript as its own, and refuse to start as a nested copy.
138
+ PARENT_SESSION_VARIABLES = ("CLAUDECODE", "CLAUDE_CODE_ENTRYPOINT")
139
+ # The iteration under way, so a SIGTERM to the runner ends it too rather than orphaning a harness session.
140
+ CURRENT: subprocess.Popen[str] | None = None
113
141
 
114
142
 
115
143
  def now() -> str:
116
144
  return datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
117
145
 
118
146
 
147
+ def relative(path: Path) -> str:
148
+ return path.relative_to(ROOT).as_posix()
149
+
150
+
119
151
  def check(table: object) -> list[str]:
120
152
  """Everything a hand edit can break, each as one finding."""
121
153
  if not isinstance(table, dict):
@@ -175,17 +207,71 @@ def load() -> dict[str, Any]:
175
207
  return table
176
208
 
177
209
 
178
- def installed_harness() -> dict[str, Any]:
179
- """The registry row of the first harness Spec Kit recorded as installed."""
210
+ def enabled() -> dict[str, Any]:
211
+ table = load()
212
+ if not table["enabled"]:
213
+ raise RuntimeError("not enabled: `python3 scripts/agents/cruise.py --set enabled=true`, checked, turns it on")
214
+ return table
215
+
216
+
217
+ def registry() -> dict[str, dict[str, Any]]:
218
+ return {row["key"]: row for row in json.loads(REGISTRY.read_text())["harnesses"]}
219
+
220
+
221
+ def installed_keys() -> list[str]:
222
+ """The harnesses Spec Kit recorded as installed here, in the order it recorded them; none where it never ran."""
180
223
  if not INTEGRATION.is_file():
181
- raise RuntimeError("no harness is initialised here (`./init --integration <agent>` records one)")
224
+ return []
182
225
  state = json.loads(INTEGRATION.read_text())
183
226
  keys = state.get("installed_integrations") or [state.get("default_integration")]
184
- rows = {row["key"]: row for row in json.loads(REGISTRY.read_text())["harnesses"]}
185
- for key in keys:
186
- if key in rows:
187
- return rows[key]
188
- raise RuntimeError("the installed harness is not one the registry knows")
227
+ return [key for key in keys if isinstance(key, str)]
228
+
229
+
230
+ def headless_row(harness: dict[str, Any]) -> dict[str, Any] | None:
231
+ row = harness.get("headless")
232
+ return row if isinstance(row, dict) else None
233
+
234
+
235
+ def binary_of(harness: dict[str, Any]) -> str:
236
+ """The executable a harness's headless command starts with: what the runner looks for on PATH."""
237
+ row = headless_row(harness)
238
+ assert row is not None
239
+ return shlex.split(str(row["command"]))[0]
240
+
241
+
242
+ def choose_harness() -> tuple[dict[str, Any], str]:
243
+ """The harness an iteration runs through, and a sentence saying why that one.
244
+
245
+ The first installed harness with a verified headless command whose binary is on PATH. Failing that, any
246
+ harness in the registry whose binary is on PATH — a `/cruise` typed into an editor that has no command
247
+ line, or into a CLI nobody has verified a print mode for, still runs through whichever CLI harness this
248
+ machine has, and the sentence says so. Failing that, a refusal that names what is installed, which
249
+ harnesses would do, and the override.
250
+ """
251
+ rows = registry()
252
+ installed = [key for key in installed_keys() if key in rows]
253
+ for key in installed:
254
+ harness = rows[key]
255
+ if headless_row(harness) is not None and shutil.which(binary_of(harness)):
256
+ return harness, f"harness: {harness['name']}"
257
+ for harness in rows.values():
258
+ if headless_row(harness) is not None and shutil.which(binary_of(harness)):
259
+ if installed:
260
+ why = (f"{rows[installed[0]]['name']} is the installed harness, and "
261
+ + ("the registry records no way to run it headless"
262
+ if headless_row(rows[installed[0]]) is None
263
+ else f"`{binary_of(rows[installed[0]])}` is not on PATH"))
264
+ else:
265
+ why = "no harness is initialised here (`./init --integration <agent>` records one)"
266
+ return harness, f"harness: {harness['name']}, found on PATH — {why}"
267
+ able = ", ".join(f"{harness['name']} (`{binary_of(harness)}`)" for harness in rows.values()
268
+ if headless_row(harness) is not None)
269
+ named = ", ".join(rows[key]["name"] for key in installed) or "no harness is initialised here"
270
+ raise RuntimeError(f"no harness this loop can run an iteration through is on PATH: {named}"
271
+ f"{' is installed' if len(installed) == 1 else ' are installed' if installed else ''}, "
272
+ "and none of the harnesses the registry records a headless command for is on PATH — "
273
+ f"{able} (scripts/agents/registry.json, `headless`). Install one of those, or set "
274
+ "CRUISE_HARNESS_COMMAND to a shell template with {prompt}")
189
275
 
190
276
 
191
277
  def harness_command(harness: dict[str, Any], sandbox: bool) -> tuple[str, str]:
@@ -193,17 +279,39 @@ def harness_command(harness: dict[str, Any], sandbox: bool) -> tuple[str, str]:
193
279
  override = os.environ.get("CRUISE_HARNESS_COMMAND")
194
280
  if override:
195
281
  return override, "harness: CRUISE_HARNESS_COMMAND, as given"
196
- headless = harness.get("headless")
197
- if not isinstance(headless, dict):
198
- raise RuntimeError(f"the registry records no way to run {harness['name']} headless "
199
- "(scripts/agents/registry.json, `headless`): use the harness's own loop over /cruise "
200
- "in a session, or set CRUISE_HARNESS_COMMAND to a shell template with {prompt}")
282
+ headless = headless_row(harness)
283
+ assert headless is not None
201
284
  permissions = headless.get("sandboxPermissions" if sandbox else "permissions", "")
202
285
  why = ("--sandbox: every permission check is bypassed, which is only for a container with nothing to lose"
203
286
  if sandbox else
204
287
  "edits are accepted and every other permission is the harness's own to grant or refuse; pass "
205
288
  "--sandbox inside a disposable container to bypass them all")
206
- return str(headless["command"]).replace("{permissions}", permissions), f"harness: {harness['name']}; {why}"
289
+ return str(headless["command"]).replace("{permissions}", permissions), why
290
+
291
+
292
+ def resolve_harness(sandbox: bool) -> tuple[dict[str, Any] | None, str, str]:
293
+ """The harness row (none under the override where nothing is installed), the shell template, and the sentence
294
+ the run starts with. The override is consulted first so a rehearsal against a fake harness needs no CLI."""
295
+ if os.environ.get("CRUISE_HARNESS_COMMAND"):
296
+ rows = registry()
297
+ installed = [key for key in installed_keys() if key in rows]
298
+ harness = rows[installed[0]] if installed else None
299
+ template, why = harness_command(harness or {}, sandbox)
300
+ return harness, template, why
301
+ harness, chosen = choose_harness()
302
+ template, why = harness_command(harness, sandbox)
303
+ return harness, template, f"{chosen}; {why}"
304
+
305
+
306
+ def prompt_for(harness: dict[str, Any] | None, argument: str | None) -> str:
307
+ """What an iteration is asked. A harness whose headless row says its print mode resolves the project's slash
308
+ commands (`prompt: "slash"`) is asked `/cruise`; every other is asked to read the command file and follow
309
+ it, which needs nothing of a harness beyond reading a file — the same words whatever the harness."""
310
+ headless = headless_row(harness) if harness is not None else None
311
+ if headless is not None and headless.get("prompt") == "slash":
312
+ return f"/cruise {argument}" if argument else "/cruise"
313
+ tail = f", with `{argument}` as its argument" if argument else "; it is given no argument"
314
+ return f"Run the /cruise command: read {relative(COMMAND)} and follow it exactly as written{tail}."
207
315
 
208
316
 
209
317
  def fingerprint() -> str:
@@ -215,7 +323,7 @@ def fingerprint() -> str:
215
323
  # untracked the moment the log is first written read as progress, once, in every run.
216
324
  status = subprocess.run(["git", "status", "--porcelain", "--untracked-files=all"], cwd=ROOT, text=True,
217
325
  capture_output=True)
218
- own = tuple(path.relative_to(ROOT).as_posix() for path in (LOG, CHECKPOINT))
326
+ own = tuple(path.relative_to(ROOT).as_posix() for path in (LOG, CHECKPOINT, PID, RUN_LOG, LAST_RESPONSE))
219
327
  digest.update("\n".join(line for line in status.stdout.splitlines() if not line.endswith(own)).encode())
220
328
  specs = ROOT / "specs"
221
329
  for path in sorted(specs.rglob("*")) if specs.is_dir() else []:
@@ -237,33 +345,40 @@ def record(entry: dict[str, Any]) -> None:
237
345
  handle.write(json.dumps(entry, ensure_ascii=False) + "\n")
238
346
 
239
347
 
240
- def child_environment(harness: dict[str, Any]) -> dict[str, str]:
348
+ def child_environment(harness: dict[str, Any] | None) -> dict[str, str]:
241
349
  """What the iteration runs under: this environment, plus what the registry's `headless.env` sets for the
242
350
  harness — Claude Code's wait ceiling, which otherwise ends a print session while its delegates still run —
243
- and minus the harness's own session variable, so a session started from inside another never reads its
244
- parent's id as its own."""
351
+ and minus the harness's own session variables, so a session started from inside another never reads its
352
+ parent's id as its own, or refuses to start as a nested copy of it."""
245
353
  environment = dict(os.environ)
246
- headless = harness.get("headless")
247
- if isinstance(headless, dict) and isinstance(headless.get("env"), dict):
354
+ for variable in PARENT_SESSION_VARIABLES:
355
+ environment.pop(variable, None)
356
+ for row in registry().values():
357
+ session_variable = (row.get("usage") or {}).get("env")
358
+ if session_variable:
359
+ environment.pop(str(session_variable), None)
360
+ headless = headless_row(harness) if harness is not None else None
361
+ if headless is not None and isinstance(headless.get("env"), dict):
248
362
  environment.update({str(key): str(value) for key, value in headless["env"].items()})
249
- session_variable = (harness.get("usage") or {}).get("env")
250
- if session_variable:
251
- environment.pop(str(session_variable), None)
252
363
  return environment
253
364
 
254
365
 
255
366
  def iterate(template: str, prompt: str, environment: dict[str, str], iteration: int) -> str | None:
256
367
  """Run one iteration, marked as the runner's, echoing its output, and return its last line."""
368
+ global CURRENT
257
369
  command = template.replace("{prompt}", shlex.quote(prompt))
258
370
  environment = {**environment, RUNNER_VARIABLE: "1", ITERATION_VARIABLE: str(iteration)}
259
371
  last = None
260
372
  with subprocess.Popen(command, shell=True, cwd=ROOT, text=True, stdout=subprocess.PIPE,
261
373
  stderr=subprocess.STDOUT, env=environment) as process:
374
+ CURRENT = process
262
375
  assert process.stdout is not None
263
376
  for line in process.stdout:
264
377
  sys.stdout.write(line)
378
+ sys.stdout.flush()
265
379
  if LAST_LINE.match(line):
266
380
  last = line.strip()
381
+ CURRENT = None
267
382
  return last
268
383
 
269
384
 
@@ -315,38 +430,75 @@ def last_assistant_text(transcript: Path) -> str | None:
315
430
  return text
316
431
 
317
432
 
318
- def stopping() -> None:
319
- """Claude Code's Stop hook: hold the turn while an iteration is in flight and this is not its end.
320
-
321
- Prose in a command file is not a control — the same session ended an iteration after the upstream stages
322
- and, later, on a report that said "continuing now" — so the end of a turn is checked here, where the harness
323
- lets a hook refuse it. The hook reads the event Claude Code hands it on stdin, and holds the turn (a
324
- `block` decision, with the reason the model reads next) when a checkpoint says an iteration is in flight,
325
- no stop file says a person ended it, and the last assistant message does not end on one of the four last
326
- lines — or ends on `continue` in a session no runner started, where that line reaches nobody. A turn that
327
- ends on `done` or `stopped` takes the checkpoint with it, the way the runner would. Every hold is stamped
328
- on the checkpoint, and the hook lets go after HOLD_LIMIT holds with no rewrite in between — below the
329
- harness's own cap on consecutive blocks, so it is this script that decides when to let go, and says so.
330
- """
331
- if not CHECKPOINT.is_file() or STOP.is_file():
332
- return
433
+ def read_event() -> dict[str, Any]:
333
434
  try:
334
435
  event = json.loads(sys.stdin.read() or "{}")
335
436
  except ValueError:
336
- event = {}
337
- # The message the turn ends on, as the event carries it; the transcript otherwise, which can lag the event.
338
- text = event.get("last_assistant_message")
339
- if not isinstance(text, str) or not text.strip():
340
- transcript = Path(str(event.get("transcript_path") or ""))
341
- if not transcript.is_file():
342
- return
343
- text = last_assistant_text(transcript)
344
- last = (text or "").rstrip().splitlines()[-1].strip() if (text or "").strip() else ""
437
+ return {}
438
+ return event if isinstance(event, dict) else {}
439
+
440
+
441
+ def responded() -> None:
442
+ """A harness's after-response hook, for one whose stop event does not carry the message the turn ends on:
443
+ keep the last assistant message where `stopping` can read it. Cursor's `afterAgentResponse` hands the text
444
+ as `text`; anything else with a `text` or `last_assistant_message` field is kept the same way."""
445
+ if not os.environ.get(RUNNER_VARIABLE):
446
+ return
447
+ event = read_event()
448
+ text = event.get("text") or event.get("last_assistant_message")
449
+ if isinstance(text, str) and text.strip():
450
+ LAST_RESPONSE.parent.mkdir(parents=True, exist_ok=True)
451
+ LAST_RESPONSE.write_text(text)
452
+
453
+
454
+ def ending_message(event: dict[str, Any]) -> str:
455
+ """The message the turn ends on: the event's own copy first — `last_assistant_message` (Claude Code),
456
+ `lastAssistantMessage` (Grok Build), `prompt_response` (Gemini CLI) — then the harness's transcript, then
457
+ what the after-response hook kept, and the empty string where none of those has it."""
458
+ for field in ("last_assistant_message", "lastAssistantMessage", "prompt_response"):
459
+ text = event.get(field)
460
+ if isinstance(text, str) and text.strip():
461
+ return text
462
+ transcript = Path(str(event.get("transcript_path") or ""))
463
+ if transcript.is_file():
464
+ return last_assistant_text(transcript) or ""
465
+ if LAST_RESPONSE.is_file():
466
+ return LAST_RESPONSE.read_text()
467
+ return ""
468
+
469
+
470
+ def stopping() -> None:
471
+ """A harness's stop hook: hold a runner's iteration while it is in flight and this turn is not its end.
472
+
473
+ Prose in a command file is not a control — a session ended an iteration after the upstream stages and,
474
+ later, on a report that said "continuing now" — so the end of a turn is checked here, where a harness
475
+ lets a hook refuse it. Only in a session the runner started: a typed `/cruise` runs no iteration, it
476
+ starts the runner, so there is nothing to hold. The hook reads the event on stdin and holds the turn
477
+ when a checkpoint says an iteration is in flight, no stop file says a person ended it, and the message the
478
+ turn ends on does not end on one of the four last lines. A turn that ends on `done` or `stopped` takes the
479
+ checkpoint with it, the way the runner would. Every hold is stamped on the checkpoint, and the hook lets
480
+ go after HOLD_LIMIT holds with no rewrite in between — below every harness's own cap on consecutive
481
+ holds, so it is this script that decides when to let go, and says so.
482
+
483
+ The hold is spelled the way the harness reads it: Claude Code's `Stop` takes `{"decision": "block",
484
+ "reason"}`, Cursor's `stop` takes `{"followup_message"}`, which it submits as the next user message. The
485
+ event says which — Cursor's carries `loop_count`, Claude Code's `hook_event_name: "Stop"`.
486
+ """
487
+ if not os.environ.get(RUNNER_VARIABLE) or not CHECKPOINT.is_file() or STOP.is_file():
488
+ return
489
+ event = read_event()
490
+ text = ending_message(event)
491
+ if not text.strip():
492
+ # Nothing says what the turn ended on — an event with no message, no transcript, no after-response
493
+ # hook — so there is nothing to judge, and a hold on no evidence would be a hold on every turn.
494
+ print("cruise: the stop event carries no last message and no hook kept one; not holding", file=sys.stderr)
495
+ return
496
+ last = text.rstrip().splitlines()[-1].strip()
345
497
  ended = LAST_LINE.match(last) is not None
346
498
  if ended and last in ("cruise: done", "cruise: stopped: human"):
347
499
  CHECKPOINT.unlink(missing_ok=True)
348
500
  return
349
- if ended and (last != "cruise: continue" or os.environ.get(RUNNER_VARIABLE)):
501
+ if ended:
350
502
  return
351
503
  checkpoint = CHECKPOINT.read_text()
352
504
  if checkpoint.count("- **Held:**") >= HOLD_LIMIT:
@@ -355,20 +507,17 @@ def stopping() -> None:
355
507
  return
356
508
  next_step = next((line.strip() for line in checkpoint.splitlines() if line.strip().startswith("- **Next:**")),
357
509
  "- **Next:** (the checkpoint names no next step; read it and commands/cruise.md)")
358
- if last == "cruise: continue":
359
- why = (f"`cruise: continue` reaches nobody: no runner started this session ({RUNNER_VARIABLE} is unset), "
360
- "so the ladder continues here and the iteration ends only with `cruise: done`, "
361
- "`cruise: parked: <why>` or `cruise: stopped: human`.")
362
- else:
363
- why = ("an iteration is in flight (specs/cruise-checkpoint.md) and this turn did not end on one of its "
364
- "four last lines. An iteration ends only on `cruise: continue`, `cruise: done`, "
365
- "`cruise: parked: <why>` or `cruise: stopped: human`; a message that says what it is about to do "
366
- "next is a stop, whatever it says.")
367
510
  with CHECKPOINT.open("a") as handle:
368
511
  handle.write(f"- **Held:** {now()} — {last or 'no last line'!r}\n")
369
- reason = (f"cruise: {why} Continue from the checkpoint: {next_step}. A person ends the run with "
370
- f"`touch {STOP.relative_to(ROOT)}`.")
371
- print(json.dumps({"decision": "block", "reason": reason}))
512
+ reason = ("cruise: an iteration is in flight (specs/cruise-checkpoint.md) and this turn did not end on one of "
513
+ "its four last lines. An iteration ends only on `cruise: continue`, `cruise: done`, `cruise: parked: "
514
+ "<why>` or `cruise: stopped: human`; a message that says what it is about to do next is a stop, "
515
+ f"whatever it says. Continue from the checkpoint: {next_step}. A person ends the run with "
516
+ f"`touch {relative(STOP)}`.")
517
+ if "loop_count" in event or str(event.get("hook_event_name", "")) == "stop":
518
+ print(json.dumps({"followup_message": reason}))
519
+ else:
520
+ print(json.dumps({"decision": "block", "reason": reason}))
372
521
 
373
522
 
374
523
  def park(reason: str, no_park: bool, poll: float, seen: str) -> None:
@@ -376,8 +525,8 @@ def park(reason: str, no_park: bool, poll: float, seen: str) -> None:
376
525
  print(f"cruise: parked — {reason}")
377
526
  if no_park:
378
527
  raise SystemExit(PARKED_EXIT)
379
- print(f"cruise: waiting; `touch {STOP.relative_to(ROOT)}` ends the run, a change under specs/ or a commit "
380
- "resumes it")
528
+ print(f"cruise: waiting; `touch {relative(STOP)}` ends the run, a change under specs/ or a commit "
529
+ "resumes it", flush=True)
381
530
  while True:
382
531
  time.sleep(poll)
383
532
  if STOP.is_file():
@@ -388,19 +537,57 @@ def park(reason: str, no_park: bool, poll: float, seen: str) -> None:
388
537
  return
389
538
 
390
539
 
540
+ def running_pid() -> tuple[int, str] | None:
541
+ """The pid and start time of the runner the pid file names, where that process is still alive."""
542
+ if not PID.is_file():
543
+ return None
544
+ words = PID.read_text().split()
545
+ if not words or not words[0].isdigit():
546
+ return None
547
+ pid = int(words[0])
548
+ try:
549
+ os.kill(pid, 0)
550
+ except ProcessLookupError:
551
+ return None
552
+ except PermissionError:
553
+ pass
554
+ return pid, words[1] if len(words) > 1 else "?"
555
+
556
+
557
+ def terminated(_signal: int, _frame: object) -> None:
558
+ """A SIGTERM to the runner ends the iteration under way with it, so `stop --now` leaves no orphan session."""
559
+ if CURRENT is not None and CURRENT.poll() is None:
560
+ CURRENT.terminate()
561
+ raise SystemExit(128 + signal.SIGTERM)
562
+
563
+
391
564
  def run(arguments: list[str]) -> None:
392
- table = load()
393
- if not table["enabled"]:
394
- raise RuntimeError("not enabled: `python3 scripts/agents/cruise.py --set enabled=true`, checked, turns it on")
565
+ table = enabled()
566
+ running = running_pid()
567
+ if running is not None and running[0] != os.getpid():
568
+ raise RuntimeError(f"a runner is already running here (pid {running[0]}, since {running[1]}); "
569
+ f"`python3 scripts/agents/cruise.py status` says where it is")
395
570
  feature = arguments[arguments.index("--feature") + 1] if "--feature" in arguments else None
396
571
  no_park, sandbox = "--no-park" in arguments, "--sandbox" in arguments
397
- harness = installed_harness()
398
- template, why = harness_command(harness, sandbox)
572
+ harness, template, why = resolve_harness(sandbox)
399
573
  environment = child_environment(harness)
400
- prompt = f"/cruise {feature}" if feature else "/cruise"
574
+ prompt = prompt_for(harness, feature)
401
575
  poll = float(os.environ.get("CRUISE_POLL_SECONDS", table["poll_minutes"] * 60))
576
+ PID.parent.mkdir(parents=True, exist_ok=True)
577
+ PID.write_text(f"{os.getpid()} {now()}\n")
578
+ signal.signal(signal.SIGTERM, terminated)
579
+ try:
580
+ drive(table, harness, template, why, environment, prompt, feature, no_park, poll)
581
+ finally:
582
+ if PID.is_file() and PID.read_text().split()[:1] == [str(os.getpid())]:
583
+ PID.unlink()
584
+
585
+
586
+ def drive(table: dict[str, Any], harness: dict[str, Any] | None, template: str, why: str,
587
+ environment: dict[str, str], prompt: str, feature: str | None, no_park: bool, poll: float) -> None:
402
588
  print(f"cruise: {why}")
403
- print(f"cruise: each iteration runs `{prompt}` in a fresh session; `touch {STOP.relative_to(ROOT)}` stops it")
589
+ print(f"cruise: each iteration runs `{prompt}` in a fresh session; `touch {relative(STOP)}` stops it",
590
+ flush=True)
404
591
  started_run = time.monotonic()
405
592
  iterations_this_run = 0
406
593
  fingerprints = [entry["fingerprint"] for entry in entries()]
@@ -419,12 +606,14 @@ def run(arguments: list[str]) -> None:
419
606
  return
420
607
  iteration = len(entries()) + 1
421
608
  started = now()
609
+ LAST_RESPONSE.unlink(missing_ok=True)
422
610
  last = iterate(template, ask, environment, iteration)
423
611
  iterations_this_run += 1
424
612
  seen = fingerprint()
425
613
  fingerprints.append(seen)
426
614
  entry: dict[str, Any] = {"iteration": iteration, "started": started, "ended": now(),
427
- "harness": harness["key"], "last_line": last or "no last line", "fingerprint": seen}
615
+ "harness": harness["key"] if harness is not None else "override",
616
+ "last_line": last or "no last line", "fingerprint": seen}
428
617
  if ask != prompt:
429
618
  entry["attempt"] = "unblock"
430
619
  ask = prompt
@@ -444,14 +633,81 @@ def run(arguments: list[str]) -> None:
444
633
  if table["unblock"] == "bosun" and unblocked_at != seen:
445
634
  # One iteration for the bosun to move it, said in the prompt so the command goes straight there.
446
635
  unblocked_at = seen
447
- ask = f"{prompt} unblock: no progress since iteration {since}"
636
+ ask = prompt_for(harness, f"{feature + ' ' if feature else ''}unblock: no progress since iteration {since}")
448
637
  print(f"cruise: no progress since iteration {since}; one iteration to unblock, then park")
449
638
  continue
450
639
  park(f"no progress since iteration {since}, and the bosun's iteration did not move it"
451
640
  if unblocked_at == seen else f"no progress since iteration {since}", no_park, poll, seen)
452
641
 
453
642
 
643
+ def start(arguments: list[str]) -> None:
644
+ """The loop, detached from the session that asked for it: what a typed `/cruise` does instead of running
645
+ the ladder in a context nothing re-invokes. Everything that can refuse — the settings, the stop file, a
646
+ runner already running, no harness to run through — is checked here, before the fork, so the refusal is
647
+ read by whoever typed it; the runner's own output goes to the run log."""
648
+ enabled()
649
+ if os.environ.get(RUNNER_VARIABLE):
650
+ raise RuntimeError(f"this session is iteration {os.environ.get(ITERATION_VARIABLE, '?')} of a run already "
651
+ "under way; the runner that started it re-invokes /cruise, nothing here has to")
652
+ running = running_pid()
653
+ if running is not None:
654
+ print(f"cruise: the runner is already running (pid {running[0]}, since {running[1]}); its log is "
655
+ f"{relative(RUN_LOG)}, and `python3 scripts/agents/cruise.py status` says where it is")
656
+ return
657
+ if STOP.is_file():
658
+ raise RuntimeError(f"{relative(STOP)} is present: a person ended the last run, and the runner would end "
659
+ "again at once; remove the file to start another")
660
+ feature = arguments[arguments.index("--feature") + 1] if "--feature" in arguments else None
661
+ harness, _template, why = resolve_harness("--sandbox" in arguments)
662
+ prompt = prompt_for(harness, feature)
663
+ RUN_LOG.parent.mkdir(parents=True, exist_ok=True)
664
+ with RUN_LOG.open("ab") as log:
665
+ log.write(f"cruise: runner started {now()} from a session, detached\n".encode())
666
+ process = subprocess.Popen([sys.executable, str(SCRIPT), "run", *arguments], cwd=ROOT,
667
+ stdin=subprocess.DEVNULL, stdout=log, stderr=subprocess.STDOUT,
668
+ start_new_session=True, env=dict(os.environ))
669
+ # The runner writes its pid file as it starts; wait for that, so `status` typed a moment later sees it —
670
+ # and so a runner that refused after all is reported here, with its reason, rather than found in the log.
671
+ for _ in range(100):
672
+ if process.poll() is not None:
673
+ tail = RUN_LOG.read_text().rstrip().splitlines()[-3:] if RUN_LOG.is_file() else []
674
+ raise RuntimeError(f"the runner ended at once (exit {process.returncode}); {relative(RUN_LOG)} says: "
675
+ + " | ".join(tail))
676
+ words = PID.read_text().split() if PID.is_file() else []
677
+ if words[:1] == [str(process.pid)]:
678
+ break
679
+ time.sleep(0.05)
680
+ print(f"cruise: runner started as pid {process.pid}, detached from this session ({why})")
681
+ print(f"cruise: each iteration runs `{prompt}` in a fresh session; this session runs no stage of it")
682
+ print(f"cruise: it writes to {relative(RUN_LOG)}; `python3 scripts/agents/cruise.py status` says where it is; "
683
+ f"`touch {relative(STOP)}` ends it after the iteration in flight, `python3 scripts/agents/cruise.py stop "
684
+ "--now` ends it now")
685
+
686
+
687
+ def stop(arguments: list[str]) -> None:
688
+ """End the run: the stop file ends it after the iteration in flight, `--now` ends the iteration too."""
689
+ STOP.parent.mkdir(parents=True, exist_ok=True)
690
+ STOP.touch()
691
+ running = running_pid()
692
+ if running is None:
693
+ print(f"cruise: {relative(STOP)} written; no runner is running here, and /cruise refuses to start until "
694
+ "the file is removed")
695
+ return
696
+ if "--now" in arguments:
697
+ os.kill(running[0], signal.SIGTERM)
698
+ print(f"cruise: {relative(STOP)} written and the runner (pid {running[0]}) terminated with the iteration "
699
+ "in flight; its increment commits are on the slice branch, and the next run re-derives from disk")
700
+ return
701
+ print(f"cruise: {relative(STOP)} written; the runner (pid {running[0]}) ends after the iteration in flight, "
702
+ "and /cruise refuses to start until the file is removed")
703
+
704
+
454
705
  def status() -> None:
706
+ running = running_pid()
707
+ if running is not None:
708
+ print(f"cruise: the runner is running (pid {running[0]}, since {running[1]}); its log is {relative(RUN_LOG)}")
709
+ else:
710
+ print("cruise: no runner is running here")
455
711
  log = entries()
456
712
  if not log:
457
713
  print("cruise: no iteration has run here")
@@ -475,23 +731,11 @@ def main() -> None:
475
731
  if not CONFIG.is_file():
476
732
  print(ABSENT)
477
733
  return
478
- if arguments[:1] == ["run"]:
479
- run(arguments[1:])
480
- return
481
- if arguments[:1] == ["status"]:
482
- status()
483
- return
484
- if arguments[:1] == ["resume"]:
485
- resume()
486
- return
487
- if arguments[:1] == ["compacting"]:
488
- compacting()
489
- return
490
- if arguments[:1] == ["loop"]:
491
- loop()
492
- return
493
- if arguments[:1] == ["stopping"]:
494
- stopping()
734
+ verbs = {"run": lambda: run(arguments[1:]), "start": lambda: start(arguments[1:]),
735
+ "stop": lambda: stop(arguments[1:]), "status": status, "resume": resume, "compacting": compacting,
736
+ "loop": loop, "stopping": stopping, "responded": responded}
737
+ if arguments and arguments[0] in verbs:
738
+ verbs[arguments[0]]()
495
739
  return
496
740
  if "--set" in arguments:
497
741
  table = json.loads(CONFIG.read_text())