Skip to content

feat: RBS signatures for Kaal gems#112

Merged
niteshpurohit merged 4 commits into
mainfrom
feat/full-rbs-coverage
May 25, 2026
Merged

feat: RBS signatures for Kaal gems#112
niteshpurohit merged 4 commits into
mainfrom
feat/full-rbs-coverage

Conversation

@niteshpurohit
Copy link
Copy Markdown
Member

  • 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.

@niteshpurohit niteshpurohit self-assigned this May 25, 2026
Copilot AI review requested due to automatic review settings May 25, 2026 22:25
- 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.
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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) to kaal and adapter/framework gems.
  • Added repo-level and CI entrypoints to run rbs -I sig validate across 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.

Comment thread gems/kaal/lib/kaal/config/configuration.rb
Comment thread gems/kaal/lib/kaal/config/file_loader.rb
Comment thread gems/kaal/lib/kaal/config/file_loader.rb
Comment thread gems/kaal/lib/kaal/config/backend_factory.rb
Comment thread gems/kaal-rails/spec/dummy/config/initializers/kaal.rb
Comment thread gems/kaal/sig/kaal/utils/cron_utils.rbs Outdated
Comment thread gems/kaal/sig/kaal/registry.rbs Outdated
@niteshpurohit niteshpurohit force-pushed the feat/full-rbs-coverage branch from fe6b019 to 34f8f51 Compare May 25, 2026 22:30
Copilot AI review requested due to automatic review settings May 25, 2026 22:39
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 114 out of 116 changed files in this pull request and generated 4 comments.

Comment thread gems/kaal/sig/kaal/utils/cron_utils.rbs Outdated
Comment thread gems/kaal/sig/kaal/utils/cron_humanizer.rbs
Comment thread gems/kaal/sig/kaal/config/file_loader.rbs
Comment thread gems/kaal/sig/kaal/scheduler_file/loader.rbs
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 114 out of 116 changed files in this pull request and generated no new comments.

@niteshpurohit niteshpurohit merged commit 7e299cf into main May 25, 2026
25 checks passed
@niteshpurohit niteshpurohit deleted the feat/full-rbs-coverage branch May 25, 2026 23:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants