# Changelog

## Score

- CAI 59 → 55 (-4.0)
- Rubric changed (rubric-2026.10.1 → rubric-2026.10.5) — scores are not directly comparable.

## Lenses

- Code Health 99 → 75 (-23.6)
- Architecture 99 → 99 (+0.0)
- Maturity 48 → 45 (-2.9)
- Readiness 41 → 41 (+0.0)
- Security 95 → 92 (-2.7)
- Domain Modelling 100 → 100 (+0.0)

## Resolved (4)

- Ambiguous distinction between `stop` and `stop!`. In Ruby, `!` often implies a more aggressive or blocking action, but without documentation, it is unclear if `stop` is non-blocking and `stop!` is blocking, or if they are aliases. This creates inconsistency in the shutdown API.
- Inconsistent job execution entry points. `Job.run` takes `args`, `JobMethods._run` takes `args, kwargs, reraise_errors`, and `SafeJob.run` takes no arguments. It is unclear if these are different execution contexts (e.g., internal vs. public API) or if `SafeJob` is a wrapper that should delegate to `Job.run`. The signature variance suggests a lack of a unified execution contract.
- Redundant accessors for the same configuration value. One is a method call, the other is a property access. In Ruby, this is often an implementation detail, but exposing both as distinct API surface items creates confusion about which to use.
- Workflow token permissions not restricted

## New (15)

- Ambiguous distinction between 'grouped' and standard message waiting. It is unclear if these are distinct operational modes or if one is a deprecated/alias of the other, leading to potential confusion for users trying to implement non-blocking or batched listening.
- Inconsistent naming convention for termination methods. The exclamation mark (!) typically denotes a dangerous or irreversible operation in Ruby, while the non-bang version might imply a graceful or checkable stop. However, 'stop' is already present alongside 'stopping?', suggesting 'stop!' might be redundant or confusingly similar to 'stop'.
- Orphaned file (lib/que.rb)
- Orphaned file (lib/que/active_job/extensions.rb)
- Orphaned file (lib/que/command_line_interface.rb)
- Orphaned file (lib/que/connection.rb)
- Orphaned file (lib/que/job_buffer.rb)
- Orphaned file (lib/que/job_methods.rb)
- Orphaned file (lib/que/listener.rb)
- Orphaned file (lib/que/locker.rb)
- Orphaned file (lib/que/migrations.rb)
- Orphaned file (lib/que/poller.rb)
- Orphaned file (lib/que/worker.rb)
- Redundant method names for similar operations. 'shift' and 'shift_job' likely perform the same core action of retrieving a job from the buffer. The distinction is not immediately obvious from the signature alone.
- Workflow token permissions not restricted (.github/workflows/tests.yml)
