Draft
Conversation
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.268.0 to 1.269.0. - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](ruby/setup-ruby@8aeb6ff...d697be2) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-version: 1.269.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [connection_pool](https://github.com/mperham/connection_pool) from 2.5.5 to 3.0.2. - [Changelog](https://github.com/mperham/connection_pool/blob/main/Changes.md) - [Commits](mperham/connection_pool@v2.5.5...v3.0.2) --- updated-dependencies: - dependency-name: connection_pool dependency-version: 3.0.2 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.13.3 to 2.14.0. - [Release notes](https://github.com/step-security/harden-runner/releases) - [Commits](step-security/harden-runner@df199fb...20cf305) --- updated-dependencies: - dependency-name: step-security/harden-runner dependency-version: 2.14.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Systems enforce configuration consistency - creating the same light name with different settings raises ConfigurationError. Lights are cached within their system. API is private (`__stoplight__system`, `__stoplight__reset!`) pending Redis key isolation in the stores refactoring.
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.269.0 to 1.270.0. - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](ruby/setup-ruby@d697be2...ac793fd) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-version: 1.270.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [concurrent-ruby-ext](http://www.concurrent-ruby.com) from 1.3.5 to 1.3.6. --- updated-dependencies: - dependency-name: concurrent-ruby-ext dependency-version: 1.3.6 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [cucumber](https://github.com/cucumber/cucumber-ruby) from 10.1.1 to 10.2.0. - [Release notes](https://github.com/cucumber/cucumber-ruby/releases) - [Changelog](https://github.com/cucumber/cucumber-ruby/blob/main/CHANGELOG.md) - [Commits](cucumber/cucumber-ruby@v10.1.1...v10.2.0) --- updated-dependencies: - dependency-name: cucumber dependency-version: 10.2.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [concurrent-ruby](https://github.com/ruby-concurrency/concurrent-ruby) from 1.3.5 to 1.3.6. - [Release notes](https://github.com/ruby-concurrency/concurrent-ruby/releases) - [Changelog](https://github.com/ruby-concurrency/concurrent-ruby/blob/master/CHANGELOG.md) - [Commits](ruby-concurrency/concurrent-ruby@v1.3.5...v1.3.6) --- updated-dependencies: - dependency-name: concurrent-ruby dependency-version: 1.3.6 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.270.0 to 1.271.0. - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](ruby/setup-ruby@ac793fd...f8d7259) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-version: 1.271.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Introduce `Stoplight::Domain::Clock` interface and `Stoplight::Infrastructure::SystemClock` implementation to centralize how Stoplight obtains and interprets time. - `Domain::Clock`: abstract wall-clock interface defining `#current_time` and `#at` methods - `Infrastructure::SystemClock`: production implementation using Ruby's `Time` class All time-dependent components should use this interface rather than calling `Time` methods directly.
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.271.0 to 1.274.0. - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](ruby/setup-ruby@f8d7259...ed55d55) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-version: 1.274.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.11.1 to 3.12.0. - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](docker/setup-buildx-action@e468171...8d2750c) --- updated-dependencies: - dependency-name: docker/setup-buildx-action dependency-version: 3.12.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.274.0 to 1.275.0. - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](ruby/setup-ruby@ed55d55...d354de1) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-version: 1.275.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [zeitwerk](https://github.com/fxn/zeitwerk) from 2.7.3 to 2.7.4. - [Changelog](https://github.com/fxn/zeitwerk/blob/main/CHANGELOG.md) - [Commits](https://github.com/fxn/zeitwerk/commits) --- updated-dependencies: - dependency-name: zeitwerk dependency-version: 2.7.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [debug](https://github.com/ruby/debug) from 1.11.0 to 1.11.1. - [Release notes](https://github.com/ruby/debug/releases) - [Commits](ruby/debug@v1.11.0...v1.11.1) --- updated-dependencies: - dependency-name: debug dependency-version: 1.11.1 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Continues storage abstraction separation by extracting state management from DataStore into dedicated per-circuit storage instances. Previously, we introduced the `Domain::Storage::State` interface. This PR implements the actual storage classes following the same pattern as recovery locks. **Before:** DataStore handled state for ALL circuits: ```ruby data_store.set_state(config, state) snapshot = data_store.get_state_snapshot(config) first_to_transition = data_store.transition_to_color(config, Color::RED) ``` **After:** each circuit has its own state storage instance: ```ruby state_store = Memory::State.new(clock:, cool_off_time:) # Per circuit state_store.set_state(state) # No config needed - knows its circuit snapshot = state_store.state_snapshot first_to_transition = state_store.transition_to_color(Color::RED) ``` Also introduces `Domain::Clock` interface with `Infrastructure::SystemClock` implementation, making time dependencies explicit and testable. The Redis implementation is composed with `FailSafe::State` decorator for automatic memory failover, wired in `LightBuilder`.
Completes storage abstraction separation by extracting recovery lock coordination from DataStore into dedicated per-circuit storage instances. [Previous PR] introduced `Domain::Storage::RecoveryLock` interface with compatibility adapter. This PR implements the actual storage classes and removes DataStore's lock responsibilities entirely. Before: DataStore handled locks for ALL circuits ```ruby token = data_store.acquire_recovery_lock(config) data_store.release_recovery_lock(token) ``` After: each circuit has its own lock storage instance ``` recovery_lock_store = Memory::RecoveryLock.new # Per circuit token = recovery_lock_store.acquire_lock() # No config needed - knows its circuit recovery_lock_store.release_lock(token) ``` [Previous PR]: #530
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.275.0 to 1.276.0. - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](ruby/setup-ruby@d354de1...ae195bb) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-version: 1.276.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This PR refactors the storage wiring layer to eliminate nested conditionals and enable proper RBS type checking. The core change introduces a DataStoreBackend abstraction that encapsulates all storage construction for a specific data store type (Memory or Redis).
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.278.0 to 1.279.0. - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](ruby/setup-ruby@4c24fa5...b90be12) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-version: 1.279.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Remove Steep ignores for core Wiring components, bringing them under strict type checking. Previously only Domain and Infrastructure layers were fully typed. Replaced `**settings` hash splats with explicit keyword parameters throughout the public API. Hash splats defeat static analysis since Steep can't infer which keys are valid. Required to type optional parameters that accept `nil` as a valid value. Without this, we can't distinguish "user passed nil" from "user passed nothing": ```ruby def light(name, threshold: T.undefined, window_size: T.undefined) ``` Internal representation for Settings that preserves the configured/unconfigured distinction through the configuration pipeline. Enables typed traversal from user input to resolved Config. Replaces ad-hoc `Hash[Symbol, untyped]` with a typed container that Steep can reason about. - `ConfigNormalizer` - logic moved into `ConfigurationPipeline` - Hash-based settings passing throughout factory classes
Move domain concepts to top-level Stoplight namespace: - Domain::Color -> Stoplight::Color - Domain::State -> Stoplight::State - Domain::Error -> Stoplight::Error - Wiring::DataStore::* -> Stoplight::DataStore::* - Infrastructure::Notifier::* aliased at Stoplight::Notifier::* Remove inheritance-based extension points: - DataStore::Base removed (was empty abstract class) Introduce RBS interface types for public contracts: - _Light: core circuit breaker operations - _Configuration: configure block interface - _StateTransitionNotifier: notification duck type - _ExceptionMatcher: flexible error matching (Class, Proc, etc.) - _LightInfo: minimal context passed to notifiers Reorganize type signatures: - Public API types remain in sig/ - Implementation details moved to sig/_private/ - Port interfaces extracted to sig/stoplight/ports/ Remove Wiring::PublicApi module—aliases now live directly in their respective files under lib/stoplight/. Breaking changes documented in UPGRADING.md.
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.279.0 to 1.280.0. - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](ruby/setup-ruby@b90be12...d5f787c) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-version: 1.280.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Remove inheritance-based abstractions in favor of RBS interface definitions, embracing Ruby's duck typing philosophy while maintaining static type safety through Steep.
Remove the intermediate Settings representation and Option type (Some/None) abstraction in favor of using Domain::Config directly with the existing Undefined sentinel pattern. Previously, defaults were injected lazily at light creation time. Settings tracked whether each value was explicitly configured (Some) or not (None), and ConfigurationPipeline resolved None values to defaults at the end. Now, configuration starts with DefaultConfig containing all default values, and user-provided values extend/override them immediately via Config#with. This "defaults-first" approach is simpler and makes the effective configuration visible earlier in the pipeline. Old flow: User DSL → Settings (Option-wrapped) → ConfigurationPipeline → Config (defaults injected here) New flow: DefaultConfig → extend with user values → Config (validated) (starts with defaults) This reduces indirection and makes the configuration flow clearer. ConfigurationDsl handles interpreting user-friendly values (symbols, single error classes) into canonical forms before merging.
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.280.0 to 1.281.0. - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](ruby/setup-ruby@d5f787c...675dd7b) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-version: 1.281.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.14.0 to 2.14.1. - [Release notes](https://github.com/step-security/harden-runner/releases) - [Commits](step-security/harden-runner@20cf305...e3f713f) --- updated-dependencies: - dependency-name: step-security/harden-runner dependency-version: 2.14.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [puma](https://github.com/puma/puma) from 7.1.0 to 7.2.0. - [Release notes](https://github.com/puma/puma/releases) - [Changelog](https://github.com/puma/puma/blob/main/History.md) - [Commits](puma/puma@v7.1.0...v7.2.0) --- updated-dependencies: - dependency-name: puma dependency-version: 7.2.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.1 to 6.0.2. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@8e8c483...de0fac2) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [standard](https://github.com/standardrb/standard) from 1.52.0 to 1.53.0. - [Release notes](https://github.com/standardrb/standard/releases) - [Changelog](https://github.com/standardrb/standard/blob/main/CHANGELOG.md) - [Commits](standardrb/standard@v1.52.0...v1.53.0) --- updated-dependencies: - dependency-name: standard dependency-version: 1.53.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.281.0 to 1.286.0. - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](ruby/setup-ruby@675dd7b...90be115) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-version: 1.286.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.6.0 to 3.7.0. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](docker/login-action@5e57cd1...c94ce9f) --- updated-dependencies: - dependency-name: docker/login-action dependency-version: 3.7.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.286.0 to 1.288.0. - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](ruby/setup-ruby@90be115...09a7688) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-version: 1.288.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.