slipwai 1.2.0.dev44__tar.gz → 1.2.0.dev46__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.dev44 → slipwai-1.2.0.dev46}/PKG-INFO +2 -1
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/README.md +1 -0
- slipwai-1.2.0.dev46/VERSION +1 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/agents/cruise.py +212 -19
- slipwai-1.2.0.dev46/changelog.d/cruise-tell.md +18 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/agent_targets.py +3 -1
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/commands.py +3 -2
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/cruise.py +5 -4
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/cruise_record.py +4 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/cruise_seat.py +35 -3
- slipwai-1.2.0.dev46/src/slipwai/project/cruise_told.py +41 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/gitignore.py +14 -2
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/readme.py +1 -1
- slipwai-1.2.0.dev44/VERSION +0 -1
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/.gitignore +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/CHANGELOG.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/LICENSE +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/NOTICE +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/README.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/adoption/docs/change-strategy.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/adoption/scripts/check-convergence.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/adoption/scripts/ratchet.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/adoption/support.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/adoption/wrappers/gradle/gradle-wrapper.jar.base64 +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/adoption/wrappers/gradle/gradle-wrapper.properties +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/adoption/wrappers/gradle/gradlew +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/adoption/wrappers/gradle/gradlew.bat +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/adoption/wrappers/gradle/source-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/docker-compose.yml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/env.example +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/checkpoint_store_contract.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/checkpoint_store_memory.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/checkpoint_store_memory_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/checkpoint_store_postgres.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/checkpoint_store_postgres_integration_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/checkpoint_store_sqlite.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/checkpoint_store_sqlite_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/config.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/config_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/event_store_contract.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/event_store_memory.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/event_store_memory_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/event_store_postgres.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/event_store_postgres_integration_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/event_store_sqlite.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/event_store_sqlite_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/events.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/http_app.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/http_app_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/http_openapi_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/http_security.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/http_security_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/migrate_main.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/migrate_main_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/migrations_embed.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/migrations_keep +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/oidc_keycloak.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/oidc_keycloak_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/openapi.yaml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/projections.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/projections_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/projections_ticker.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/projections_ticker_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/read_models.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/serve_main.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/tracing.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/tracing_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/users_oidc_keycloak.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/go/users_oidc_keycloak_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/actor.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/append_result.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/causation_id.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/checkpoint_store_memory.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/checkpoint_store_postgres.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/checkpoint_store_sqlite.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/committed_event.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/condition.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/conditional_append_result.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/correlation_id.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/database_url.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/domain_event.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/event_store.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/event_store_exception.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/event_store_memory.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/event_store_memory_database.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/event_store_postgres.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/event_store_sqlite.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/event_visitor.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/http_schema_failure.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/migrate_main.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/oidc_keycloak.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/projection.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/projections.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/read_models.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/tag_query.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/tagged_read.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/tags_of.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/tests/checkpoint_store_contract.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/tests/checkpoint_store_memory_test.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/tests/checkpoint_store_sqlite_test.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/tests/database_url_test.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/tests/event_store_contract.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/tests/event_store_memory_test.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/tests/event_store_sqlite_test.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/tests/oidc_keycloak_test.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/tests/projections_test.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/tests/users_oidc_keycloak_test.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/transactions.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java/users_oidc_keycloak.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-quarkus/config_source_registration +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-quarkus/database_url_config_source.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-quarkus/http_flags_resource.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-quarkus/http_health_check.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-quarkus/http_not_found_mapper.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-quarkus/jta_transactions.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-quarkus/oidc_keycloak_augmentor.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-quarkus/scheduled_projections.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-quarkus/tests/checkpoint_store_postgres_it.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-quarkus/tests/event_store_postgres_it.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-quarkus/tests/http_app_test.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-quarkus/users_current_customer.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-spring/database_url_environment_post_processor.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-spring/environment_post_processor_registration +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-spring/http_flags_controller.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-spring/http_health_indicator.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-spring/http_not_found_advice.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-spring/oidc_keycloak_security.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-spring/scheduled_projections.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-spring/spring_transactions.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-spring/tests/checkpoint_store_postgres_it.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-spring/tests/event_store_postgres_it.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-spring/tests/http_app_test.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/java-spring/users_security.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/keycloak/README.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/keycloak/realms/app.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/keycloak/realms/customers.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/prune.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/checkpoint_store_memory.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/checkpoint_store_postgres.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/checkpoint_store_sqlite.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/event_store_memory.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/event_store_postgres.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/event_store_sqlite.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/events.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/http_app.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/logging_setup.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/main.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/migrations_apply.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/oidc_keycloak.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/openapi-flags.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/openapi.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/openapi_export.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/projections.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/projections_lifespan.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/read_models.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/settings.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tests/checkpoint_store_contract.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tests/conftest.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tests/event_store_contract.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tests/test_checkpoint_store_memory.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tests/test_checkpoint_store_postgres.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tests/test_checkpoint_store_sqlite.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tests/test_event_store_memory.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tests/test_event_store_postgres.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tests/test_event_store_sqlite.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tests/test_http_app.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tests/test_logging_setup.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tests/test_oidc_keycloak.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tests/test_projections.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tests/test_projections_lifespan.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tests/test_settings.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tests/test_tracing.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tests/test_users_oidc_keycloak.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/tracing.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/python/users_oidc_keycloak.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/sql/001_events.sql +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/sql/002_events_append_only.sql +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/sql/003_projection_checkpoints.sql +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/sql/004_event_tags.sql +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/checkpoint-store-memory.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/checkpoint-store-postgres.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/checkpoint-store-sqlite.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/config.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/event-store-memory.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/event-store-postgres.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/event-store-sqlite.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/events.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/http-app.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/main.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/migrations/001_events.js +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/migrations/002_events_append_only.js +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/migrations/003_projection_checkpoints.js +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/migrations/004_event_tags.js +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/oidc-keycloak.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/openapi-export.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/openapi-flags.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/openapi.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/projections-plugin.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/projections.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/read-models.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/tests/checkpoint-store-contract.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/tests/checkpoint-store-memory.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/tests/checkpoint-store-postgres.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/tests/checkpoint-store-sqlite.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/tests/event-store-contract.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/tests/event-store-memory.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/tests/event-store-postgres.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/tests/event-store-sqlite.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/tests/http-app.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/tests/oidc-keycloak.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/tests/projections-plugin.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/tests/projections.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/tests/tracing.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/tests/users-oidc-keycloak.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/tracing.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/users-oidc-keycloak.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/backing-services/typescript/vitest.integration.config.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/api-client/package.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/api-client/src/index.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app/index.html +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app/package.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app/src/App.tsx +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app/src/main.tsx +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app/src/styles/base.css +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app/src/styles/tokens.css +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app/tests/App.test.tsx +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app/tests/setup.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app/tsconfig.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app/vite.config.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app-flags-local/flags.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app-flags-local/flags.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app-flags-target/flags.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app-flags-target/flags.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app-route-client/Home.test.tsx +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app-route-client/Home.tsx +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app-route-plain/Home.test.tsx +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/app-route-plain/Home.tsx +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/features/users-keycloak/src/auth/Account.tsx +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/features/users-keycloak/src/auth/users.tsx +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/features/users-keycloak/tests/auth/Account.test.tsx +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/features/users-keycloak/tests/auth/users.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/locks/frontend-only-users-keycloak.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/locks/frontend-only.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/locks/typescript-backend-fastify-postgres-users-keycloak.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/locks/typescript-backend-fastify-postgres.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/locks/typescript-backend-fastify-users-keycloak.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/locks/typescript-backend-fastify.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/locks/typescript-backend-postgres-users-keycloak.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/locks/typescript-backend-postgres.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/locks/typescript-backend-users-keycloak.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/frontends/react-vite/locks/typescript-backend.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/app/.gremlins.yaml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/app/application/README.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/app/domain/README.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/app/health/health.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/app/health/health_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/event-port/application/ports/events/events.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/event-port/application/ports/events/events_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/accept-child-id-remove-exercise.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/acl-stripe-payment-translation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/aggregate-sizing-occasion.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/aggregate-vs-read-model.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/always-valid-occasion-invariants.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/branded-id-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/create-child-through-root.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/decider-pattern-order.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/describe-order-exhaustive-switch.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/discriminated-union-pledge-result.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/domain-behavioral-tests.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/domain-service-pledge-contribution.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/domain-service-test-pledge-contribution.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/domain-service-vs-use-case.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/entity-rename-occasion.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/error-propagation-through-layers.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/exception-vs-result-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/explicit-return-pledge-no-events.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/fake-vs-mock-repository.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/in-process-event-dispatch.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/integration-test-order-repository.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/invariant-driven-vending-machine.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/money-value-object-factory.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/multiple-error-reasons-union.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/naming-signature-domain-vs-use-case.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/occasion-repository-interface.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/one-aggregate-per-transaction.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/optimistic-locking-repository-save.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/optimistic-locking-version-field.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/order-lifecycle-union.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/outbox-pattern-dispatch.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/pledge-result-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/process-manager-gift-purchase.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/property-based-test-pledge-budget.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/purity-test-domain-vs-presentation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/readonly-array-child-collection.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/shared-kernel-package-layout.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/specification-can-pledge.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/test-decide-order-events.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/test-error-funding-closed.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/test-factory-get-occasion.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/ubiquitous-language-glossary-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/use-case-test-pledge-contribution.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/wrong-catch-rethrow-context.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/wrong-exception-for-business-rule.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/wrong-generic-error-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/domain-driven-design/zod-branded-type-bridging.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/account-decider-and-evolve.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/balance-view-apply-fold.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/balance-view-projection.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/catch-up-checkpoint-transaction.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/command-handler-loop.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/command-handler-retry-loop.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/decide-withdraw-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/decider-behaviour-tests.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/decider-insufficient-funds-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/decider-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/decision-result-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/deposit-money-command-with-timestamp.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/event-envelope-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/event-store-port-interface.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/event-store-port.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/evolve-behaviour-via-withdraw-limit.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/generic-rehydrate-fold.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/idempotent-projection-dedupe.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/in-memory-event-store-fake.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/inline-view-in-append-transaction.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/live-view-bounded-fold.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/order-placed-upcaster.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/projection-behaviour-tests.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/rehydrate-left-fold.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/tags-of-from-identifying-attributes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/todo-list-claiming.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/tolerant-reader-read-path.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/event-sourcing/upcaster-behaviour-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/adapter-error-translation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/antipattern-business-logic-in-adapter.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/antipattern-bypass-adapter.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/antipattern-domain-depends-on-infrastructure.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/antipattern-pattern-shaped-names.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/antipattern-technology-shaped-port.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/composition-root-http-entrypoint.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/composition-root-queue-entrypoint.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/cqrs-lite-dashboard-query-function.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/cqrs-lite-domain-transform-read-data.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-auth-driving-adapter.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-domain-authorization.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-domain-probe-port.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-error-formatting-http.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-technical-telemetry-adapters.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-transactional-persistence-port.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/cross-cutting-use-case-identity.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/dependency-injection-order-placement.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/driven-adapter-and-fake-implementation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/greenfield-driven-port-fake.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/greenfield-driving-port-constant.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/incremental-after-thin-entrypoint.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/incremental-before-tangled-handler.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/incremental-create-adapter.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/incremental-create-use-case.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/incremental-extract-domain-function.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/incremental-extract-port-interface.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/port-interface-definitions.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/reads-vs-writes-query-function-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/testing-create-test-db-helper.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/testing-domain-unit-test-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/testing-fake-order-repo.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/testing-narrow-integration-tests.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/testing-recording-fake-instrumentation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/testing-use-case-primary-boundary.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/worked-example-domain-function-record-pledge.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/worked-example-domain-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/worked-example-domain-unit-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/worked-example-driven-adapters.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/worked-example-driving-adapter-entrypoint.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/worked-example-fakes-for-testing.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/worked-example-port-interfaces.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/worked-example-use-case-orchestration.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/hexagonal-architecture/worked-example-use-case-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/correct-complete-factory-object.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/correct-fresh-state-per-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/correct-import-real-schema.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/correct-inline-tested-through-behavior.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/correct-testing-behavior-public-api.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/coverage-theater-assert-called-only-correct.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/coverage-theater-assert-called-only-wrong.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/coverage-theater-branch-coverage-correct.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/coverage-theater-happy-path-only-wrong.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/coverage-theater-mock-function-under-test-correct.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/coverage-theater-mock-function-under-test-wrong.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/coverage-theater-trivial-getter-setter-correct.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/coverage-theater-trivial-getter-setter-wrong.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/factory-basic-pattern.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/factory-complete-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/factory-composition.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/reach-validation-through-behavior.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/wrong-extracted-helper-with-own-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/wrong-incomplete-factory-object.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/wrong-redefine-schema-in-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/wrong-shared-mutable-fixture.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/examples/testing/wrong-testing-implementation-detail.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/flags/flags/flags.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/flags/flags/flags_test.go +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/modules/base/go.mod +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/modules/base/go.sum +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/modules/postgres/go.mod +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/modules/postgres/go.sum +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/modules/sqlite/go.mod +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/modules/sqlite/go.sum +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/scripts/go-coverage.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/go/scripts/go-mutation.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/build/.gitattributes +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/build/.mvn/wrapper/maven-wrapper.properties +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/build/config/checkstyle.xml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/build/config/pmd-ruleset.xml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/build/config/spotbugs-exclude.xml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/build/mvnw +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/build/mvnw.cmd +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/accept-child-id-remove-exercise.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/acl-stripe-payment-translation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/aggregate-sizing-occasion.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/aggregate-vs-read-model.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/always-valid-occasion-invariants.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/branded-id-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/create-child-through-root.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/decider-pattern-order.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/describe-order-exhaustive-switch.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/discriminated-union-pledge-result.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/domain-behavioral-tests.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/domain-service-pledge-contribution.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/domain-service-test-pledge-contribution.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/domain-service-vs-use-case.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/entity-rename-occasion.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/error-propagation-through-layers.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/exception-vs-result-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/explicit-return-pledge-no-events.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/fake-vs-mock-repository.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/in-process-event-dispatch.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/integration-test-order-repository.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/invariant-driven-vending-machine.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/money-value-object-factory.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/multiple-error-reasons-union.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/naming-signature-domain-vs-use-case.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/occasion-repository-interface.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/one-aggregate-per-transaction.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/optimistic-locking-repository-save.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/optimistic-locking-version-field.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/order-lifecycle-union.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/outbox-pattern-dispatch.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/pledge-result-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/process-manager-gift-purchase.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/property-based-test-pledge-budget.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/purity-test-domain-vs-presentation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/readonly-array-child-collection.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/shared-kernel-package-layout.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/specification-can-pledge.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/test-decide-order-events.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/test-error-funding-closed.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/test-factory-get-occasion.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/ubiquitous-language-glossary-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/use-case-test-pledge-contribution.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/wrong-catch-rethrow-context.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/wrong-exception-for-business-rule.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/wrong-generic-error-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/domain-driven-design/zod-branded-type-bridging.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/account-decider-and-evolve.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/balance-view-apply-fold.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/balance-view-projection.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/catch-up-checkpoint-transaction.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/command-handler-loop.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/command-handler-retry-loop.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/decide-withdraw-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/decider-behaviour-tests.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/decider-insufficient-funds-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/decider-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/decision-result-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/deposit-money-command-with-timestamp.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/event-envelope-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/event-store-port-interface.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/event-store-port.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/evolve-behaviour-via-withdraw-limit.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/generic-rehydrate-fold.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/idempotent-projection-dedupe.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/in-memory-event-store-fake.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/inline-view-in-append-transaction.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/live-view-bounded-fold.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/order-placed-upcaster.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/projection-behaviour-tests.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/rehydrate-left-fold.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/tags-of-from-identifying-attributes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/todo-list-claiming.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/tolerant-reader-read-path.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/event-sourcing/upcaster-behaviour-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/adapter-error-translation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/antipattern-business-logic-in-adapter.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/antipattern-bypass-adapter.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/antipattern-domain-depends-on-infrastructure.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/antipattern-pattern-shaped-names.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/antipattern-technology-shaped-port.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/composition-root-http-entrypoint.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/composition-root-queue-entrypoint.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/cqrs-lite-dashboard-query-function.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/cqrs-lite-domain-transform-read-data.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-auth-driving-adapter.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-domain-authorization.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-domain-probe-port.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-error-formatting-http.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-technical-telemetry-adapters.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-transactional-persistence-port.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/cross-cutting-use-case-identity.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/dependency-injection-order-placement.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/driven-adapter-and-fake-implementation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/greenfield-driven-port-fake.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/greenfield-driving-port-constant.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/incremental-after-thin-entrypoint.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/incremental-before-tangled-handler.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/incremental-create-adapter.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/incremental-create-use-case.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/incremental-extract-domain-function.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/incremental-extract-port-interface.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/port-interface-definitions.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/reads-vs-writes-query-function-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/testing-create-test-db-helper.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/testing-domain-unit-test-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/testing-fake-order-repo.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/testing-narrow-integration-tests.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/testing-recording-fake-instrumentation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/testing-use-case-primary-boundary.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/worked-example-domain-function-record-pledge.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/worked-example-domain-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/worked-example-domain-unit-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/worked-example-driven-adapters.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/worked-example-driving-adapter-entrypoint.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/worked-example-fakes-for-testing.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/worked-example-port-interfaces.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/worked-example-use-case-orchestration.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/hexagonal-architecture/worked-example-use-case-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/correct-complete-factory-object.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/correct-fresh-state-per-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/correct-import-real-schema.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/correct-inline-tested-through-behavior.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/correct-testing-behavior-public-api.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/coverage-theater-assert-called-only-correct.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/coverage-theater-assert-called-only-wrong.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/coverage-theater-branch-coverage-correct.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/coverage-theater-happy-path-only-wrong.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/coverage-theater-mock-function-under-test-correct.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/coverage-theater-mock-function-under-test-wrong.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/coverage-theater-trivial-getter-setter-correct.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/coverage-theater-trivial-getter-setter-wrong.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/factory-basic-pattern.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/factory-complete-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/factory-composition.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/reach-validation-through-behavior.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/wrong-extracted-helper-with-own-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/wrong-incomplete-factory-object.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/wrong-redefine-schema-in-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/wrong-shared-mutable-fixture.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/examples/testing/wrong-testing-implementation-detail.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/flags/src/main/java/com/example/deliverystarter/flags/Flags.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java/flags/src/test/java/com/example/deliverystarter/flags/FlagsTest.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java-quarkus/app/pom.xml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java-quarkus/app/src/main/java/com/example/deliverystarter/application/README.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java-quarkus/app/src/main/java/com/example/deliverystarter/domain/README.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java-quarkus/app/src/main/java/com/example/deliverystarter/health/HealthStatus.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java-quarkus/app/src/main/resources/application.properties +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java-quarkus/app/src/test/java/com/example/deliverystarter/health/HealthStatusTest.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java-spring/app/pom.xml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java-spring/app/src/main/java/com/example/deliverystarter/ServiceApplication.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java-spring/app/src/main/java/com/example/deliverystarter/application/README.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java-spring/app/src/main/java/com/example/deliverystarter/domain/README.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java-spring/app/src/main/java/com/example/deliverystarter/health/HealthStatus.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java-spring/app/src/main/resources/application.properties +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/java-spring/app/src/test/java/com/example/deliverystarter/health/HealthStatusTest.java +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/app/pyproject.toml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/app/src/delivery_starter/__init__.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/app/src/delivery_starter/application/README.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/app/src/delivery_starter/domain/README.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/app/tests/test_health.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/event-port/src/delivery_starter/application/ports/events.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/event-port/tests/test_events.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/accept-child-id-remove-exercise.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/acl-stripe-payment-translation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/aggregate-sizing-occasion.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/aggregate-vs-read-model.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/always-valid-occasion-invariants.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/branded-id-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/create-child-through-root.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/decider-pattern-order.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/describe-order-exhaustive-switch.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/discriminated-union-pledge-result.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/domain-behavioral-tests.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/domain-service-pledge-contribution.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/domain-service-test-pledge-contribution.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/domain-service-vs-use-case.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/entity-rename-occasion.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/error-propagation-through-layers.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/exception-vs-result-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/explicit-return-pledge-no-events.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/fake-vs-mock-repository.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/in-process-event-dispatch.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/integration-test-order-repository.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/invariant-driven-vending-machine.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/money-value-object-factory.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/multiple-error-reasons-union.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/naming-signature-domain-vs-use-case.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/occasion-repository-interface.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/one-aggregate-per-transaction.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/optimistic-locking-repository-save.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/optimistic-locking-version-field.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/order-lifecycle-union.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/outbox-pattern-dispatch.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/pledge-result-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/process-manager-gift-purchase.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/property-based-test-pledge-budget.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/purity-test-domain-vs-presentation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/readonly-array-child-collection.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/shared-kernel-package-layout.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/specification-can-pledge.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/test-decide-order-events.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/test-error-funding-closed.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/test-factory-get-occasion.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/ubiquitous-language-glossary-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/use-case-test-pledge-contribution.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/wrong-catch-rethrow-context.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/wrong-exception-for-business-rule.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/wrong-generic-error-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/domain-driven-design/zod-branded-type-bridging.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/account-decider-and-evolve.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/balance-view-apply-fold.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/balance-view-projection.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/catch-up-checkpoint-transaction.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/command-handler-loop.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/command-handler-retry-loop.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/decide-withdraw-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/decider-behaviour-tests.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/decider-insufficient-funds-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/decider-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/decision-result-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/deposit-money-command-with-timestamp.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/event-envelope-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/event-store-port-interface.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/event-store-port.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/evolve-behaviour-via-withdraw-limit.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/generic-rehydrate-fold.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/idempotent-projection-dedupe.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/in-memory-event-store-fake.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/inline-view-in-append-transaction.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/live-view-bounded-fold.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/order-placed-upcaster.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/projection-behaviour-tests.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/rehydrate-left-fold.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/tags-of-from-identifying-attributes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/todo-list-claiming.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/tolerant-reader-read-path.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/event-sourcing/upcaster-behaviour-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/adapter-error-translation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/antipattern-business-logic-in-adapter.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/antipattern-bypass-adapter.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/antipattern-domain-depends-on-infrastructure.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/antipattern-pattern-shaped-names.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/antipattern-technology-shaped-port.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/composition-root-http-entrypoint.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/composition-root-queue-entrypoint.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/cqrs-lite-dashboard-query-function.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/cqrs-lite-domain-transform-read-data.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-auth-driving-adapter.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-domain-authorization.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-domain-probe-port.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-error-formatting-http.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-technical-telemetry-adapters.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-transactional-persistence-port.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/cross-cutting-use-case-identity.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/dependency-injection-order-placement.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/driven-adapter-and-fake-implementation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/greenfield-driven-port-fake.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/greenfield-driving-port-constant.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/incremental-after-thin-entrypoint.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/incremental-before-tangled-handler.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/incremental-create-adapter.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/incremental-create-use-case.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/incremental-extract-domain-function.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/incremental-extract-port-interface.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/port-interface-definitions.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/reads-vs-writes-query-function-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/testing-create-test-db-helper.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/testing-domain-unit-test-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/testing-fake-order-repo.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/testing-narrow-integration-tests.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/testing-recording-fake-instrumentation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/testing-use-case-primary-boundary.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/worked-example-domain-function-record-pledge.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/worked-example-domain-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/worked-example-domain-unit-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/worked-example-driven-adapters.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/worked-example-driving-adapter-entrypoint.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/worked-example-fakes-for-testing.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/worked-example-port-interfaces.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/worked-example-use-case-orchestration.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/hexagonal-architecture/worked-example-use-case-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/correct-complete-factory-object.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/correct-fresh-state-per-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/correct-import-real-schema.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/correct-inline-tested-through-behavior.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/correct-testing-behavior-public-api.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/coverage-theater-assert-called-only-correct.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/coverage-theater-assert-called-only-wrong.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/coverage-theater-branch-coverage-correct.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/coverage-theater-happy-path-only-wrong.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/coverage-theater-mock-function-under-test-correct.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/coverage-theater-mock-function-under-test-wrong.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/coverage-theater-trivial-getter-setter-correct.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/coverage-theater-trivial-getter-setter-wrong.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/factory-basic-pattern.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/factory-complete-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/factory-composition.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/reach-validation-through-behavior.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/wrong-extracted-helper-with-own-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/wrong-incomplete-factory-object.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/wrong-redefine-schema-in-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/wrong-shared-mutable-fixture.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/examples/testing/wrong-testing-implementation-detail.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/flags/src/delivery_starter/flags.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/flags/tests/test_flags.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/locks/uv-fastapi-postgres.lock +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/locks/uv-fastapi.lock +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/locks/uv-postgres.lock +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/python/locks/uv.lock +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/app/package.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/app/src/application/README.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/app/src/domain/README.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/app/src/health.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/app/tests/health.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/biome/biome.jsonc +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/biome/domain-purity.grit +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/accept-child-id-remove-exercise.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/acl-stripe-payment-translation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/aggregate-sizing-occasion.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/aggregate-vs-read-model.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/always-valid-occasion-invariants.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/branded-id-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/create-child-through-root.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/decider-pattern-order.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/describe-order-exhaustive-switch.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/discriminated-union-pledge-result.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/domain-behavioral-tests.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/domain-service-pledge-contribution.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/domain-service-test-pledge-contribution.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/domain-service-vs-use-case.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/entity-rename-occasion.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/error-propagation-through-layers.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/exception-vs-result-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/explicit-return-pledge-no-events.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/fake-vs-mock-repository.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/in-process-event-dispatch.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/integration-test-order-repository.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/invariant-driven-vending-machine.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/money-value-object-factory.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/multiple-error-reasons-union.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/naming-signature-domain-vs-use-case.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/occasion-repository-interface.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/one-aggregate-per-transaction.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/optimistic-locking-repository-save.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/optimistic-locking-version-field.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/order-lifecycle-union.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/outbox-pattern-dispatch.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/pledge-result-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/process-manager-gift-purchase.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/property-based-test-pledge-budget.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/purity-test-domain-vs-presentation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/readonly-array-child-collection.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/shared-kernel-package-layout.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/specification-can-pledge.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/test-decide-order-events.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/test-error-funding-closed.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/test-factory-get-occasion.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/ubiquitous-language-glossary-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/use-case-test-pledge-contribution.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/wrong-catch-rethrow-context.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/wrong-exception-for-business-rule.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/wrong-generic-error-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/domain-driven-design/zod-branded-type-bridging.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/account-decider-and-evolve.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/balance-view-apply-fold.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/balance-view-projection.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/catch-up-checkpoint-transaction.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/command-handler-loop.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/command-handler-retry-loop.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/decide-withdraw-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/decider-behaviour-tests.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/decider-insufficient-funds-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/decider-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/decision-result-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/deposit-money-command-with-timestamp.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/event-envelope-type.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/event-store-port-interface.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/event-store-port.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/evolve-behaviour-via-withdraw-limit.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/generic-rehydrate-fold.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/idempotent-projection-dedupe.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/in-memory-event-store-fake.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/inline-view-in-append-transaction.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/live-view-bounded-fold.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/order-placed-upcaster.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/projection-behaviour-tests.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/rehydrate-left-fold.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/tags-of-from-identifying-attributes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/todo-list-claiming.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/tolerant-reader-read-path.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/event-sourcing/upcaster-behaviour-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/adapter-error-translation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/antipattern-business-logic-in-adapter.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/antipattern-bypass-adapter.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/antipattern-domain-depends-on-infrastructure.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/antipattern-pattern-shaped-names.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/antipattern-technology-shaped-port.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/composition-root-http-entrypoint.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/composition-root-queue-entrypoint.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/cqrs-lite-dashboard-query-function.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/cqrs-lite-domain-transform-read-data.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-auth-driving-adapter.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-domain-authorization.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-domain-probe-port.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-error-formatting-http.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-technical-telemetry-adapters.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-transactional-persistence-port.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/cross-cutting-use-case-identity.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/dependency-injection-order-placement.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/driven-adapter-and-fake-implementation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/greenfield-driven-port-fake.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/greenfield-driving-port-constant.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/incremental-after-thin-entrypoint.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/incremental-before-tangled-handler.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/incremental-create-adapter.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/incremental-create-use-case.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/incremental-extract-domain-function.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/incremental-extract-port-interface.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/port-interface-definitions.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/reads-vs-writes-query-function-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/testing-create-test-db-helper.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/testing-domain-unit-test-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/testing-fake-order-repo.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/testing-narrow-integration-tests.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/testing-recording-fake-instrumentation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/testing-use-case-primary-boundary.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-domain-function-record-pledge.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-domain-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-domain-unit-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-driven-adapters.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-driving-adapter-entrypoint.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-fakes-for-testing.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-port-interfaces.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-use-case-orchestration.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/hexagonal-architecture/worked-example-use-case-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/correct-complete-factory-object.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/correct-fresh-state-per-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/correct-import-real-schema.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/correct-inline-tested-through-behavior.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/correct-testing-behavior-public-api.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/coverage-theater-assert-called-only-correct.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/coverage-theater-assert-called-only-wrong.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/coverage-theater-branch-coverage-correct.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/coverage-theater-happy-path-only-wrong.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/coverage-theater-mock-function-under-test-correct.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/coverage-theater-mock-function-under-test-wrong.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/coverage-theater-trivial-getter-setter-correct.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/coverage-theater-trivial-getter-setter-wrong.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/factory-basic-pattern.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/factory-complete-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/factory-composition.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/reach-validation-through-behavior.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/wrong-extracted-helper-with-own-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/wrong-incomplete-factory-object.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/wrong-redefine-schema-in-test.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/wrong-shared-mutable-fixture.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/examples/testing/wrong-testing-implementation-detail.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/flags/src/flags.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/flags/tests/flags.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/locks/package-lock-fastify-postgres.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/locks/package-lock-fastify.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/locks/package-lock-postgres.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/languages/typescript/locks/package-lock.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/profiles/event-modelling/.specify/presets/.registry +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/profiles/event-modelling/.specify/presets/event-modelling/preset.yml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/profiles/event-modelling/.specify/presets/event-modelling/templates/constitution-template.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/profiles/event-modelling/.specify/presets/event-modelling/templates/plan-template.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/profiles/event-modelling/.specify/presets/event-modelling/templates/tasks-template.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/profiles/event-modelling/commands/example-map.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/profiles/event-modelling/commands/validate-code-against-model.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/profiles/event-modelling/docs/speckit-preset.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/profiles/standard/.specify/presets/.registry +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/profiles/standard/.specify/presets/standard/preset.yml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/profiles/standard/.specify/presets/standard/templates/constitution-template.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/profiles/standard/docs/adr/0001-record-architecture-decisions.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/profiles/standard/docs/speckit-preset.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/profiles/standard/skills/adversarial-testing/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/profiles/standard/skills/adversarial-testing/resources/attack-catalogue.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/profiles/standard/skills/architecture-decisions/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/README.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/bootstrap/main.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/bootstrap/outputs.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/bootstrap/variables.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/scripts/bootstrap.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/scripts/check-flags.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/scripts/deploy.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/service/auth0.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/service/cognito_customers.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/service/cognito_staff.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/service/flags.auto.tfvars +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/service/flags.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/service/frontend.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/service/ingress.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/service/main.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/service/network.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/service/no-auth0.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/service/no-frontend.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/service/outputs.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/service/production.tfvars +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/service/rds.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/service/staging.tfvars +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/service/variables.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/aws/service/versions.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/README.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/bootstrap/main.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/bootstrap/outputs.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/bootstrap/variables.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/scripts/bootstrap.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/scripts/check-flags.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/scripts/deploy.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/service/auth0.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/service/entra_staff.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/service/flags.auto.tfvars +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/service/flags.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/service/frontend.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/service/ingress.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/service/main.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/service/no-auth0.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/service/no-frontend.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/service/outputs.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/service/postgres.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/service/production.tfvars +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/service/staging.tfvars +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/service/variables.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/targets/azure/service/versions.tf +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/.specify/extensions.yml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/docs/adr/0001-record-architecture-decisions.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/docs/agent-harnesses.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/docs/delegated-agent-safety.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/docs/event-model/README.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/docs/event-model/model.yaml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/docs/event-modeling-to-code.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/docs/first-slice.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/agents/benchmark.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/agents/drive.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/agents/models.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/agents/project.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/agents/registry.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/check-codegraph.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/check-constitution.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/check-decisions.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/check-imports.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/check-migrations.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/check-slice-scope.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/check-speckit.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/check-styles.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/check-ux-gates.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/board-plan.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/board-plan.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/check.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/check.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/drawio.test.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/drawio.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/example-model.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/mermaid.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/model.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/package.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/page.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/palette.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/patch-mermaid-swimlanes.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/readme.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/render-drawio.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/render.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/requirements.txt +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/validate.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/event-model/workspace.ts +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/extensions/codegraph/init.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/extensions/guidance.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/extensions/menu.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/extensions/project.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/extensions/uipro/init.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/extensions/ux-gates/init.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/scripts/test_benchmark.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/LICENSE +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/REFERENCES.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/acceptance-review/LICENSE +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/acceptance-review/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/acceptance-review/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/acceptance-review/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/adversarial-testing/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/adversarial-testing/resources/attack-catalogue.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/api-design/LICENSE +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/api-design/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/api-design/resources/api-evolution.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/api-design/resources/api-security.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/api-design/resources/auth-security.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/api-design/resources/http-fundamentals.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/api-design/resources/problem-details.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/api-design/resources/source-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/architecture-decisions/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/bff-design/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/bff-design/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/bff-design/references/adoption-and-granularity.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/bff-design/references/aggregation-and-resilience.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/bff-design/references/alternatives.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/bff-design/references/upstream-identity.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/bff-entry-points/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/bff-entry-points/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/bff-entry-points/references/browser-session-coordination.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/bff-entry-points/references/endpoint-protection.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/bff-entry-points/references/enforcement-and-testing.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/bff-entry-points/references/hexagonal-auth-boundaries.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/bff-entry-points/references/hono-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/bff-entry-points/references/realtime-entry-points.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/characterisation-tests/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/characterisation-tests/resources/modern-tooling.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/characterisation-tests/resources/writing-process.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/ci-debugging/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/cli-design/LICENSE +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/cli-design/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/cli-design/resources/composability.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/cli-design/resources/output-architecture.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/cli-design/resources/source-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/cli-design/resources/stream-contracts.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/cli-design/resources/testing-cli.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/codebase-design/LICENSE +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/codebase-design/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/codebase-design/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/codebase-design/references/deepening.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/codebase-design/references/design-it-twice.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/codebase-design/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/debugging/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/debugging/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/debugging/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/diagrams/NOTICE +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/diagrams/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/diagrams/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/domain-driven-design/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/domain-driven-design/resources/aggregate-design.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/domain-driven-design/resources/bounded-contexts.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/domain-driven-design/resources/domain-events.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/domain-driven-design/resources/domain-services.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/domain-driven-design/resources/error-modeling.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/domain-driven-design/resources/modelling-process.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/domain-driven-design/resources/references.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/domain-driven-design/resources/testing-by-layer.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/double-check/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/double-check/resources/brief-template.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/double-check/resources/providers.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/evaluate-existing-solutions/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/evaluate-existing-solutions/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/evaluate-existing-solutions/assets/solution-decision-template.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/evaluate-existing-solutions/references/evaluation-dimensions.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/evaluate-existing-solutions/references/evidence-and-currentness.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/event-modeling/NOTICE +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/event-modeling/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/event-modeling/references/gwt-template.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/event-modeling/references/nine-steps.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/event-sourcing/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/event-sourcing/resources/decider-and-rehydration.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/event-sourcing/resources/event-store.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/event-sourcing/resources/event-versioning.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/event-sourcing/resources/modelling-events.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/event-sourcing/resources/production-concerns.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/event-sourcing/resources/projections-and-read-models.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/event-sourcing/resources/references.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/event-sourcing/resources/testing-event-sourced-systems.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/event-sourcing/resources/when-to-use-event-sourcing.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/expectations/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/find-gaps/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/find-skills/LICENSE +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/find-skills/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/find-skills/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/finding-seams/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/finding-seams/resources/creating-seams.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/finding-seams/resources/oop-patterns.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/finding-seams/resources/seam-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/folder-structure/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/folder-structure/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/front-end-testing/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/front-end-testing/resources/async-patterns.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/front-end-testing/resources/dom-testing-library-legacy.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/front-end-testing/resources/msw.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/front-end-testing/resources/playwright-e2e.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/frontend-design/LICENSE +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/frontend-design/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/frontend-design/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/functional/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/functional/resources/composition-patterns.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/functional/resources/immutability-catalog.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/global-event-model/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/hexagonal-architecture/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/hexagonal-architecture/resources/cqrs-lite.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/hexagonal-architecture/resources/cross-cutting-concerns.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/hexagonal-architecture/resources/greenfield-sequence.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/hexagonal-architecture/resources/incremental-adoption.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/hexagonal-architecture/resources/references.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/hexagonal-architecture/resources/testing-hex-arch.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/hexagonal-architecture/resources/worked-example.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/improve-codebase-architecture/LICENSE +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/improve-codebase-architecture/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/improve-codebase-architecture/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/improve-codebase-architecture/references/html-report.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/improve-codebase-architecture/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/mutation-testing/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/mutation-testing/resources/mutator-rules.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/observability/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/observability/resources/node-patterns.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/observability/resources/references.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/observability/resources/slo-alerting.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/observability/resources/testing-telemetry.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/planning/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/production-parity-skill-builder/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/production-parity-skill-builder/resources/generated-skill-template.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/production-parity-skill-builder/resources/parity-surface-catalog.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/production-parity-skill-builder/resources/question-patterns.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/react-testing/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/react-testing/resources/testing-library-react-legacy.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/reduce-system-complexity/LICENSE +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/reduce-system-complexity/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/reduce-system-complexity/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/reduce-system-complexity/references/ledger-template.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/reduce-system-complexity/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/refactoring/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/secure-oauth-oidc/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/secure-oauth-oidc/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/secure-oauth-oidc/references/attack-and-test-catalog.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/secure-oauth-oidc/references/oidc-validation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/secure-oauth-oidc/references/review-and-delivery.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/secure-oauth-oidc/references/rfc9700-control-catalog.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/secure-oauth-oidc/references/standards-map.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/specification/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/specification/resources/references.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/specification/resources/spec-review-template.html +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/stack-pull-requests/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/stack-pull-requests/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/stack-pull-requests/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/story-splitting/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/story-splitting/resources/pattern-catalog.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/story-splitting/resources/source-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/storyboard/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/structure-codebase/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/structure-codebase/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/structure-codebase/references/backend-patterns.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/structure-codebase/references/enforcement-and-migration.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/structure-codebase/references/frontend-patterns.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/structure-codebase/references/research-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/structure-codebase/references/visible-hexagon.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/tdd/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/tdd/resources/vitest-watch-feedback.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/teach-me/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/teach-me/resources/assessment-patterns.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/teach-me/resources/course-generation.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/teach-me/resources/html-lessons.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/teach-me/resources/learning-science.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/teach-me/resources/session-management.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/technical-writing/LICENSE +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/technical-writing/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/technical-writing/resources/agent-docs.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/technical-writing/resources/doc-types.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/technical-writing/resources/docs-quality.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/technical-writing/resources/formatting.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/technical-writing/resources/readme.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/technical-writing/resources/references.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/technical-writing/resources/source-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/test-design-reviewer/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/test-design-reviewer/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/testing/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/twelve-factor/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/twelve-factor/resources/node-patterns.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/typescript-strict/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/ubiquitous-language/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/ubiquitous-language/resources/glossary-format.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/ubiquitous-language/resources/language-protocol.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/web-interface-guidelines/LICENSE +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/web-interface-guidelines/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/web-interface-guidelines/references/guidelines.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/web-interface-guidelines/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/wtf/LICENSE +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/wtf/SKILL.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/wtf/agents/openai.yaml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/assets/toolkit/skills/wtf/references/source-notes.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/catalog.json +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/changelog.d/README.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/changelog.d/benchmark-brackets.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/changelog.d/bosun-decisions-gate.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/changelog.d/code-index-in-headless.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/changelog.d/cruise-runner-everywhere.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/changelog.d/cruise-sweep.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/changelog.d/cruise-watch-seat.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/changelog.d/cruise.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/changelog.d/describe-service.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/changelog.d/drawio-canvas.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/changelog.d/init-pyyaml.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/changelog.d/uipro-extension.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/changelog.d/ux-design-skills.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/changelog.d/ux-gates-extension.md +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/pyproject.toml +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/__init__.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/__main__.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/add_service.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/adopt.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/adopt_report.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/assets.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/axes.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/backends.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/capabilities.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/catalog.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/catch_up.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/changelog.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/cli.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/cli_add.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/cli_adopt.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/cli_prompts.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/converge.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/convergence.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/delivery_facts.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/ecosystems.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/errors.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/examples.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/extensions.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/features.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/images.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/layout.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/manifest.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/migrate.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/naming.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/origin.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/platform.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/preflight.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/probes.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/programme.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/__init__.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/add_commands.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/adopted.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/adopted_ci.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/adopted_targets.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/adversary.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/agent_settings.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/agents.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/aws_docs.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/azure_docs.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/backing_service_prose.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/backing_services.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/benchmark.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/biome.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/ci_services.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/ci_workflows.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/compose.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/composition.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/constitution_journey.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/converge_stage.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/convergence_page.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/cruise_agents.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/cruise_hand.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/cruise_stops.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/cruise_unblock.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/decisions.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/demo_stop.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/deploy_workflow.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/design_page.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/docs.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/docs_index.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/drive_adoption.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/drive_settings.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/entry_stores.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/event_model.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/evolving.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/existing.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/flag_route.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/flags.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/frontend.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/ground_command.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/guidance.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/infra.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/init_production.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/init_script.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/integration.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/languages/__init__.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/languages/go.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/languages/java.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/languages/java_quarkus.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/languages/java_spring.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/languages/python.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/languages/typescript.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/makefile.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/metadata.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/model_targets.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/model_to_code.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/mutation.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/native_commands.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/openapi.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/parallel_slices.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/pin_commands.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/pins.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/production.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/provisioning.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/read_side_layouts.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/renovate.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/repository.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/rules.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/run_skill.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/service_layouts.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/shared_packages.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/skills_page.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/stage_models.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/strangle_command.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/structure_page.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/target_docs.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/whats_next.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/project/where_are_we.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/quick_wins.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/replay.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/resurvey.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/scaffold.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/selection.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/services.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/strategy.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/structure.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/survey.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/targets.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/tooling.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/toolkit.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/upgrade.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/src/slipwai/versions.py +0 -0
- {slipwai-1.2.0.dev44 → slipwai-1.2.0.dev46}/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.dev46
|
|
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
|
|
@@ -274,6 +274,7 @@ the paths and toolchains named in them are real.
|
|
|
274
274
|
| `/cruise-settings` | Shows or changes how `/cruise` runs: who decides, how it releases, what it demos with, when it parks |
|
|
275
275
|
| `/cruise-status` | Says whether a `/cruise` runner is running, how its last iteration ended, and shows the tail of its feed |
|
|
276
276
|
| `/cruise-stop` | Ends a `/cruise` run after the iteration in flight, or at once with `now` |
|
|
277
|
+
| `/cruise-tell` | Queues a message for a running `/cruise`, which the next iteration carries; `--now` ends the iteration in flight for it |
|
|
277
278
|
|
|
278
279
|
[The delivery loop](docs/delivery-loop.md) describes each one in full, and the ladder they sit on.
|
|
279
280
|
|
|
@@ -245,6 +245,7 @@ the paths and toolchains named in them are real.
|
|
|
245
245
|
| `/cruise-settings` | Shows or changes how `/cruise` runs: who decides, how it releases, what it demos with, when it parks |
|
|
246
246
|
| `/cruise-status` | Says whether a `/cruise` runner is running, how its last iteration ended, and shows the tail of its feed |
|
|
247
247
|
| `/cruise-stop` | Ends a `/cruise` run after the iteration in flight, or at once with `now` |
|
|
248
|
+
| `/cruise-tell` | Queues a message for a running `/cruise`, which the next iteration carries; `--now` ends the iteration in flight for it |
|
|
248
249
|
|
|
249
250
|
[The delivery loop](docs/delivery-loop.md) describes each one in full, and the ladder they sit on.
|
|
250
251
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.2.0.dev46
|
|
@@ -16,6 +16,8 @@ with `start`, and the session that typed it runs no stage of the ladder.
|
|
|
16
16
|
python3 scripts/agents/cruise.py start [--feature F] [--no-park] [--sandbox] [kick-off…] # the loop, detached
|
|
17
17
|
python3 scripts/agents/cruise.py watch [--minutes M] [--quiet S] # the watch seat: the feed since the last watch
|
|
18
18
|
python3 scripts/agents/cruise.py stop [--now] # end the run after the iteration in flight, or now
|
|
19
|
+
python3 scripts/agents/cruise.py tell [--now] <message…> # queue a message for the next iteration; --now ends the one in flight
|
|
20
|
+
python3 scripts/agents/cruise.py told # inside an iteration: what a person queued since it started, or nothing
|
|
19
21
|
python3 scripts/agents/cruise.py status # whether a runner is running, and what the log says it is doing
|
|
20
22
|
python3 scripts/agents/cruise.py denials # every command an iteration was refused, from the stream: what to allow
|
|
21
23
|
python3 scripts/agents/cruise.py resume # print the checkpoint into a compacted context; nothing when none
|
|
@@ -40,7 +42,11 @@ harness.
|
|
|
40
42
|
|
|
41
43
|
A person stops a run with `touch .specify/cruise.stop` (`stop`), or by interrupting a foreground `run`: the
|
|
42
44
|
iteration under way is killed, its increment commits are on the slice branch, and the next iteration re-derives
|
|
43
|
-
from disk.
|
|
45
|
+
from disk. A person steers a run with `tell`: the message is queued in `.specify/cruise-inbox.jsonl`, and the
|
|
46
|
+
next iteration carries it as `told: <message>` in its argument — the route the kick-off takes — so nothing
|
|
47
|
+
interrupts the iteration in flight unless `--now` says to, which ends that iteration the way `stop --now` does
|
|
48
|
+
and starts the next at once with the message. An iteration can also ask for what was queued since it started
|
|
49
|
+
(`told`), between stages, without waiting for its end. Every message delivered is in the iteration's log entry.
|
|
44
50
|
"""
|
|
45
51
|
|
|
46
52
|
from __future__ import annotations
|
|
@@ -94,6 +100,11 @@ MCP_CONFIG = ROOT / ".mcp.json"
|
|
|
94
100
|
WATCH_CURSOR = ROOT / ".specify/cruise-watch.cursor"
|
|
95
101
|
# The last message a harness's after-response hook saw, for a stop hook whose event does not carry it.
|
|
96
102
|
LAST_RESPONSE = ROOT / ".specify/cruise-last-response.txt"
|
|
103
|
+
# What a person queued for the run (`tell`), one JSON line per message, until an iteration takes it: the runner
|
|
104
|
+
# before it starts one, or the iteration itself between stages (`told`). What was taken waits in the second file
|
|
105
|
+
# until the runner writes the iteration's log entry, so every message delivered is on the record whichever took it.
|
|
106
|
+
INBOX = ROOT / ".specify/cruise-inbox.jsonl"
|
|
107
|
+
TOLD = ROOT / ".specify/cruise-told.jsonl"
|
|
97
108
|
LOG = ROOT / "specs/cruise-log.jsonl"
|
|
98
109
|
# The iteration in flight, rewritten by `/cruise` at every stage boundary so a compacted context can resume.
|
|
99
110
|
CHECKPOINT = ROOT / "specs/cruise-checkpoint.md"
|
|
@@ -168,6 +179,11 @@ ABSENT = f"no {CONFIG.relative_to(ROOT)}: /cruise is not enabled here; `slipwai
|
|
|
168
179
|
PARENT_SESSION_VARIABLES = ("CLAUDECODE", "CLAUDE_CODE_ENTRYPOINT")
|
|
169
180
|
# The iteration under way, so a SIGTERM to the runner ends it too rather than orphaning a harness session.
|
|
170
181
|
CURRENT: subprocess.Popen[str] | None = None
|
|
182
|
+
# Set by the SIGUSR1 handler (`tell --now`) while an iteration was under way: it was ended for a person's message,
|
|
183
|
+
# which the runner says in its log entry instead of reading its missing last line as no progress.
|
|
184
|
+
INTERRUPTED = False
|
|
185
|
+
# The word an iteration's argument carries a person's message under, beside `unblock:`, as `commands/cruise.md` spells it.
|
|
186
|
+
TOLD_WORD = "told:"
|
|
171
187
|
|
|
172
188
|
|
|
173
189
|
def now() -> str:
|
|
@@ -432,7 +448,7 @@ def fingerprint() -> str:
|
|
|
432
448
|
status = subprocess.run(["git", "status", "--porcelain", "--untracked-files=all"], cwd=ROOT, text=True,
|
|
433
449
|
capture_output=True)
|
|
434
450
|
own = tuple(path.relative_to(ROOT).as_posix()
|
|
435
|
-
for path in (LOG, CHECKPOINT, PID, RUN_LOG, STREAM, WATCH_CURSOR, LAST_RESPONSE))
|
|
451
|
+
for path in (LOG, CHECKPOINT, PID, RUN_LOG, STREAM, WATCH_CURSOR, LAST_RESPONSE, INBOX, TOLD))
|
|
436
452
|
digest.update("\n".join(line for line in status.stdout.splitlines() if not line.endswith(own)).encode())
|
|
437
453
|
specs = ROOT / "specs"
|
|
438
454
|
for path in sorted(specs.rglob("*")) if specs.is_dir() else []:
|
|
@@ -678,15 +694,17 @@ def iterate(template: str, prompt: str, environment: dict[str, str], iteration:
|
|
|
678
694
|
raw.close()
|
|
679
695
|
# What the session left running — the app its demo started, which the ladder leaves up for a person who
|
|
680
696
|
# is not coming, a watcher — is ended with the iteration, or the next one finds the port taken. The group
|
|
681
|
-
# outlives its leader while any member does, so a signal that lands is the sign something was left
|
|
697
|
+
# outlives its leader while any member does, so a signal that lands is the sign something was left — unless
|
|
698
|
+
# the group was ended for a person's message, in which case whatever is still dying was ended on purpose.
|
|
682
699
|
try:
|
|
683
700
|
os.killpg(process.pid, signal.SIGTERM)
|
|
684
701
|
except ProcessLookupError:
|
|
685
702
|
pass
|
|
686
703
|
else:
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
704
|
+
if not INTERRUPTED:
|
|
705
|
+
sys.stdout.write(f"{time.strftime('%H:%M:%S')} cruise: iteration {iteration} left a process running — "
|
|
706
|
+
"a dev server, a watcher — and it was ended with the iteration\n")
|
|
707
|
+
sys.stdout.flush()
|
|
690
708
|
return feed.last
|
|
691
709
|
|
|
692
710
|
|
|
@@ -829,17 +847,26 @@ def stopping() -> None:
|
|
|
829
847
|
|
|
830
848
|
|
|
831
849
|
def park(reason: str, no_park: bool, poll: float, seen: str) -> None:
|
|
832
|
-
"""Wait for a person: the stop file ends the run, a change under specs/ resumes it, `--no-park`
|
|
850
|
+
"""Wait for a person: the stop file ends the run, a change under specs/ or a message resumes it, `--no-park`
|
|
851
|
+
exits 3. The tree is re-read every poll; the stop file and the inbox every second, because a person who typed
|
|
852
|
+
something into a parked run is waiting for it and `poll_minutes` is sized for a tree nobody is touching."""
|
|
833
853
|
print(f"cruise: parked — {reason}")
|
|
834
854
|
if no_park:
|
|
835
855
|
raise SystemExit(PARKED_EXIT)
|
|
836
|
-
print(f"cruise: waiting; `touch {relative(STOP)}` ends the run, a change under specs
|
|
837
|
-
"resumes it", flush=True)
|
|
856
|
+
print(f"cruise: waiting; `touch {relative(STOP)}` ends the run, a change under specs/, a commit or a message "
|
|
857
|
+
"(`python3 scripts/agents/cruise.py tell …`) resumes it", flush=True)
|
|
838
858
|
while True:
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
859
|
+
slept = 0.0
|
|
860
|
+
while slept < poll:
|
|
861
|
+
step = min(1.0, poll - slept)
|
|
862
|
+
time.sleep(step)
|
|
863
|
+
slept += step
|
|
864
|
+
if STOP.is_file():
|
|
865
|
+
print("cruise: stopped by human")
|
|
866
|
+
raise SystemExit(0)
|
|
867
|
+
if INBOX.is_file():
|
|
868
|
+
print("cruise: a person's message; resuming")
|
|
869
|
+
return
|
|
843
870
|
if fingerprint() != seen:
|
|
844
871
|
print("cruise: something changed; resuming")
|
|
845
872
|
return
|
|
@@ -875,6 +902,124 @@ def terminated(_signal: int, _frame: object) -> None:
|
|
|
875
902
|
raise SystemExit(128 + signal.SIGTERM)
|
|
876
903
|
|
|
877
904
|
|
|
905
|
+
def interrupted(_signal: int, _frame: object) -> None:
|
|
906
|
+
"""A SIGUSR1 to the runner (`tell --now`) ends the iteration under way for a person's message, and nothing
|
|
907
|
+
else: the loop goes on, and the next iteration starts at once with the inbox as its argument. Between
|
|
908
|
+
iterations, or parked, there is nothing to end, and the inbox is read within the second anyway."""
|
|
909
|
+
global INTERRUPTED
|
|
910
|
+
if CURRENT is not None and CURRENT.poll() is None:
|
|
911
|
+
INTERRUPTED = True
|
|
912
|
+
try:
|
|
913
|
+
os.killpg(CURRENT.pid, signal.SIGTERM)
|
|
914
|
+
except ProcessLookupError:
|
|
915
|
+
pass
|
|
916
|
+
|
|
917
|
+
|
|
918
|
+
def queued() -> list[dict[str, Any]]:
|
|
919
|
+
"""What a person has queued and no iteration has taken yet, oldest first."""
|
|
920
|
+
if not INBOX.is_file():
|
|
921
|
+
return []
|
|
922
|
+
return [json.loads(line) for line in INBOX.read_text().splitlines() if line.strip()]
|
|
923
|
+
|
|
924
|
+
|
|
925
|
+
def deliver() -> list[str]:
|
|
926
|
+
"""Take everything queued, in order, and keep it for the iteration's log entry. The file is moved before it
|
|
927
|
+
is read, so a `tell` landing at this moment goes to a fresh inbox rather than being lost."""
|
|
928
|
+
if not INBOX.is_file():
|
|
929
|
+
return []
|
|
930
|
+
taken = INBOX.with_suffix(".taking")
|
|
931
|
+
try:
|
|
932
|
+
os.replace(INBOX, taken)
|
|
933
|
+
except FileNotFoundError:
|
|
934
|
+
return []
|
|
935
|
+
lines = [line for line in taken.read_text().splitlines() if line.strip()]
|
|
936
|
+
taken.unlink()
|
|
937
|
+
with TOLD.open("a") as handle:
|
|
938
|
+
handle.write("".join(f"{line}\n" for line in lines))
|
|
939
|
+
return [str(json.loads(line)["text"]) for line in lines]
|
|
940
|
+
|
|
941
|
+
|
|
942
|
+
def delivered() -> list[dict[str, Any]]:
|
|
943
|
+
"""Every message an iteration was given, by the runner or by `told`, and the file cleared for the next."""
|
|
944
|
+
if not TOLD.is_file():
|
|
945
|
+
return []
|
|
946
|
+
given = [json.loads(line) for line in TOLD.read_text().splitlines() if line.strip()]
|
|
947
|
+
TOLD.unlink()
|
|
948
|
+
return given
|
|
949
|
+
|
|
950
|
+
|
|
951
|
+
def requeue(given: list[dict[str, Any]]) -> None:
|
|
952
|
+
"""Put back, ahead of anything queued since, what an iteration was given and never got to act on — one
|
|
953
|
+
ended for a later message, or a run ended under it. A person's word is not spent by an iteration that died."""
|
|
954
|
+
if not given:
|
|
955
|
+
return
|
|
956
|
+
lines = [json.dumps(entry, ensure_ascii=False) for entry in given] + [
|
|
957
|
+
json.dumps(entry, ensure_ascii=False) for entry in queued()]
|
|
958
|
+
INBOX.parent.mkdir(parents=True, exist_ok=True)
|
|
959
|
+
INBOX.write_text("".join(f"{line}\n" for line in lines))
|
|
960
|
+
|
|
961
|
+
|
|
962
|
+
def told_argument(texts: list[str]) -> str:
|
|
963
|
+
"""The messages as an iteration's argument: `told: <one>`, or the several in order, each on its own `told:`."""
|
|
964
|
+
return " ".join(f"{TOLD_WORD} {' '.join(text.split())}" for text in texts)
|
|
965
|
+
|
|
966
|
+
|
|
967
|
+
def tell(arguments: list[str]) -> None:
|
|
968
|
+
"""Queue a message for the run: the next iteration carries it as `told: <message>` in its argument. With
|
|
969
|
+
`--now` — the first word, on the command line or in the text — the iteration in flight is ended for it and
|
|
970
|
+
the next starts at once. The message is the words given, or standard input when there are none, so a
|
|
971
|
+
command file can hand it over in a quoted heredoc and no quote inside it reaches the shell."""
|
|
972
|
+
# A bare `tell` at a terminal is a person who forgot the message, not one about to type it into a pipe.
|
|
973
|
+
text = " ".join(arguments).strip() if arguments else ("" if sys.stdin.isatty() else sys.stdin.read().strip())
|
|
974
|
+
now_flag = False
|
|
975
|
+
if text == "--now" or text.startswith("--now "):
|
|
976
|
+
now_flag, text = True, text.removeprefix("--now").strip()
|
|
977
|
+
if not text:
|
|
978
|
+
raise RuntimeError("tell takes the message as its words, or on standard input")
|
|
979
|
+
INBOX.parent.mkdir(parents=True, exist_ok=True)
|
|
980
|
+
with INBOX.open("a") as handle:
|
|
981
|
+
handle.write(json.dumps({"at": now(), "text": text, "now": now_flag}, ensure_ascii=False) + "\n")
|
|
982
|
+
waiting = len(queued())
|
|
983
|
+
count = f"{waiting} message(s) queued" if waiting > 1 else "queued"
|
|
984
|
+
running = running_pid()
|
|
985
|
+
if running is None:
|
|
986
|
+
print(f"cruise: {count}; no runner is running here — the first iteration of the next run carries it "
|
|
987
|
+
"(`/cruise` starts one)")
|
|
988
|
+
return
|
|
989
|
+
# A parked runner says so as the last line of its log; a foreground one prints it instead, so there the log
|
|
990
|
+
# entry is the evidence, and it cannot say whether something resumed the run since.
|
|
991
|
+
tail = RUN_LOG.read_text(errors="replace").rstrip().splitlines()[-1:] if RUN_LOG.is_file() else []
|
|
992
|
+
log = entries()
|
|
993
|
+
if tail and tail[-1].startswith("cruise: waiting;"):
|
|
994
|
+
print(f"cruise: {count}; the run is parked and resumes with it within the second")
|
|
995
|
+
return
|
|
996
|
+
if not tail and log and str(log[-1]["last_line"]).startswith("cruise: parked: "):
|
|
997
|
+
print(f"cruise: {count}; the run parked after iteration {log[-1]['iteration']} and resumes with it within "
|
|
998
|
+
"the second — unless something already resumed it, in which case the next iteration carries it")
|
|
999
|
+
return
|
|
1000
|
+
if now_flag:
|
|
1001
|
+
os.kill(running[0], signal.SIGUSR1)
|
|
1002
|
+
print(f"cruise: {count}, and the runner (pid {running[0]}) was told to end the iteration in flight for it; "
|
|
1003
|
+
"the next iteration starts at once with the message, and the ended iteration's increment commits "
|
|
1004
|
+
"are on its branch")
|
|
1005
|
+
return
|
|
1006
|
+
print(f"cruise: {count} for the next iteration; the one in flight ends first — the runner (pid {running[0]}) "
|
|
1007
|
+
"reads the inbox before each iteration, and the iteration itself between stages. "
|
|
1008
|
+
"`python3 scripts/agents/cruise.py tell --now …` would end the one in flight for it")
|
|
1009
|
+
|
|
1010
|
+
|
|
1011
|
+
def told() -> None:
|
|
1012
|
+
"""Inside an iteration, between stages: what a person queued since the iteration started, one line each,
|
|
1013
|
+
taken — so the next iteration is not given it again — and kept for this iteration's log entry."""
|
|
1014
|
+
texts = deliver()
|
|
1015
|
+
if not texts:
|
|
1016
|
+
return
|
|
1017
|
+
print(f"cruise: {len(texts)} message(s) from a person since this iteration started; act on each before the "
|
|
1018
|
+
"next stage, and write down what must outlive this iteration")
|
|
1019
|
+
for text in texts:
|
|
1020
|
+
print(f"cruise: {TOLD_WORD} {text}")
|
|
1021
|
+
|
|
1022
|
+
|
|
878
1023
|
def cut_off_brackets(reason: str) -> None:
|
|
879
1024
|
"""Close what the iteration's session left open in the benchmark records: nothing will `end` it now, and an
|
|
880
1025
|
entry left open reads as a stage still running (`scripts/agents/benchmark.py cut-off`). Its lines go to the
|
|
@@ -917,9 +1062,12 @@ def run(arguments: list[str]) -> None:
|
|
|
917
1062
|
first = prompt_for(harness, " ".join(part for part in (feature, kickoff) if part))
|
|
918
1063
|
PID.parent.mkdir(parents=True, exist_ok=True)
|
|
919
1064
|
PID.write_text(f"{os.getpid()} {now()}\n")
|
|
1065
|
+
# What a run that ended under an iteration — `stop --now`, a killed runner — had given it is not spent.
|
|
1066
|
+
requeue(delivered())
|
|
920
1067
|
signal.signal(signal.SIGTERM, terminated)
|
|
1068
|
+
signal.signal(signal.SIGUSR1, interrupted)
|
|
921
1069
|
try:
|
|
922
|
-
drive(table, harness, template, why, environment, prompt, first, feature, no_park)
|
|
1070
|
+
drive(table, harness, template, why, environment, prompt, first, feature, kickoff, no_park)
|
|
923
1071
|
finally:
|
|
924
1072
|
if PID.is_file() and PID.read_text().split()[:1] == [str(os.getpid())]:
|
|
925
1073
|
PID.unlink()
|
|
@@ -937,7 +1085,8 @@ def settings_now(table: dict[str, Any]) -> dict[str, Any]:
|
|
|
937
1085
|
|
|
938
1086
|
|
|
939
1087
|
def drive(table: dict[str, Any], harness: dict[str, Any] | None, template: str, why: str,
|
|
940
|
-
environment: dict[str, str], prompt: str, first: str, feature: str | None,
|
|
1088
|
+
environment: dict[str, str], prompt: str, first: str, feature: str | None, kickoff: str | None,
|
|
1089
|
+
no_park: bool) -> None:
|
|
941
1090
|
print(f"cruise: {why}")
|
|
942
1091
|
if first != prompt:
|
|
943
1092
|
print(f"cruise: the first iteration runs `{first}`, the kick-off; every later one runs `{prompt}`")
|
|
@@ -948,10 +1097,12 @@ def drive(table: dict[str, Any], harness: dict[str, Any] | None, template: str,
|
|
|
948
1097
|
stream = stream_of(harness)
|
|
949
1098
|
started_run = time.monotonic()
|
|
950
1099
|
iterations_this_run = 0
|
|
951
|
-
|
|
1100
|
+
# An iteration a person ended for a message is not the run failing to move, so it is not in the stuck window.
|
|
1101
|
+
fingerprints = [entry["fingerprint"] for entry in entries() if not entry.get("interrupted")]
|
|
952
1102
|
# The fingerprint a stuck run was already given its one unblocking iteration at, so it gets exactly one.
|
|
953
1103
|
unblocked_at: str | None = None
|
|
954
1104
|
ask, attempt = first, "kick-off" if first != prompt else None
|
|
1105
|
+
global INTERRUPTED
|
|
955
1106
|
while True:
|
|
956
1107
|
table = settings_now(table)
|
|
957
1108
|
poll = float(os.environ.get("CRUISE_POLL_SECONDS", table["poll_minutes"] * 60))
|
|
@@ -968,27 +1119,55 @@ def drive(table: dict[str, Any], harness: dict[str, Any] | None, template: str,
|
|
|
968
1119
|
if table["max_hours"] is not None and time.monotonic() - started_run >= table["max_hours"] * 3600:
|
|
969
1120
|
print(f"cruise: budget spent — {table['max_hours']} hour(s)")
|
|
970
1121
|
return
|
|
1122
|
+
# A person's message rides on this iteration's argument: after the kick-off on the first, in place of
|
|
1123
|
+
# the bosun's `unblock:` — a person's word is the likelier thing to move a stuck run, and the bosun's one
|
|
1124
|
+
# iteration is kept for after it — and alone on any other.
|
|
1125
|
+
messages = deliver()
|
|
1126
|
+
if messages:
|
|
1127
|
+
if attempt == "unblock":
|
|
1128
|
+
unblocked_at, attempt = None, None
|
|
1129
|
+
ask = prompt_for(harness, " ".join(part for part in (
|
|
1130
|
+
feature, kickoff if attempt == "kick-off" else None, told_argument(messages)) if part))
|
|
1131
|
+
print(f"cruise: iteration {len(entries()) + 1} carries {len(messages)} message(s) from a person", flush=True)
|
|
971
1132
|
iteration = len(entries()) + 1
|
|
972
1133
|
started = now()
|
|
973
1134
|
LAST_RESPONSE.unlink(missing_ok=True)
|
|
1135
|
+
INTERRUPTED = False
|
|
974
1136
|
print(f"cruise: iteration {iteration} started {started}, running `{ask}`", flush=True)
|
|
975
1137
|
began = time.monotonic()
|
|
976
1138
|
# The model flag is read with the settings, so `/cruise-settings model=…` holds from the next iteration.
|
|
977
1139
|
last = iterate(template + model_flags(harness, table["model"]), ask, environment, iteration, stream)
|
|
978
|
-
|
|
1140
|
+
if INTERRUPTED:
|
|
1141
|
+
last = "interrupted: a person's message"
|
|
1142
|
+
cut_off_brackets("the iteration was ended by `tell --now`")
|
|
1143
|
+
else:
|
|
1144
|
+
cut_off_brackets(f"iteration {iteration} ended with the entry open")
|
|
979
1145
|
iterations_this_run += 1
|
|
980
1146
|
seen = fingerprint()
|
|
981
|
-
|
|
1147
|
+
if not INTERRUPTED:
|
|
1148
|
+
fingerprints.append(seen)
|
|
982
1149
|
entry: dict[str, Any] = {"iteration": iteration, "started": started, "ended": now(),
|
|
983
1150
|
"harness": harness["key"] if harness is not None else "override",
|
|
984
1151
|
"last_line": last or "no last line", "fingerprint": seen}
|
|
985
1152
|
if attempt is not None:
|
|
986
1153
|
entry["attempt"] = attempt
|
|
1154
|
+
given = delivered()
|
|
1155
|
+
if given:
|
|
1156
|
+
entry["told"] = [str(each["text"]) for each in given]
|
|
1157
|
+
if INTERRUPTED:
|
|
1158
|
+
# The entry says what the iteration was given; the next is given it again, ahead of the message that
|
|
1159
|
+
# ended this one, since nothing says this one acted on it.
|
|
1160
|
+
entry["interrupted"] = True
|
|
1161
|
+
requeue(given)
|
|
987
1162
|
ask, attempt = prompt, None
|
|
988
1163
|
record(entry)
|
|
989
1164
|
# The boundary `watch` returns on: the iteration, what it ended on, and how long it took.
|
|
990
1165
|
print(f"cruise: iteration {iteration} ended — {last or 'no last line'} ({duration(time.monotonic() - began)})",
|
|
991
1166
|
flush=True)
|
|
1167
|
+
if INTERRUPTED:
|
|
1168
|
+
# Ended for a message, not by its own last line: the next iteration is where the message goes, and it
|
|
1169
|
+
# starts now — there is nothing to park on and nothing to count.
|
|
1170
|
+
continue
|
|
992
1171
|
if last in ("cruise: done", "cruise: stopped: human"):
|
|
993
1172
|
# The iteration is over for good; a checkpoint left behind would read as state to resume.
|
|
994
1173
|
CHECKPOINT.unlink(missing_ok=True)
|
|
@@ -1036,7 +1215,7 @@ def start(arguments: list[str]) -> None:
|
|
|
1036
1215
|
first = prompt_for(harness, " ".join(part for part in (feature, kickoff) if part))
|
|
1037
1216
|
# Said before the fork, so a runner that ends at once has still said what its iterations run on and how they
|
|
1038
1217
|
# reach the index.
|
|
1039
|
-
for line in model_lines(harness, table["model"]) + index_lines(harness):
|
|
1218
|
+
for line in model_lines(harness, table["model"]) + index_lines(harness) + queued_lines():
|
|
1040
1219
|
print(line)
|
|
1041
1220
|
RUN_LOG.parent.mkdir(parents=True, exist_ok=True)
|
|
1042
1221
|
# The watch seat starts reading here, so the first `watch` shows this run from its first line.
|
|
@@ -1302,12 +1481,25 @@ def denials() -> None:
|
|
|
1302
1481
|
f"{', '.join(str(each) for each in where)})")
|
|
1303
1482
|
|
|
1304
1483
|
|
|
1484
|
+
def queued_lines() -> list[str]:
|
|
1485
|
+
"""What `status` and `start` say of the inbox: each message waiting for the next iteration, or nothing."""
|
|
1486
|
+
waiting = queued()
|
|
1487
|
+
if not waiting:
|
|
1488
|
+
return []
|
|
1489
|
+
return [f"cruise: {len(waiting)} message(s) queued for the next iteration ({relative(INBOX)}):"] + [
|
|
1490
|
+
f"cruise: {first_line(entry['text'])}" + (" (asked to end the iteration in flight)" if entry.get("now") else "")
|
|
1491
|
+
for entry in waiting
|
|
1492
|
+
]
|
|
1493
|
+
|
|
1494
|
+
|
|
1305
1495
|
def status() -> None:
|
|
1306
1496
|
running = running_pid()
|
|
1307
1497
|
if running is not None:
|
|
1308
1498
|
print(f"cruise: the runner is running (pid {running[0]}, since {running[1]}); its log is {relative(RUN_LOG)}")
|
|
1309
1499
|
else:
|
|
1310
1500
|
print("cruise: no runner is running here")
|
|
1501
|
+
for line in queued_lines():
|
|
1502
|
+
print(line)
|
|
1311
1503
|
log = entries()
|
|
1312
1504
|
if not log:
|
|
1313
1505
|
print("cruise: no iteration has run here")
|
|
@@ -1339,6 +1531,7 @@ def main() -> None:
|
|
|
1339
1531
|
return
|
|
1340
1532
|
verbs = {"run": lambda: run(arguments[1:]), "start": lambda: start(arguments[1:]),
|
|
1341
1533
|
"watch": lambda: watch(arguments[1:]), "stop": lambda: stop(arguments[1:]), "status": status,
|
|
1534
|
+
"tell": lambda: tell(arguments[1:]), "told": told,
|
|
1342
1535
|
"denials": denials, "resume": resume, "compacting": compacting, "loop": loop, "stopping": stopping,
|
|
1343
1536
|
"responded": responded}
|
|
1344
1537
|
if arguments and arguments[0] in verbs:
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
MINOR
|
|
2
|
+
|
|
3
|
+
**A person can tell a running `/cruise` something without stopping it.** `/cruise-tell <message>` in any
|
|
4
|
+
session, `make cruise-tell MSG="…"`, or `python3 scripts/agents/cruise.py tell …` queues the message in
|
|
5
|
+
`.specify/cruise-inbox.jsonl`; the runner reads the inbox before it starts each iteration and hands the message
|
|
6
|
+
over as `told: <message>` in that iteration's argument — the route the kick-off takes — and the command reads it
|
|
7
|
+
before the first stage and acts on it first, writing what must outlive the iteration into the owner brief or a
|
|
8
|
+
decision entry. Between stages an iteration runs `python3 scripts/agents/cruise.py told` for what was queued since
|
|
9
|
+
it started, so a message can land mid-iteration without cutting a stage. A parked run resumes with a message
|
|
10
|
+
within the second, and a message waiting when a run is stuck goes in place of the bosun's `unblock:` iteration.
|
|
11
|
+
`--now` as the first word ends the iteration in flight for the message, the way `stop --now` does, and starts the
|
|
12
|
+
next at once; the log entry says so, and an interrupted iteration is not counted by the stuck detector. Every
|
|
13
|
+
message delivered is in that iteration's entry in `specs/cruise-log.jsonl` under `told`, and `/cruise-status` lists
|
|
14
|
+
what is queued. The watch seat queues what a person types for the run the same way and repeats what the script
|
|
15
|
+
said. Every setting keeps its meaning; a message never changes one.
|
|
16
|
+
|
|
17
|
+
**Catch-up.** `slipwai migrate` brings the runner, the command files and the Make target; the inbox and the
|
|
18
|
+
delivered file are gitignored.
|
|
@@ -12,7 +12,7 @@ from __future__ import annotations
|
|
|
12
12
|
|
|
13
13
|
def agent_targets() -> str:
|
|
14
14
|
"""The `.PHONY` block between the npm workspace targets and the native gate targets."""
|
|
15
|
-
return """.PHONY: agents agents-list check-extensions check-agents models check-benchmark benchmark cruise cruise-watch cruise-status cruise-stop check-decisions
|
|
15
|
+
return """.PHONY: agents agents-list check-extensions check-agents models check-benchmark benchmark cruise cruise-watch cruise-status cruise-stop cruise-tell check-decisions
|
|
16
16
|
agents: ## Refresh elected extensions, then skills, commands and agent types in every installed agent harness
|
|
17
17
|
\tpython3 scripts/extensions/project.py
|
|
18
18
|
\tpython3 scripts/agents/project.py
|
|
@@ -37,6 +37,8 @@ cruise-status: ## Say whether a /cruise runner is running and what its log shows
|
|
|
37
37
|
\tpython3 scripts/agents/cruise.py status
|
|
38
38
|
cruise-stop: ## End a /cruise run after the iteration in flight (CRUISE_FLAGS=--now ends that iteration too)
|
|
39
39
|
\tpython3 scripts/agents/cruise.py stop $(CRUISE_FLAGS)
|
|
40
|
+
cruise-tell: ## Queue a message for the next /cruise iteration (MSG=\"…\"; CRUISE_FLAGS=--now ends the iteration in flight so it goes at once)
|
|
41
|
+
\tpython3 scripts/agents/cruise.py tell $(CRUISE_FLAGS) $(MSG)
|
|
40
42
|
check-decisions: ## Fail when a decision log or demo log /cruise wrote has lost its shape
|
|
41
43
|
\tpython3 scripts/check-decisions.py
|
|
42
44
|
"""
|
|
@@ -11,7 +11,7 @@ from .adversary import adversary_command
|
|
|
11
11
|
from .benchmark import benchmark_command, what_each_stage_costs
|
|
12
12
|
from .converge_stage import convergence_stage
|
|
13
13
|
from .cruise import cruise_command, cruise_settings_command
|
|
14
|
-
from .cruise_seat import cruise_status_command, cruise_stop_command
|
|
14
|
+
from .cruise_seat import cruise_status_command, cruise_stop_command, cruise_tell_command
|
|
15
15
|
from .demo_stop import demo_stop
|
|
16
16
|
from .drive_adoption import adoption_ladder
|
|
17
17
|
from .drive_settings import drive_settings_command, implementation_section
|
|
@@ -310,7 +310,7 @@ than an open question.
|
|
|
310
310
|
# three reaching back out to the factory. One list, so the documentation and the files cannot disagree.
|
|
311
311
|
BASE_COMMANDS = ("drive", "where-are-we", "whats-next", "gaps", "adversary", "mutation", "constitution-coverage",
|
|
312
312
|
"model-delegation-settings", "drive-settings", "benchmark", "cruise", "cruise-settings",
|
|
313
|
-
"cruise-status", "cruise-stop", "add-service", "add-frontend", "catch-up")
|
|
313
|
+
"cruise-status", "cruise-stop", "cruise-tell", "add-service", "add-frontend", "catch-up")
|
|
314
314
|
# Copied whole from `assets/profiles/event-modelling/commands/`; listed because the documentation names them in order.
|
|
315
315
|
EVENT_COMMANDS = ("example-map", "validate-code-against-model")
|
|
316
316
|
|
|
@@ -330,6 +330,7 @@ def command_files(
|
|
|
330
330
|
"commands/cruise-settings.md": cruise_settings_command(layout),
|
|
331
331
|
"commands/cruise-status.md": cruise_status_command(layout),
|
|
332
332
|
"commands/cruise-stop.md": cruise_stop_command(layout),
|
|
333
|
+
"commands/cruise-tell.md": cruise_tell_command(layout),
|
|
333
334
|
"commands/where-are-we.md": where_are_we_command(event, target),
|
|
334
335
|
"commands/whats-next.md": whats_next_command(event),
|
|
335
336
|
"commands/gaps.md": gaps_command(event),
|
|
@@ -21,6 +21,7 @@ from .cruise_agents import DECISIONS, OWNER_BRIEF, SKIPPER
|
|
|
21
21
|
from .cruise_hand import hand_section
|
|
22
22
|
from .cruise_record import CHECKPOINT, CHECKPOINT_ENTRY, DECISION_ENTRY, STOP_FILE
|
|
23
23
|
from .cruise_stops import LOG, REPORT, stop_table
|
|
24
|
+
from .cruise_told import boundary_asks, seat_queues, told_argument
|
|
24
25
|
from .cruise_unblock import unblock_section
|
|
25
26
|
|
|
26
27
|
CONFIG = ".specify/cruise.json"
|
|
@@ -96,7 +97,7 @@ def cruise_command(
|
|
|
96
97
|
)
|
|
97
98
|
return f"""---
|
|
98
99
|
description: Run /drive as driver and product owner, iteration after iteration, until every specification is satisfied — stopping only for a human
|
|
99
|
-
argument-hint: [--feature <name>] [kick-off: what this run is for, where the brief or PRD is] | unblock: <what the outer loop saw>
|
|
100
|
+
argument-hint: [--feature <name>] [kick-off: what this run is for, where the brief or PRD is] | unblock: <what the outer loop saw> | told: <a person's message>
|
|
100
101
|
---
|
|
101
102
|
|
|
102
103
|
# Cruise
|
|
@@ -142,7 +143,7 @@ states goes into the owner brief (`{OWNER_BRIEF}`), a scope it sets is a decisio
|
|
|
142
143
|
anything else. Two things the runner passes itself recur: a feature named with `--feature` on `run` or `start`
|
|
143
144
|
(`{layout.make} cruise FEATURE=<name>`) is the first word of every iteration's argument and scopes the run to that
|
|
144
145
|
feature's specification — the ladder is entered for it and no other — and `unblock: <reason>` is what the runner
|
|
145
|
-
says when a run makes no progress (*Blocked: the bosun protocol*, below).
|
|
146
|
+
says when a run makes no progress (*Blocked: the bosun protocol*, below). {told_argument(SCRIPT)}
|
|
146
147
|
|
|
147
148
|
## The watch seat
|
|
148
149
|
|
|
@@ -162,7 +163,7 @@ never a reason to run a stage of the ladder in this session.
|
|
|
162
163
|
**A person typing here is talking to you, not stopping the run.** Answer them — what the feed shows, what
|
|
163
164
|
`{CONFIG}` says (`python3 {SCRIPT}` prints every setting and what it controls), what `python3 {SCRIPT} status`
|
|
164
165
|
says, what `{DECISIONS}` records — and change a setting through `/cruise-settings` where they ask; it takes
|
|
165
|
-
effect at the next iteration. Then watch again. Only `touch {STOP_FILE}`, `python3 {SCRIPT} stop`, or
|
|
166
|
+
effect at the next iteration. {seat_queues(SCRIPT)} Then watch again. Only `touch {STOP_FILE}`, `python3 {SCRIPT} stop`, or
|
|
166
167
|
`{layout.make} cruise-stop` ends the run, and only when they ask for that.
|
|
167
168
|
|
|
168
169
|
## Run the ladder, and answer at its stops
|
|
@@ -229,7 +230,7 @@ the unit is one slice through Phase 4 and its done marker, or one concurrent fan
|
|
|
229
230
|
split order. `commands/drive.md` says *do not wait to be invoked again*; here the
|
|
230
231
|
outer loop is what re-invokes, with a fresh context, which is the rule every delegate already lives by.
|
|
231
232
|
Between stages, look for `{STOP_FILE}`: present, finish the stage's own writes, commit what is green, and end
|
|
232
|
-
on `{LAST_LINES[3]}`.
|
|
233
|
+
on `{LAST_LINES[3]}`. {boundary_asks(SCRIPT)}
|
|
233
234
|
At every stage boundary and every delegation, rewrite the checkpoint (*Checkpoint*, below).
|
|
234
235
|
Where nothing can move — every ready slice blocked and the bosun could not move one, or a blocker is on the
|
|
235
236
|
catastrophic list — end with `parked` and the exact thing a person must provide or decide; the loop waits,
|
|
@@ -21,6 +21,10 @@ RUNNER_LOG = ".specify/cruise-run.log"
|
|
|
21
21
|
RUNNER_STREAM = ".specify/cruise-stream.jsonl"
|
|
22
22
|
WATCH_CURSOR = ".specify/cruise-watch.cursor"
|
|
23
23
|
LAST_RESPONSE = ".specify/cruise-last-response.txt"
|
|
24
|
+
# What a person queued for the run through `tell`, until an iteration takes it; and what an iteration was given,
|
|
25
|
+
# until the runner writes it into that iteration's log entry.
|
|
26
|
+
INBOX = ".specify/cruise-inbox.jsonl"
|
|
27
|
+
TOLD = ".specify/cruise-told.jsonl"
|
|
24
28
|
DECISION_ENTRY = f"""## D<n> — <the question, in one line>
|
|
25
29
|
- **Stage:** <stage> · **Slice:** <id> · **When:** <ISO instant> · **Iteration:** <n>
|
|
26
30
|
- **Question:** <as the stage raised it>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"""The
|
|
1
|
+
"""The three commands a person types beside a running `/cruise`: `/cruise-status`, `/cruise-stop` and `/cruise-tell`.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Each is a shell command and the rule for what to do with what it printed. The rule matters more than the
|
|
4
4
|
command: a harness folds a command's output to a few lines, so a status or a feed reaches a person only through
|
|
5
5
|
the reply, and each of these says so in the same words the watch seat in `commands/cruise.md` uses.
|
|
6
6
|
"""
|
|
@@ -8,7 +8,7 @@ from __future__ import annotations
|
|
|
8
8
|
|
|
9
9
|
from ..layout import AT_ROOT, Layout
|
|
10
10
|
from .cruise import SCRIPT
|
|
11
|
-
from .cruise_record import RUNNER_LOG, STOP_FILE
|
|
11
|
+
from .cruise_record import INBOX, RUNNER_LOG, STOP_FILE
|
|
12
12
|
|
|
13
13
|
# The rule every seat command shares: the harness folds a command's output, so the reply carries it.
|
|
14
14
|
VERBATIM = ("Put every line it printed in your reply, unchanged, in a fenced block, before anything else: the harness "
|
|
@@ -64,3 +64,35 @@ start another run until it is removed — `rm {STOP_FILE}` when they want one. W
|
|
|
64
64
|
script says so and the file is written anyway, for the same reason. `{layout.make} cruise-stop` is the same
|
|
65
65
|
from a terminal, `CRUISE_FLAGS=--now` for the immediate form.
|
|
66
66
|
"""
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def cruise_tell_command(layout: Layout = AT_ROOT) -> str:
|
|
70
|
+
"""`/cruise-tell`: queue a message for the next iteration, or end the one in flight for it with `--now`."""
|
|
71
|
+
return f"""---
|
|
72
|
+
description: Queue a message for a running /cruise — a steer, a fact it lacked, a scope — which the next iteration carries; `--now` ends the iteration in flight for it
|
|
73
|
+
argument-hint: [--now] <what the run should know or do next>
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
# Cruise tell
|
|
77
|
+
|
|
78
|
+
A person's word to a run that is already going. It is queued, never pushed into the iteration in flight: the
|
|
79
|
+
runner reads the inbox before it starts each iteration and hands the message over as `told: <message>` in that
|
|
80
|
+
iteration's argument — the route the kick-off takes — and the iteration itself asks for what was queued
|
|
81
|
+
between stages. With `--now` as the first word, the iteration in flight is ended for it, the way `/cruise-stop
|
|
82
|
+
now` ends one, and the next iteration starts at once with the message; its increment commits are on the slice
|
|
83
|
+
branch, and the stage's uncommitted work is what it costs.
|
|
84
|
+
|
|
85
|
+
```sh
|
|
86
|
+
python3 {SCRIPT} tell <<'EOF'
|
|
87
|
+
$ARGUMENTS
|
|
88
|
+
EOF
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
The message goes in as written — the quoted heredoc is so a quote or a `$` inside it never reaches the shell —
|
|
92
|
+
and `--now` is read from its first word. {VERBATIM} It says whether the message waits for the iteration in
|
|
93
|
+
flight to end, resumes a parked run, or ended the iteration for it — and, where no runner is running, that the
|
|
94
|
+
first iteration of the next run carries it. What was queued and not yet taken is in `{INBOX}`; `/cruise-status`
|
|
95
|
+
lists it, and every message an iteration was given is in that iteration's entry in the run's log. A message
|
|
96
|
+
is not a setting: `/cruise-settings` is still how a rule of the run changes. `{layout.make} cruise-tell
|
|
97
|
+
MSG="…"` is the same from a terminal, `CRUISE_FLAGS=--now` for the immediate form.
|
|
98
|
+
"""
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"""A person's word to a run under way: what `commands/cruise.md` says about `told: <message>`.
|
|
2
|
+
|
|
3
|
+
A run used to hear from a person twice — in the kick-off, which reaches the first iteration only, and through
|
|
4
|
+
the stop file. Everything in between meant editing the owner brief and hoping the next iteration read it that
|
|
5
|
+
way. `/cruise-tell` queues a message instead, and the runner hands it to the iteration it starts next as
|
|
6
|
+
`told: <message>` in the argument, the kick-off's own route; the iteration asks for later ones between stages;
|
|
7
|
+
and the watch seat queues what a person types for the run rather than doing anything about it itself. These
|
|
8
|
+
are the three paragraphs of the command that say so, kept beside each other because they name one route.
|
|
9
|
+
"""
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
from .cruise_agents import OWNER_BRIEF
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def told_argument(script: str) -> str:
|
|
16
|
+
"""The kick-off paragraph's third argument: what a message is, where it reaches, and what to do with it."""
|
|
17
|
+
return f"""A third is a person's: `told: <message>`
|
|
18
|
+
is what somebody queued for the run through `/cruise-tell` (`python3 {script} tell`) since the last iteration
|
|
19
|
+
started, one `told:` per message in the order they were sent, and it reaches the iteration the runner starts next —
|
|
20
|
+
never the one in flight, unless they ended it for the message. Read it before the first stage and act on it
|
|
21
|
+
first: a steer takes precedence over what the artifacts alone would make this iteration do, a fact the run lacked
|
|
22
|
+
is the answer to a block, and a scope or a preference is written down the way the kick-off is — into the owner
|
|
23
|
+
brief (`{OWNER_BRIEF}`) or a decision entry with `Decided by: human` — so it outlives this iteration. A message
|
|
24
|
+
never changes a setting; say so and point at `/cruise-settings` where one asks for that."""
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def seat_queues(script: str) -> str:
|
|
28
|
+
"""The watch seat's rule for something a person types that is for the run, not for the seat."""
|
|
29
|
+
return f"""Where what they typed is for the run — a steer, a fact it was missing, a scope, an
|
|
30
|
+
answer to the question it parked on — queue it with `python3 {script} tell <<'EOF'` … `EOF` (`/cruise-tell`),
|
|
31
|
+
the message as they said it, and repeat what the script printed: the next iteration carries it, a parked run
|
|
32
|
+
resumes with it, and `--now` as its first word ends the iteration in flight for it, which is done only when they
|
|
33
|
+
ask for that."""
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def boundary_asks(script: str) -> str:
|
|
37
|
+
"""The iteration contract's read between stages, beside the look for the stop file."""
|
|
38
|
+
return f"""At the same boundaries run `python3 {script} told`: it prints what a person queued through
|
|
39
|
+
`/cruise-tell` since this iteration started, one `told:` line each, or nothing — and what it printed is acted on
|
|
40
|
+
before the next stage, exactly as a `told:` argument would have been; it is taken as it is printed, so the next
|
|
41
|
+
iteration is not given it again, and the runner puts it in this iteration's log entry."""
|