feat: RBS signatures for Kaal gems#112
Merged
Merged
Conversation
Member
niteshpurohit
commented
May 25, 2026
- Introduced RBS signatures for various components of the Kaal gems, including persistence, runtime, and scheduler functionalities.
- Created signatures for classes such as Database, Registry, and SchedulerFileLoader to enhance type safety and developer experience.
- Added utility modules for handling cron expressions and idempotency key generation.
- Implemented a new script to validate RBS signatures across multiple gem directories, ensuring strict type checks.
- This change aims to improve code maintainability and facilitate better integration with type-checking tools.
- Introduced RBS signatures for various components of the Kaal gems, including persistence, runtime, and scheduler functionalities. - Created signatures for classes such as Database, Registry, and SchedulerFileLoader to enhance type safety and developer experience. - Added utility modules for handling cron expressions and idempotency key generation. - Implemented a new script to validate RBS signatures across multiple gem directories, ensuring strict type checks. - This change aims to improve code maintainability and facilitate better integration with type-checking tools.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces RBS signature files across the Kaal gem suite and wires signature validation into repo scripts and CI, aiming to improve type safety and developer tooling integration.
Changes:
- Added
sig/trees (RBS signatures + local dependency shims) tokaaland adapter/framework gems. - Added repo-level and CI entrypoints to run
rbs -I sig validateacross gem directories. - Refactored parts of runtime configuration loading/coercion and backend config normalization to support stricter typing.
Reviewed changes
Copilot reviewed 120 out of 123 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| scripts/run-rbs-all | New script to validate RBS signatures across gem directories. |
| scripts/run-all | Adds an rbs phase to the repo-level runner. |
| README.md | Documents the new RBS validation entrypoint/command. |
| gems/kaal/spec/kaal/configuration_and_utils_spec.rb | Updates specs to reflect config loader/normalization behavior changes. |
| gems/kaal/spec/kaal_api_and_cli_spec.rb | Minor spec formatting/line alignment change. |
| gems/kaal/sig/00_types.rbs | Defines shared RBS helper types (e.g., rbs_any). |
| gems/kaal/sig/dependencies.rbs | Adds shim signatures for external deps used by kaal. |
| gems/kaal/sig/kaal.rbs | Adds top-level Kaal API signatures. |
| gems/kaal/sig/kaal/active_record_support.rbs | Adds signatures for ActiveRecord migration helpers. |
| gems/kaal/sig/kaal/backend/adapter.rbs | Adds backend adapter interface signatures. |
| gems/kaal/sig/kaal/backend/dispatch_attempt_logger.rbs | Adds signatures for dispatch attempt logging helper. |
| gems/kaal/sig/kaal/backend/dispatch_logging.rbs | Adds signatures for backend dispatch logging mixin. |
| gems/kaal/sig/kaal/backend/dispatch_registry_accessor.rbs | Adds signatures for dispatch registry accessor. |
| gems/kaal/sig/kaal/backend/memory_adapter.rbs | Adds signatures for in-memory backend adapter. |
| gems/kaal/sig/kaal/backend/mysql.rbs | Adds signatures for MySQL backend adapter. |
| gems/kaal/sig/kaal/backend/postgres.rbs | Adds signatures for Postgres backend adapter. |
| gems/kaal/sig/kaal/backend/redis_adapter.rbs | Adds signatures for Redis backend adapter. |
| gems/kaal/sig/kaal/backend/sqlite.rbs | Adds signatures for SQLite backend adapter. |
| gems/kaal/sig/kaal/cli.rbs | Adds signatures for the Thor-based CLI. |
| gems/kaal/sig/kaal/config.rbs | Adds signatures for config namespace exports. |
| gems/kaal/sig/kaal/config/backend_factory.rbs | Adds signatures for backend factory functions. |
| gems/kaal/sig/kaal/config/configuration.rbs | Adds signatures for the Configuration object and errors. |
| gems/kaal/sig/kaal/config/delayed_job_security_policy.rbs | Adds signatures for delayed-job security warning logic. |
| gems/kaal/sig/kaal/config/file_loader.rbs | Adds signatures for config file/env loader. |
| gems/kaal/sig/kaal/config/scheduler_config_error.rbs | Adds signatures for scheduler config error type. |
| gems/kaal/sig/kaal/config/scheduler_time_zone_resolver.rbs | Adds signatures for scheduler time zone resolver. |
| gems/kaal/sig/kaal/core.rbs | Adds signatures for core namespace exports. |
| gems/kaal/sig/kaal/core/coordinator.rbs | Adds signatures for scheduler coordinator. |
| gems/kaal/sig/kaal/core/enabled_entry_enumerator.rbs | Adds signatures for enabled-entry enumeration. |
| gems/kaal/sig/kaal/core/occurrence_finder.rbs | Adds signatures for cron occurrence finder. |
| gems/kaal/sig/kaal/definition/database_engine.rbs | Adds signatures for DB-backed definition registry engine. |
| gems/kaal/sig/kaal/definition/memory_engine.rbs | Adds signatures for in-memory definition engine. |
| gems/kaal/sig/kaal/definition/persistence_helpers.rbs | Adds signatures for definition persistence helpers. |
| gems/kaal/sig/kaal/definition/redis_engine.rbs | Adds signatures for Redis definition engine. |
| gems/kaal/sig/kaal/definition/registry.rbs | Adds signatures for abstract definition registry + helpers. |
| gems/kaal/sig/kaal/definitions/registration_service.rbs | Adds signatures for definition registration service. |
| gems/kaal/sig/kaal/definitions/registry_accessor.rbs | Adds signatures for definition registry accessor. |
| gems/kaal/sig/kaal/delayed_job/database_engine.rbs | Adds signatures for DB delayed-job engine. |
| gems/kaal/sig/kaal/delayed_job/dispatch_failure_logger.rbs | Adds signatures for delayed-job failure logging helper. |
| gems/kaal/sig/kaal/delayed_job/memory_engine.rbs | Adds signatures for in-memory delayed-job engine. |
| gems/kaal/sig/kaal/delayed_job/mysql_version_support.rbs | Adds signatures for MySQL skip-locked support helpers. |
| gems/kaal/sig/kaal/delayed_job/redis_engine.rbs | Adds signatures for Redis delayed-job engine. |
| gems/kaal/sig/kaal/delayed_job/registry.rbs | Adds signatures for delayed-job registry interface/errors. |
| gems/kaal/sig/kaal/dispatch/database_engine.rbs | Adds signatures for DB dispatch registry engine. |
| gems/kaal/sig/kaal/dispatch/memory_engine.rbs | Adds signatures for in-memory dispatch engine. |
| gems/kaal/sig/kaal/dispatch/redis_engine.rbs | Adds signatures for Redis dispatch engine. |
| gems/kaal/sig/kaal/dispatch/registry.rbs | Adds signatures for dispatch registry interface. |
| gems/kaal/sig/kaal/internal/active_record.rbs | Adds (empty) internal ActiveRecord namespace signature file. |
| gems/kaal/sig/kaal/internal/active_record/base_record.rbs | Adds signatures for ActiveRecord base model. |
| gems/kaal/sig/kaal/internal/active_record/connection_support.rbs | Adds signatures for internal AR connection helpers. |
| gems/kaal/sig/kaal/internal/active_record/database_backend.rbs | Adds signatures for internal AR database backend. |
| gems/kaal/sig/kaal/internal/active_record/definition_record.rbs | Adds signatures for AR definition record. |
| gems/kaal/sig/kaal/internal/active_record/definition_registry.rbs | Adds signatures for AR definition registry. |
| gems/kaal/sig/kaal/internal/active_record/delayed_job_record.rbs | Adds signatures for AR delayed-job record. |
| gems/kaal/sig/kaal/internal/active_record/delayed_job_registry.rbs | Adds signatures for AR delayed-job registry. |
| gems/kaal/sig/kaal/internal/active_record/dispatch_record.rbs | Adds signatures for AR dispatch record. |
| gems/kaal/sig/kaal/internal/active_record/dispatch_registry.rbs | Adds signatures for AR dispatch registry. |
| gems/kaal/sig/kaal/internal/active_record/lock_record.rbs | Adds signatures for AR lock record. |
| gems/kaal/sig/kaal/internal/active_record/migration_templates.rbs | Adds signatures for AR migration template generation. |
| gems/kaal/sig/kaal/internal/active_record/mysql_backend.rbs | Adds signatures for internal AR MySQL backend. |
| gems/kaal/sig/kaal/internal/active_record/postgres_backend.rbs | Adds signatures for internal AR Postgres backend. |
| gems/kaal/sig/kaal/internal/sequel.rbs | Adds (empty) internal Sequel namespace signature file. |
| gems/kaal/sig/kaal/internal/sequel/database_backend.rbs | Adds signatures for internal Sequel database backend. |
| gems/kaal/sig/kaal/internal/sequel/mysql_backend.rbs | Adds signatures for internal Sequel MySQL backend. |
| gems/kaal/sig/kaal/internal/sequel/postgres_backend.rbs | Adds signatures for internal Sequel Postgres backend. |
| gems/kaal/sig/kaal/job_dispatcher.rbs | Adds signatures for job dispatch utilities. |
| gems/kaal/sig/kaal/persistence/database.rbs | Adds signatures for persistence Database wrapper. |
| gems/kaal/sig/kaal/persistence/migration_templates.rbs | Adds signatures for Sequel migration templates. |
| gems/kaal/sig/kaal/register_conflict_support.rbs | Adds signatures for conflict-resolution helpers. |
| gems/kaal/sig/kaal/registry.rbs | Adds signatures for runtime registry. |
| gems/kaal/sig/kaal/runtime.rbs | Adds signatures for runtime namespace exports. |
| gems/kaal/sig/kaal/runtime/runtime_context.rbs | Adds signatures for runtime context. |
| gems/kaal/sig/kaal/runtime/scheduler_boot_loader.rbs | Adds signatures for scheduler boot loader. |
| gems/kaal/sig/kaal/runtime/signal_handler_chain.rbs | Adds signatures for signal handler chaining. |
| gems/kaal/sig/kaal/runtime/signal_handler_installer.rbs | Adds signatures for signal handler installation. |
| gems/kaal/sig/kaal/scheduler_file.rbs | Adds signatures for scheduler-file namespace exports. |
| gems/kaal/sig/kaal/scheduler_file/hash_transform.rbs | Adds signatures for scheduler hash transform helper. |
| gems/kaal/sig/kaal/scheduler_file/helper_bundle.rbs | Adds signatures for helper bundle wrapper. |
| gems/kaal/sig/kaal/scheduler_file/job_applier.rbs | Adds signatures for applying scheduler-file jobs. |
| gems/kaal/sig/kaal/scheduler_file/job_normalizer.rbs | Adds signatures for normalizing scheduler-file job payloads. |
| gems/kaal/sig/kaal/scheduler_file/loader.rbs | Adds signatures for scheduler file loader. |
| gems/kaal/sig/kaal/scheduler_file/payload_loader.rbs | Adds signatures for scheduler payload loader. |
| gems/kaal/sig/kaal/scheduler_file/placeholder_support.rbs | Adds signatures for placeholder resolution/validation. |
| gems/kaal/sig/kaal/sequel_support.rbs | Adds signatures for Sequel migration helpers. |
| gems/kaal/sig/kaal/support/hash_tools.rbs | Adds signatures for hash utility helpers. |
| gems/kaal/sig/kaal/utils.rbs | Adds signatures for utils namespace exports. |
| gems/kaal/sig/kaal/utils/cron_humanizer.rbs | Adds signatures for cron humanization. |
| gems/kaal/sig/kaal/utils/cron_utils.rbs | Adds signatures for cron parsing/validation utilities. |
| gems/kaal/sig/kaal/utils/idempotency_key_generator.rbs | Adds signatures for idempotency key generation. |
| gems/kaal/sig/kaal/version.rbs | Adds signatures for Kaal::VERSION. |
| gems/kaal/lib/kaal/cli.rb | Avoids loading scheduler file when the scheduler config file is missing. |
| gems/kaal/lib/kaal/config/backend_factory.rb | Refines MySQL/connection hash normalization logic. |
| gems/kaal/lib/kaal/config/configuration.rb | Adds backend_runtime_context and refactors backend/backend_config normalization. |
| gems/kaal/lib/kaal/config/file_loader.rb | Refactors env coercion, YAML parsing, and configuration application. |
| gems/kaal/kaal.gemspec | Ships sig/ in the kaal gem package. |
| gems/kaal-hanami/sig/00_types.rbs | Adds shared helper RBS types for kaal-hanami. |
| gems/kaal-hanami/sig/dependencies.rbs | Adds dependency shims for kaal-hanami signatures. |
| gems/kaal-hanami/sig/kaal/hanami.rbs | Adds signatures for kaal-hanami integration API. |
| gems/kaal-hanami/sig/kaal/hanami/middleware.rbs | Adds signatures for Hanami middleware. |
| gems/kaal-hanami/sig/kaal/hanami/version.rbs | Adds signatures for kaal-hanami version constant. |
| gems/kaal-hanami/kaal-hanami.gemspec | Ships sig/ in the kaal-hanami gem package. |
| gems/kaal-rails/spec/dummy/config/initializers/kaal.rb | Updates dummy app initializer YAML generation. |
| gems/kaal-rails/sig/00_types.rbs | Adds shared helper RBS types for kaal-rails. |
| gems/kaal-rails/sig/dependencies.rbs | Adds dependency shims for kaal-rails signatures. |
| gems/kaal-rails/sig/generators/kaal/install_generator.rbs | Adds signatures for the install generator. |
| gems/kaal-rails/sig/kaal/rails.rbs | Adds signatures for kaal-rails integration API. |
| gems/kaal-rails/sig/kaal/rails/installer.rbs | Adds signatures for installer helper. |
| gems/kaal-rails/sig/kaal/rails/railtie.rbs | Adds signatures for Railtie. |
| gems/kaal-rails/sig/kaal/rails/version.rbs | Adds signatures for kaal-rails version constant. |
| gems/kaal-rails/kaal-rails.gemspec | Ships sig/ in the kaal-rails gem package. |
| gems/kaal-roda/sig/00_types.rbs | Adds shared helper RBS types for kaal-roda. |
| gems/kaal-roda/sig/dependencies.rbs | Adds dependency shims for kaal-roda signatures. |
| gems/kaal-roda/sig/kaal/roda.rbs | Adds signatures for kaal-roda integration API. |
| gems/kaal-roda/sig/kaal/roda/version.rbs | Adds signatures for kaal-roda version constant. |
| gems/kaal-roda/sig/roda/plugins/kaal.rbs | Adds signatures for the Roda plugin entrypoint. |
| gems/kaal-roda/kaal-roda.gemspec | Ships sig/ in the kaal-roda gem package. |
| gems/kaal-sinatra/sig/00_types.rbs | Adds shared helper RBS types for kaal-sinatra. |
| gems/kaal-sinatra/sig/dependencies.rbs | Adds dependency shims for kaal-sinatra signatures. |
| gems/kaal-sinatra/sig/kaal/sinatra.rbs | Adds signatures for kaal-sinatra integration API. |
| gems/kaal-sinatra/sig/kaal/sinatra/version.rbs | Adds signatures for kaal-sinatra version constant. |
| gems/kaal-sinatra/kaal-sinatra.gemspec | Ships sig/ in the kaal-sinatra gem package. |
| docs/pages/10 be-a-contributor.md | Documents RBS validation in contributor workflow. |
| .github/workflows/shared-ci.yml | Adds an RBS validation job and makes tests depend on it. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
fe6b019 to
34f8f51
Compare
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.