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.
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/PKG-INFO +1 -1
- slipwai-1.2.0.dev25/VERSION +1 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/agents/cruise.py +346 -102
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/agents/project.py +113 -1
- slipwai-1.2.0.dev25/assets/toolkit/scripts/agents/registry.json +1216 -0
- slipwai-1.2.0.dev25/changelog.d/cruise-runner-everywhere.md +21 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/agent_settings.py +6 -5
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/agent_targets.py +4 -2
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/cruise.py +34 -24
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/cruise_record.py +5 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/gitignore.py +4 -1
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/readme.py +1 -1
- slipwai-1.2.0.dev23/VERSION +0 -1
- slipwai-1.2.0.dev23/assets/toolkit/scripts/agents/registry.json +0 -852
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/.gitignore +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/CHANGELOG.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/LICENSE +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/NOTICE +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/README.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/README.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/docs/change-strategy.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/scripts/check-convergence.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/scripts/ratchet.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/support.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/wrappers/gradle/gradle-wrapper.jar.base64 +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/wrappers/gradle/gradle-wrapper.properties +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/wrappers/gradle/gradlew +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/wrappers/gradle/gradlew.bat +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/adoption/wrappers/gradle/source-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/docker-compose.yml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/env.example +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/checkpoint_store_contract.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/checkpoint_store_memory.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/checkpoint_store_memory_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/checkpoint_store_postgres.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/checkpoint_store_postgres_integration_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/checkpoint_store_sqlite.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/checkpoint_store_sqlite_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/config.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/config_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/event_store_contract.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/event_store_memory.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/event_store_memory_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/event_store_postgres.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/event_store_postgres_integration_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/event_store_sqlite.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/event_store_sqlite_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/events.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/http_app.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/http_app_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/http_openapi_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/http_security.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/http_security_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/migrate_main.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/migrate_main_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/migrations_embed.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/migrations_keep +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/oidc_keycloak.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/oidc_keycloak_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/openapi.yaml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/projections.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/projections_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/projections_ticker.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/projections_ticker_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/read_models.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/serve_main.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/tracing.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/tracing_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/users_oidc_keycloak.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/go/users_oidc_keycloak_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/actor.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/append_result.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/causation_id.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/checkpoint_store_memory.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/checkpoint_store_postgres.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/checkpoint_store_sqlite.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/committed_event.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/condition.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/conditional_append_result.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/correlation_id.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/database_url.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/domain_event.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/event_store.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/event_store_exception.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/event_store_memory.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/event_store_memory_database.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/event_store_postgres.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/event_store_sqlite.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/event_visitor.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/http_schema_failure.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/migrate_main.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/oidc_keycloak.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/projection.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/projections.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/read_models.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tag_query.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tagged_read.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tags_of.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/checkpoint_store_contract.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/checkpoint_store_memory_test.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/checkpoint_store_sqlite_test.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/database_url_test.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/event_store_contract.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/event_store_memory_test.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/event_store_sqlite_test.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/oidc_keycloak_test.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/projections_test.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/tests/users_oidc_keycloak_test.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/transactions.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java/users_oidc_keycloak.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/config_source_registration +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/database_url_config_source.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/http_flags_resource.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/http_health_check.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/http_not_found_mapper.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/jta_transactions.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/oidc_keycloak_augmentor.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/scheduled_projections.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/tests/checkpoint_store_postgres_it.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/tests/event_store_postgres_it.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/tests/http_app_test.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-quarkus/users_current_customer.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/database_url_environment_post_processor.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/environment_post_processor_registration +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/http_flags_controller.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/http_health_indicator.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/http_not_found_advice.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/oidc_keycloak_security.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/scheduled_projections.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/spring_transactions.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/tests/checkpoint_store_postgres_it.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/tests/event_store_postgres_it.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/tests/http_app_test.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/java-spring/users_security.java +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/keycloak/README.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/keycloak/realms/app.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/keycloak/realms/customers.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/prune.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/checkpoint_store_memory.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/checkpoint_store_postgres.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/checkpoint_store_sqlite.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/event_store_memory.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/event_store_postgres.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/event_store_sqlite.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/events.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/http_app.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/logging_setup.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/main.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/migrations_apply.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/oidc_keycloak.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/openapi-flags.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/openapi.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/openapi_export.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/projections.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/projections_lifespan.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/read_models.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/settings.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/checkpoint_store_contract.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/conftest.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/event_store_contract.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_checkpoint_store_memory.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_checkpoint_store_postgres.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_checkpoint_store_sqlite.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_event_store_memory.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_event_store_postgres.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_event_store_sqlite.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_http_app.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_logging_setup.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_oidc_keycloak.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_projections.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_projections_lifespan.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_settings.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_tracing.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tests/test_users_oidc_keycloak.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/tracing.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/python/users_oidc_keycloak.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/sql/001_events.sql +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/sql/002_events_append_only.sql +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/sql/003_projection_checkpoints.sql +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/sql/004_event_tags.sql +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/checkpoint-store-memory.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/checkpoint-store-postgres.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/checkpoint-store-sqlite.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/config.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/event-store-memory.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/event-store-postgres.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/event-store-sqlite.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/events.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/http-app.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/main.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/migrations/001_events.js +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/migrations/002_events_append_only.js +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/migrations/003_projection_checkpoints.js +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/migrations/004_event_tags.js +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/oidc-keycloak.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/openapi-export.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/openapi-flags.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/openapi.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/projections-plugin.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/projections.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/read-models.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/checkpoint-store-contract.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/checkpoint-store-memory.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/checkpoint-store-postgres.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/checkpoint-store-sqlite.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/event-store-contract.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/event-store-memory.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/event-store-postgres.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/event-store-sqlite.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/http-app.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/oidc-keycloak.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/projections-plugin.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/projections.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/tracing.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tests/users-oidc-keycloak.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/tracing.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/users-oidc-keycloak.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/backing-services/typescript/vitest.integration.config.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/api-client/package.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/api-client/src/index.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/index.html +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/package.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/src/App.tsx +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/src/main.tsx +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/src/styles/base.css +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/src/styles/tokens.css +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/tests/App.test.tsx +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/tests/setup.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/tsconfig.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app/vite.config.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app-flags-local/flags.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app-flags-local/flags.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app-flags-target/flags.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app-flags-target/flags.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app-route-client/Home.test.tsx +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app-route-client/Home.tsx +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app-route-plain/Home.test.tsx +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/app-route-plain/Home.tsx +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/features/users-keycloak/src/auth/Account.tsx +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/features/users-keycloak/src/auth/users.tsx +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/features/users-keycloak/tests/auth/Account.test.tsx +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/features/users-keycloak/tests/auth/users.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/frontend-only-users-keycloak.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/frontend-only.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/typescript-backend-fastify-postgres-users-keycloak.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/typescript-backend-fastify-postgres.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/typescript-backend-fastify-users-keycloak.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/typescript-backend-fastify.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/typescript-backend-postgres-users-keycloak.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/typescript-backend-postgres.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/typescript-backend-users-keycloak.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/frontends/react-vite/locks/typescript-backend.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/app/.gremlins.yaml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/app/application/README.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/app/domain/README.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/app/health/health.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/app/health/health_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/event-port/application/ports/events/events.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/event-port/application/ports/events/events_test.go +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/acl-stripe-payment-translation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/aggregate-sizing-occasion.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/aggregate-vs-read-model.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/always-valid-occasion-invariants.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/branded-id-types.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/create-child-through-root.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/decider-pattern-order.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/describe-order-exhaustive-switch.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/discriminated-union-pledge-result.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/domain-behavioral-tests.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/domain-service-pledge-contribution.md +0 -0
- {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
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/entity-rename-occasion.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/error-propagation-through-layers.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/exception-vs-result-type.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/fake-vs-mock-repository.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/in-process-event-dispatch.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/integration-test-order-repository.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/invariant-driven-vending-machine.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/money-value-object-factory.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/multiple-error-reasons-union.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/occasion-repository-interface.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/one-aggregate-per-transaction.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/optimistic-locking-repository-save.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/optimistic-locking-version-field.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/order-lifecycle-union.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/outbox-pattern-dispatch.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/pledge-result-types.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/process-manager-gift-purchase.md +0 -0
- {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
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/readonly-array-child-collection.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/shared-kernel-package-layout.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/specification-can-pledge.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/test-decide-order-events.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/test-error-funding-closed.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/test-factory-get-occasion.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/ubiquitous-language-glossary-types.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/wrong-catch-rethrow-context.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/wrong-generic-error-type.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/domain-driven-design/zod-branded-type-bridging.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/account-decider-and-evolve.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/balance-view-apply-fold.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/balance-view-projection.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/catch-up-checkpoint-transaction.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/command-handler-loop.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/command-handler-retry-loop.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/decide-withdraw-example.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/decider-behaviour-tests.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/decider-insufficient-funds-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/decider-type.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/decision-result-type.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/deposit-money-command-with-timestamp.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/event-envelope-type.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/event-store-port-interface.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/event-store-port.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/evolve-behaviour-via-withdraw-limit.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/generic-rehydrate-fold.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/idempotent-projection-dedupe.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/in-memory-event-store-fake.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/inline-view-in-append-transaction.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/live-view-bounded-fold.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/order-placed-upcaster.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/projection-behaviour-tests.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/rehydrate-left-fold.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/tags-of-from-identifying-attributes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/todo-list-claiming.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/tolerant-reader-read-path.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/event-sourcing/upcaster-behaviour-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/adapter-error-translation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/antipattern-business-logic-in-adapter.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/antipattern-bypass-adapter.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/antipattern-domain-depends-on-infrastructure.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/antipattern-pattern-shaped-names.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/antipattern-technology-shaped-port.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/composition-root-http-entrypoint.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/composition-root-queue-entrypoint.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/cqrs-lite-dashboard-query-function.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-auth-driving-adapter.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-domain-authorization.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-domain-probe-port.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-error-formatting-http.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-technical-telemetry-adapters.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-transactional-persistence-port.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-use-case-identity.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/dependency-injection-order-placement.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/driven-adapter-and-fake-implementation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/greenfield-driven-port-fake.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/greenfield-driving-port-constant.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/incremental-after-thin-entrypoint.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/incremental-before-tangled-handler.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/incremental-create-adapter.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/incremental-create-use-case.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/incremental-extract-domain-function.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/incremental-extract-port-interface.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/port-interface-definitions.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/testing-create-test-db-helper.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/testing-domain-unit-test-example.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/testing-fake-order-repo.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/testing-narrow-integration-tests.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/testing-recording-fake-instrumentation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/testing-use-case-primary-boundary.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/worked-example-domain-types.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/worked-example-domain-unit-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/worked-example-driven-adapters.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/worked-example-driving-adapter-entrypoint.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/worked-example-fakes-for-testing.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/worked-example-port-interfaces.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/worked-example-use-case-orchestration.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/hexagonal-architecture/worked-example-use-case-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/correct-complete-factory-object.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/correct-fresh-state-per-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/correct-import-real-schema.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/correct-inline-tested-through-behavior.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/correct-testing-behavior-public-api.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/coverage-theater-assert-called-only-correct.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/coverage-theater-assert-called-only-wrong.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/coverage-theater-branch-coverage-correct.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/coverage-theater-happy-path-only-wrong.md +0 -0
- {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
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/coverage-theater-trivial-getter-setter-correct.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/coverage-theater-trivial-getter-setter-wrong.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/factory-basic-pattern.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/factory-complete-example.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/factory-composition.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/reach-validation-through-behavior.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/wrong-extracted-helper-with-own-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/wrong-incomplete-factory-object.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/wrong-redefine-schema-in-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/wrong-shared-mutable-fixture.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/examples/testing/wrong-testing-implementation-detail.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/flags/flags/flags.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/flags/flags/flags_test.go +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/modules/base/go.mod +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/modules/base/go.sum +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/modules/postgres/go.mod +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/modules/postgres/go.sum +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/modules/sqlite/go.mod +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/modules/sqlite/go.sum +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/scripts/go-coverage.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/go/scripts/go-mutation.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/build/.gitattributes +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/build/.mvn/wrapper/maven-wrapper.properties +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/build/config/checkstyle.xml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/build/config/pmd-ruleset.xml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/build/config/spotbugs-exclude.xml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/build/mvnw +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/build/mvnw.cmd +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/acl-stripe-payment-translation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/aggregate-sizing-occasion.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/aggregate-vs-read-model.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/always-valid-occasion-invariants.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/branded-id-types.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/create-child-through-root.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/decider-pattern-order.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/describe-order-exhaustive-switch.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/discriminated-union-pledge-result.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/domain-behavioral-tests.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/domain-service-pledge-contribution.md +0 -0
- {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
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/entity-rename-occasion.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/error-propagation-through-layers.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/exception-vs-result-type.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/fake-vs-mock-repository.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/in-process-event-dispatch.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/integration-test-order-repository.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/invariant-driven-vending-machine.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/money-value-object-factory.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/multiple-error-reasons-union.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/occasion-repository-interface.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/one-aggregate-per-transaction.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/optimistic-locking-repository-save.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/optimistic-locking-version-field.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/order-lifecycle-union.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/outbox-pattern-dispatch.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/pledge-result-types.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/process-manager-gift-purchase.md +0 -0
- {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
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/readonly-array-child-collection.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/shared-kernel-package-layout.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/specification-can-pledge.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/test-decide-order-events.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/test-error-funding-closed.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/test-factory-get-occasion.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/ubiquitous-language-glossary-types.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/wrong-catch-rethrow-context.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/wrong-generic-error-type.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/domain-driven-design/zod-branded-type-bridging.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/account-decider-and-evolve.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/balance-view-apply-fold.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/balance-view-projection.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/catch-up-checkpoint-transaction.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/command-handler-loop.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/command-handler-retry-loop.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/decide-withdraw-example.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/decider-behaviour-tests.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/decider-insufficient-funds-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/decider-type.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/decision-result-type.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/deposit-money-command-with-timestamp.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/event-envelope-type.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/event-store-port-interface.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/event-store-port.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/evolve-behaviour-via-withdraw-limit.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/generic-rehydrate-fold.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/idempotent-projection-dedupe.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/in-memory-event-store-fake.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/inline-view-in-append-transaction.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/live-view-bounded-fold.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/order-placed-upcaster.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/projection-behaviour-tests.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/rehydrate-left-fold.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/tags-of-from-identifying-attributes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/todo-list-claiming.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/tolerant-reader-read-path.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/event-sourcing/upcaster-behaviour-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/adapter-error-translation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/antipattern-business-logic-in-adapter.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/antipattern-bypass-adapter.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/antipattern-domain-depends-on-infrastructure.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/antipattern-pattern-shaped-names.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/antipattern-technology-shaped-port.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/composition-root-http-entrypoint.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/composition-root-queue-entrypoint.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/cqrs-lite-dashboard-query-function.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-auth-driving-adapter.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-domain-authorization.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-domain-probe-port.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-error-formatting-http.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-technical-telemetry-adapters.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-transactional-persistence-port.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-use-case-identity.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/dependency-injection-order-placement.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/driven-adapter-and-fake-implementation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/greenfield-driven-port-fake.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/greenfield-driving-port-constant.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/incremental-after-thin-entrypoint.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/incremental-before-tangled-handler.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/incremental-create-adapter.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/incremental-create-use-case.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/incremental-extract-domain-function.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/incremental-extract-port-interface.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/port-interface-definitions.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/testing-create-test-db-helper.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/testing-domain-unit-test-example.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/testing-fake-order-repo.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/testing-narrow-integration-tests.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/testing-recording-fake-instrumentation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/testing-use-case-primary-boundary.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/worked-example-domain-types.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/worked-example-domain-unit-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/worked-example-driven-adapters.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/worked-example-driving-adapter-entrypoint.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/worked-example-fakes-for-testing.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/worked-example-port-interfaces.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/worked-example-use-case-orchestration.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/hexagonal-architecture/worked-example-use-case-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/correct-complete-factory-object.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/correct-fresh-state-per-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/correct-import-real-schema.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/correct-inline-tested-through-behavior.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/correct-testing-behavior-public-api.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/coverage-theater-assert-called-only-correct.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/coverage-theater-assert-called-only-wrong.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/coverage-theater-branch-coverage-correct.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/coverage-theater-happy-path-only-wrong.md +0 -0
- {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
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/coverage-theater-trivial-getter-setter-correct.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/coverage-theater-trivial-getter-setter-wrong.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/factory-basic-pattern.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/factory-complete-example.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/factory-composition.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/reach-validation-through-behavior.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/wrong-extracted-helper-with-own-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/wrong-incomplete-factory-object.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/wrong-redefine-schema-in-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/wrong-shared-mutable-fixture.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java/examples/testing/wrong-testing-implementation-detail.md +0 -0
- {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
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java-quarkus/app/pom.xml +0 -0
- {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
- {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
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java-quarkus/app/src/main/resources/application.properties +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java-spring/app/pom.xml +0 -0
- {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
- {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
- {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
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/java-spring/app/src/main/resources/application.properties +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/app/pyproject.toml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/app/src/delivery_starter/__init__.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/app/src/delivery_starter/application/README.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/app/src/delivery_starter/domain/README.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/app/tests/test_health.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/event-port/src/delivery_starter/application/ports/events.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/event-port/tests/test_events.py +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/acl-stripe-payment-translation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/aggregate-sizing-occasion.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/aggregate-vs-read-model.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/always-valid-occasion-invariants.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/branded-id-types.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/create-child-through-root.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/decider-pattern-order.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/describe-order-exhaustive-switch.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/discriminated-union-pledge-result.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/domain-behavioral-tests.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/domain-service-pledge-contribution.md +0 -0
- {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
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/entity-rename-occasion.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/error-propagation-through-layers.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/exception-vs-result-type.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/fake-vs-mock-repository.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/in-process-event-dispatch.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/integration-test-order-repository.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/invariant-driven-vending-machine.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/money-value-object-factory.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/multiple-error-reasons-union.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/occasion-repository-interface.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/one-aggregate-per-transaction.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/optimistic-locking-repository-save.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/optimistic-locking-version-field.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/order-lifecycle-union.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/outbox-pattern-dispatch.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/pledge-result-types.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/process-manager-gift-purchase.md +0 -0
- {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
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/readonly-array-child-collection.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/shared-kernel-package-layout.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/specification-can-pledge.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/test-decide-order-events.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/test-error-funding-closed.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/test-factory-get-occasion.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/ubiquitous-language-glossary-types.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/wrong-catch-rethrow-context.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/wrong-generic-error-type.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/domain-driven-design/zod-branded-type-bridging.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/account-decider-and-evolve.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/balance-view-apply-fold.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/balance-view-projection.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/catch-up-checkpoint-transaction.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/command-handler-loop.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/command-handler-retry-loop.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/decide-withdraw-example.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/decider-behaviour-tests.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/decider-insufficient-funds-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/decider-type.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/decision-result-type.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/deposit-money-command-with-timestamp.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/event-envelope-type.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/event-store-port-interface.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/event-store-port.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/evolve-behaviour-via-withdraw-limit.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/generic-rehydrate-fold.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/idempotent-projection-dedupe.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/in-memory-event-store-fake.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/inline-view-in-append-transaction.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/live-view-bounded-fold.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/order-placed-upcaster.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/projection-behaviour-tests.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/rehydrate-left-fold.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/tags-of-from-identifying-attributes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/todo-list-claiming.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/tolerant-reader-read-path.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/event-sourcing/upcaster-behaviour-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/adapter-error-translation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/antipattern-business-logic-in-adapter.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/antipattern-bypass-adapter.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/antipattern-domain-depends-on-infrastructure.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/antipattern-pattern-shaped-names.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/antipattern-technology-shaped-port.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/composition-root-http-entrypoint.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/composition-root-queue-entrypoint.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/cqrs-lite-dashboard-query-function.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-auth-driving-adapter.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-domain-authorization.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-domain-probe-port.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-error-formatting-http.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-technical-telemetry-adapters.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-transactional-persistence-port.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-use-case-identity.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/dependency-injection-order-placement.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/driven-adapter-and-fake-implementation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/greenfield-driven-port-fake.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/greenfield-driving-port-constant.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/incremental-after-thin-entrypoint.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/incremental-before-tangled-handler.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/incremental-create-adapter.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/incremental-create-use-case.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/incremental-extract-domain-function.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/incremental-extract-port-interface.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/port-interface-definitions.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/testing-create-test-db-helper.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/testing-domain-unit-test-example.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/testing-fake-order-repo.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/testing-narrow-integration-tests.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/testing-recording-fake-instrumentation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/testing-use-case-primary-boundary.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/worked-example-domain-types.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/worked-example-domain-unit-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/worked-example-driven-adapters.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/worked-example-driving-adapter-entrypoint.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/worked-example-fakes-for-testing.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/worked-example-port-interfaces.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/worked-example-use-case-orchestration.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/hexagonal-architecture/worked-example-use-case-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/correct-complete-factory-object.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/correct-fresh-state-per-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/correct-import-real-schema.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/correct-inline-tested-through-behavior.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/correct-testing-behavior-public-api.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/coverage-theater-assert-called-only-correct.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/coverage-theater-assert-called-only-wrong.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/coverage-theater-branch-coverage-correct.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/coverage-theater-happy-path-only-wrong.md +0 -0
- {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
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/coverage-theater-trivial-getter-setter-correct.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/coverage-theater-trivial-getter-setter-wrong.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/factory-basic-pattern.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/factory-complete-example.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/factory-composition.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/reach-validation-through-behavior.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/wrong-extracted-helper-with-own-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/wrong-incomplete-factory-object.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/wrong-redefine-schema-in-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/wrong-shared-mutable-fixture.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/examples/testing/wrong-testing-implementation-detail.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/flags/src/delivery_starter/flags.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/flags/tests/test_flags.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/locks/uv-fastapi-postgres.lock +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/locks/uv-fastapi.lock +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/locks/uv-postgres.lock +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/python/locks/uv.lock +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/app/package.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/app/src/application/README.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/app/src/domain/README.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/app/src/health.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/app/tests/health.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/biome/biome.jsonc +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/biome/domain-purity.grit +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/acl-stripe-payment-translation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/aggregate-sizing-occasion.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/aggregate-vs-read-model.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/always-valid-occasion-invariants.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/branded-id-types.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/create-child-through-root.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/decider-pattern-order.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/describe-order-exhaustive-switch.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/discriminated-union-pledge-result.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/domain-behavioral-tests.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/domain-service-pledge-contribution.md +0 -0
- {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
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/entity-rename-occasion.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/error-propagation-through-layers.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/exception-vs-result-type.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/fake-vs-mock-repository.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/in-process-event-dispatch.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/integration-test-order-repository.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/invariant-driven-vending-machine.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/money-value-object-factory.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/multiple-error-reasons-union.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/occasion-repository-interface.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/one-aggregate-per-transaction.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/optimistic-locking-repository-save.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/optimistic-locking-version-field.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/order-lifecycle-union.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/outbox-pattern-dispatch.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/pledge-result-types.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/process-manager-gift-purchase.md +0 -0
- {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
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/readonly-array-child-collection.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/shared-kernel-package-layout.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/specification-can-pledge.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/test-decide-order-events.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/test-error-funding-closed.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/test-factory-get-occasion.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/ubiquitous-language-glossary-types.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/wrong-catch-rethrow-context.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/wrong-generic-error-type.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/domain-driven-design/zod-branded-type-bridging.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/account-decider-and-evolve.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/balance-view-apply-fold.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/balance-view-projection.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/catch-up-checkpoint-transaction.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/command-handler-loop.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/command-handler-retry-loop.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/decide-withdraw-example.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/decider-behaviour-tests.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/decider-insufficient-funds-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/decider-type.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/decision-result-type.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/deposit-money-command-with-timestamp.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/event-envelope-type.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/event-store-port-interface.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/event-store-port.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/evolve-behaviour-via-withdraw-limit.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/generic-rehydrate-fold.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/idempotent-projection-dedupe.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/in-memory-event-store-fake.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/inline-view-in-append-transaction.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/live-view-bounded-fold.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/order-placed-upcaster.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/projection-behaviour-tests.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/rehydrate-left-fold.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/tags-of-from-identifying-attributes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/todo-list-claiming.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/tolerant-reader-read-path.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/event-sourcing/upcaster-behaviour-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/adapter-error-translation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/antipattern-business-logic-in-adapter.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/antipattern-bypass-adapter.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/antipattern-domain-depends-on-infrastructure.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/antipattern-pattern-shaped-names.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/antipattern-technology-shaped-port.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/composition-root-http-entrypoint.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/composition-root-queue-entrypoint.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/cqrs-lite-dashboard-query-function.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-auth-driving-adapter.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-domain-authorization.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-domain-probe-port.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-error-formatting-http.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-technical-telemetry-adapters.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-transactional-persistence-port.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-use-case-identity.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/dependency-injection-order-placement.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/driven-adapter-and-fake-implementation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/greenfield-driven-port-fake.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/greenfield-driving-port-constant.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/incremental-after-thin-entrypoint.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/incremental-before-tangled-handler.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/incremental-create-adapter.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/incremental-create-use-case.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/incremental-extract-domain-function.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/incremental-extract-port-interface.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/port-interface-definitions.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/testing-create-test-db-helper.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/testing-domain-unit-test-example.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/testing-fake-order-repo.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/testing-narrow-integration-tests.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/testing-recording-fake-instrumentation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/testing-use-case-primary-boundary.md +0 -0
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-domain-types.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-domain-unit-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-driven-adapters.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-driving-adapter-entrypoint.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-fakes-for-testing.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-port-interfaces.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-use-case-orchestration.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-use-case-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/correct-complete-factory-object.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/correct-fresh-state-per-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/correct-import-real-schema.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/correct-inline-tested-through-behavior.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/correct-testing-behavior-public-api.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/coverage-theater-assert-called-only-correct.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/coverage-theater-assert-called-only-wrong.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/coverage-theater-branch-coverage-correct.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/coverage-theater-happy-path-only-wrong.md +0 -0
- {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
- {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
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/coverage-theater-trivial-getter-setter-correct.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/coverage-theater-trivial-getter-setter-wrong.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/factory-basic-pattern.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/factory-complete-example.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/factory-composition.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/reach-validation-through-behavior.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/wrong-extracted-helper-with-own-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/wrong-incomplete-factory-object.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/wrong-redefine-schema-in-test.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/wrong-shared-mutable-fixture.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/examples/testing/wrong-testing-implementation-detail.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/flags/src/flags.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/flags/tests/flags.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/locks/package-lock-fastify-postgres.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/locks/package-lock-fastify.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/locks/package-lock-postgres.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/languages/typescript/locks/package-lock.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/event-modelling/.specify/presets/.registry +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/event-modelling/.specify/presets/event-modelling/preset.yml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/event-modelling/.specify/presets/event-modelling/templates/constitution-template.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/event-modelling/.specify/presets/event-modelling/templates/plan-template.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/event-modelling/.specify/presets/event-modelling/templates/tasks-template.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/event-modelling/commands/example-map.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/event-modelling/commands/validate-code-against-model.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/event-modelling/docs/speckit-preset.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/standard/.specify/presets/.registry +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/standard/.specify/presets/standard/preset.yml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/standard/.specify/presets/standard/templates/constitution-template.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/standard/docs/adr/0001-record-architecture-decisions.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/standard/docs/speckit-preset.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/standard/skills/adversarial-testing/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/standard/skills/adversarial-testing/resources/attack-catalogue.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/profiles/standard/skills/architecture-decisions/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/README.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/bootstrap/main.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/bootstrap/outputs.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/bootstrap/variables.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/scripts/bootstrap.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/scripts/check-flags.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/scripts/deploy.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/auth0.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/cognito_customers.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/cognito_staff.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/flags.auto.tfvars +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/flags.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/frontend.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/ingress.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/main.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/network.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/no-auth0.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/no-frontend.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/outputs.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/production.tfvars +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/rds.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/staging.tfvars +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/variables.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/aws/service/versions.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/README.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/bootstrap/main.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/bootstrap/outputs.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/bootstrap/variables.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/scripts/bootstrap.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/scripts/check-flags.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/scripts/deploy.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/auth0.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/entra_staff.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/flags.auto.tfvars +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/flags.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/frontend.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/ingress.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/main.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/no-auth0.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/no-frontend.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/outputs.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/postgres.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/production.tfvars +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/staging.tfvars +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/variables.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/targets/azure/service/versions.tf +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/.specify/extensions.yml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/docs/adr/0001-record-architecture-decisions.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/docs/agent-harnesses.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/docs/delegated-agent-safety.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/docs/event-model/README.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/docs/event-model/model.yaml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/docs/event-modeling-to-code.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/docs/first-slice.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/agents/benchmark.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/agents/drive.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/agents/models.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-codegraph.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-constitution.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-decisions.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-imports.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-migrations.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-slice-scope.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-speckit.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-styles.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/check-ux-gates.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/board-plan.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/board-plan.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/check.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/check.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/drawio.test.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/drawio.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/example-model.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/mermaid.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/model.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/package.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/page.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/palette.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/patch-mermaid-swimlanes.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/readme.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/render-drawio.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/render.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/requirements.txt +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/validate.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/event-model/workspace.ts +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/extensions/codegraph/init.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/extensions/guidance.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/extensions/menu.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/extensions/project.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/extensions/uipro/init.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/extensions/ux-gates/init.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/scripts/test_benchmark.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/LICENSE +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/REFERENCES.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/acceptance-review/LICENSE +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/acceptance-review/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/acceptance-review/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/acceptance-review/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/adversarial-testing/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/adversarial-testing/resources/attack-catalogue.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/api-design/LICENSE +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/api-design/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/api-design/resources/api-evolution.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/api-design/resources/api-security.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/api-design/resources/auth-security.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/api-design/resources/http-fundamentals.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/api-design/resources/problem-details.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/api-design/resources/source-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/architecture-decisions/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-design/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-design/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-design/references/adoption-and-granularity.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-design/references/aggregation-and-resilience.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-design/references/alternatives.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-design/references/upstream-identity.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-entry-points/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-entry-points/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-entry-points/references/browser-session-coordination.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-entry-points/references/endpoint-protection.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-entry-points/references/enforcement-and-testing.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-entry-points/references/hexagonal-auth-boundaries.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-entry-points/references/hono-example.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/bff-entry-points/references/realtime-entry-points.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/characterisation-tests/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/characterisation-tests/resources/modern-tooling.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/characterisation-tests/resources/writing-process.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/ci-debugging/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/cli-design/LICENSE +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/cli-design/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/cli-design/resources/composability.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/cli-design/resources/output-architecture.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/cli-design/resources/source-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/cli-design/resources/stream-contracts.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/cli-design/resources/testing-cli.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/codebase-design/LICENSE +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/codebase-design/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/codebase-design/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/codebase-design/references/deepening.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/codebase-design/references/design-it-twice.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/codebase-design/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/debugging/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/debugging/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/debugging/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/diagrams/NOTICE +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/diagrams/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/diagrams/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/resources/aggregate-design.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/resources/bounded-contexts.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/resources/domain-events.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/resources/domain-services.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/resources/error-modeling.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/resources/modelling-process.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/resources/references.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/domain-driven-design/resources/testing-by-layer.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/double-check/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/double-check/resources/brief-template.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/double-check/resources/providers.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/evaluate-existing-solutions/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/evaluate-existing-solutions/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/evaluate-existing-solutions/assets/solution-decision-template.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/evaluate-existing-solutions/references/evaluation-dimensions.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/evaluate-existing-solutions/references/evidence-and-currentness.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-modeling/NOTICE +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-modeling/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-modeling/references/gwt-template.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-modeling/references/nine-steps.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/decider-and-rehydration.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/event-store.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/event-versioning.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/modelling-events.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/production-concerns.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/projections-and-read-models.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/references.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/testing-event-sourced-systems.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/event-sourcing/resources/when-to-use-event-sourcing.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/expectations/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/find-gaps/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/find-skills/LICENSE +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/find-skills/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/find-skills/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/finding-seams/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/finding-seams/resources/creating-seams.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/finding-seams/resources/oop-patterns.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/finding-seams/resources/seam-types.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/folder-structure/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/folder-structure/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/front-end-testing/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/front-end-testing/resources/async-patterns.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/front-end-testing/resources/dom-testing-library-legacy.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/front-end-testing/resources/msw.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/front-end-testing/resources/playwright-e2e.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/frontend-design/LICENSE +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/frontend-design/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/frontend-design/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/functional/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/functional/resources/composition-patterns.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/functional/resources/immutability-catalog.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/global-event-model/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/hexagonal-architecture/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/hexagonal-architecture/resources/cqrs-lite.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/hexagonal-architecture/resources/cross-cutting-concerns.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/hexagonal-architecture/resources/greenfield-sequence.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/hexagonal-architecture/resources/incremental-adoption.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/hexagonal-architecture/resources/references.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/hexagonal-architecture/resources/testing-hex-arch.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/hexagonal-architecture/resources/worked-example.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/improve-codebase-architecture/LICENSE +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/improve-codebase-architecture/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/improve-codebase-architecture/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/improve-codebase-architecture/references/html-report.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/improve-codebase-architecture/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/mutation-testing/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/mutation-testing/resources/mutator-rules.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/observability/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/observability/resources/node-patterns.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/observability/resources/references.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/observability/resources/slo-alerting.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/observability/resources/testing-telemetry.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/planning/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/production-parity-skill-builder/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/production-parity-skill-builder/resources/generated-skill-template.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/production-parity-skill-builder/resources/parity-surface-catalog.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/production-parity-skill-builder/resources/question-patterns.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/react-testing/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/react-testing/resources/testing-library-react-legacy.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/reduce-system-complexity/LICENSE +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/reduce-system-complexity/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/reduce-system-complexity/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/reduce-system-complexity/references/ledger-template.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/reduce-system-complexity/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/refactoring/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/secure-oauth-oidc/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/secure-oauth-oidc/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/secure-oauth-oidc/references/attack-and-test-catalog.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/secure-oauth-oidc/references/oidc-validation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/secure-oauth-oidc/references/review-and-delivery.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/secure-oauth-oidc/references/rfc9700-control-catalog.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/secure-oauth-oidc/references/standards-map.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/specification/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/specification/resources/references.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/specification/resources/spec-review-template.html +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/stack-pull-requests/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/stack-pull-requests/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/stack-pull-requests/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/story-splitting/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/story-splitting/resources/pattern-catalog.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/story-splitting/resources/source-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/storyboard/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/structure-codebase/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/structure-codebase/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/structure-codebase/references/backend-patterns.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/structure-codebase/references/enforcement-and-migration.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/structure-codebase/references/frontend-patterns.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/structure-codebase/references/research-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/structure-codebase/references/visible-hexagon.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/tdd/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/tdd/resources/vitest-watch-feedback.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/teach-me/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/teach-me/resources/assessment-patterns.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/teach-me/resources/course-generation.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/teach-me/resources/html-lessons.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/teach-me/resources/learning-science.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/teach-me/resources/session-management.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/LICENSE +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/resources/agent-docs.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/resources/doc-types.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/resources/docs-quality.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/resources/formatting.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/resources/readme.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/resources/references.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/technical-writing/resources/source-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/test-design-reviewer/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/test-design-reviewer/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/testing/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/twelve-factor/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/twelve-factor/resources/node-patterns.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/typescript-strict/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/ubiquitous-language/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/ubiquitous-language/resources/glossary-format.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/ubiquitous-language/resources/language-protocol.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/web-interface-guidelines/LICENSE +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/web-interface-guidelines/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/web-interface-guidelines/references/guidelines.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/web-interface-guidelines/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/wtf/LICENSE +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/wtf/SKILL.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/wtf/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/assets/toolkit/skills/wtf/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/catalog.json +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/changelog.d/README.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/changelog.d/cruise.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/changelog.d/describe-service.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/changelog.d/drawio-canvas.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/changelog.d/init-pyyaml.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/changelog.d/uipro-extension.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/changelog.d/ux-design-skills.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/changelog.d/ux-gates-extension.md +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/pyproject.toml +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/__init__.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/__main__.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/add_service.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/adopt.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/adopt_report.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/assets.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/axes.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/backends.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/capabilities.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/catalog.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/catch_up.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/changelog.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/cli.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/cli_add.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/cli_adopt.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/cli_prompts.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/converge.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/convergence.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/delivery_facts.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/ecosystems.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/errors.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/examples.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/extensions.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/features.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/images.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/layout.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/manifest.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/migrate.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/naming.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/origin.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/platform.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/preflight.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/probes.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/programme.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/__init__.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/add_commands.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/adopted.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/adopted_ci.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/adopted_targets.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/adversary.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/agents.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/aws_docs.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/azure_docs.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/backing_service_prose.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/backing_services.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/benchmark.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/biome.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/ci_services.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/ci_workflows.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/commands.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/compose.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/composition.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/constitution_journey.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/converge_stage.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/convergence_page.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/cruise_agents.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/cruise_stops.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/cruise_unblock.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/decisions.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/demo_stop.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/deploy_workflow.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/design_page.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/docs.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/docs_index.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/drive_adoption.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/drive_settings.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/entry_stores.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/event_model.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/evolving.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/existing.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/flag_route.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/flags.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/frontend.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/ground_command.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/guidance.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/infra.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/init_production.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/init_script.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/integration.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/languages/__init__.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/languages/go.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/languages/java.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/languages/java_quarkus.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/languages/java_spring.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/languages/python.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/languages/typescript.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/makefile.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/metadata.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/model_targets.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/model_to_code.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/mutation.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/native_commands.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/openapi.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/parallel_slices.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/pin_commands.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/pins.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/production.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/provisioning.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/read_side_layouts.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/renovate.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/repository.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/rules.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/run_skill.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/service_layouts.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/shared_packages.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/skills_page.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/stage_models.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/strangle_command.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/structure_page.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/target_docs.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/whats_next.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/project/where_are_we.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/quick_wins.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/replay.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/resurvey.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/scaffold.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/selection.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/services.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/strategy.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/structure.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/survey.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/targets.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/tooling.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/toolkit.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/upgrade.py +0 -0
- {slipwai-1.2.0.dev23 → slipwai-1.2.0.dev25}/src/slipwai/versions.py +0 -0
- {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.
|
|
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
|
|
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 #
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
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:
|
|
67
|
-
"
|
|
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 =
|
|
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
|
|
179
|
-
|
|
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
|
-
|
|
224
|
+
return []
|
|
182
225
|
state = json.loads(INTEGRATION.read_text())
|
|
183
226
|
keys = state.get("installed_integrations") or [state.get("default_integration")]
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
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
|
|
197
|
-
|
|
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),
|
|
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
|
|
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
|
-
|
|
247
|
-
|
|
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
|
|
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
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
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
|
|
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 = (
|
|
370
|
-
|
|
371
|
-
|
|
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
|
|
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 =
|
|
393
|
-
|
|
394
|
-
|
|
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 =
|
|
398
|
-
template, why = harness_command(harness, sandbox)
|
|
572
|
+
harness, template, why = resolve_harness(sandbox)
|
|
399
573
|
environment = child_environment(harness)
|
|
400
|
-
prompt =
|
|
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
|
|
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"]
|
|
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"{
|
|
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
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
if arguments[
|
|
482
|
-
|
|
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())
|