# Changelog

> **This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.**

## Score

- CAI 49 → 43 (-6.2)
- Rubric changed (rubric-2026.10.1 → rubric-2026.10.5) — scores are not directly comparable.

## Lenses

- Code Health 57 → 57 (+0.0)
- Architecture 69 → 69 (+0.0)
- Maturity 65 → 37 (-27.9)
- Readiness 40 → 38 (-1.5)
- Security 63 → 63 (+0.0)
- Accessibility 53 → 51 (-1.9)

## Resolved (20)

- Ambiguous naming: `descendants` and `subclasses` are often used interchangeably in Ruby libraries to mean the same thing (immediate children vs. all descendants). Without documentation, it is unclear if one is immediate and the other is recursive, or if they are duplicates.
- Ambiguous naming: `version` and `gem_version` likely return the same or similar version information. In Ruby/Rails conventions, `gem_version` is the standard accessor for the gem's version string, while `version` is often ambiguous or reserved for other contexts. Having both suggests duplication.
- Confusingly similar names: `silence!` and `mute` appear to perform the same function (suppressing output/logs) on the same object. The `!` suffix usually implies a mutating side effect, while `mute` does not, but semantically they are likely identical operations.
- Documentation: no installation or build instructions (Labels-and-Selectors/README.MD)
- Duplicate intent across namespaces: `Date.yesterday` and `DateAndTime.Calculations.yesterday` (likely included in Date/Time) perform the same operation. While this might be due to module inclusion, exposing both as distinct top-level signatures in the public API surface creates confusion about which to use.
- Low cohesion: Deprecation (LCOM4 5) (.bundles_cache/ruby/2.6.0/gems/activesupport-6.1.7.3/lib/active_support/deprecation/proxy_wrappers.rb)
- Low cohesion: Multi (LCOM4 5) (.bundles_cache/ruby/2.6.0/gems/ethon-0.16.0/lib/ethon/multi/operations.rb)
- Low cohesion: Node (LCOM4 26) (.bundles_cache/ruby/2.6.0/gems/nokogiri-1.13.10-x86_64-linux/lib/nokogiri/xml/node.rb)
- Low cohesion: SelectThread (LCOM4 5) (.bundles_cache/ruby/2.6.0/gems/dnsruby-1.70.0/lib/dnsruby/select_thread.rb)
- No AppArmor/SELinux confinement
- No seccomp profile
- Outdated: github-pages
- Outdated: jekyll
- Outdated: jekyll-feed
- Outdated: jekyll-seo-tag
- Outdated: webrick
- Projects may be oversized for their cohesion
- Redundant definition: `excluding` is defined on both `Array` and `Enumerable`. Same redundancy issue.
- Redundant definition: `including` is defined on both `Array` and `Enumerable`. Since `Array` includes `Enumerable`, the method on `Enumerable` is sufficient for all arrays. Defining it on `Array` specifically is redundant and inconsistent with the general pattern of extending core types via modules.
- Redundant definition: `without` is defined on both `Array` and `Enumerable`. Same redundancy issue as `including`.

## New (161)

- Duplicate intent across types. While `Array` and `Enumerable` are distinct, `including` is a specific collection manipulation that duplicates the intent of `+` or `concat` but with a different signature/behavior (returning a new array vs modifying or returning self depending on context). More critically, `excluding` and `without` exist on both `Array` and `Enumerable` with identical signatures and intent.
- Duplicate method signatures with different parameter names, similar to `set_cache_for`.
- Duplicate method signatures with different parameter names. This suggests either an aliasing issue or a copy-paste error in the API definition where the same method is exposed twice with different arity or naming conventions.
- Duplicated block (11 lines × 2) (.bundles_cache/ruby/2.6.0/gems/eventmachine-1.2.7/ext/extconf.rb)
- Duplicated block (14 lines × 2) (.bundles_cache/ruby/2.6.0/gems/ethon-0.16.0/profile/memory_leaks.rb)
- Duplicated block (16 lines × 3) (.bundles_cache/ruby/2.6.0/gems/yell-2.2.2/examples/003.1-formatting-DefaultFormat.rb)
- Duplicated block (22–23 lines × 2) (.bundles_cache/ruby/2.6.0/gems/dnsruby-1.70.0/demo/digdlv.rb)
- Duplicated block (24 lines × 2) (.bundles_cache/ruby/2.6.0/gems/eventmachine-1.2.7/ext/extconf.rb)
- Duplicated block (25 lines × 2) (.bundles_cache/ruby/2.6.0/gems/eventmachine-1.2.7/ext/extconf.rb)
- Duplicated block (7 lines × 2) (.bundles_cache/ruby/2.6.0/gems/eventmachine-1.2.7/examples/guides/getting_started/01_eventmachine_echo_server.rb)
- Low cohesion: Deprecation (LCOM4 5) (.bundles_cache/ruby/2.6.0/gems/activesupport-6.1.7.3/lib/active_support/deprecation.rb)
- Low cohesion: Multi (LCOM4 5) (.bundles_cache/ruby/2.6.0/gems/ethon-0.16.0/lib/ethon/multi.rb)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Naming inconsistency with `excluding`. `without` and `excluding` do the same thing (return a new collection without the specified elements). Having both names available on the same types creates confusion for users choosing between them.
- Near-duplicate member pair (60 shared lines) (.bundles_cache/ruby/2.6.0/gems/eventmachine-1.2.7/ext/extconf.rb)
- No AppArmor/SELinux confinement (DaemonSet101/daemonset.yml)
- No AppArmor/SELinux confinement (Deployment101/blue-deploy.yaml)
- No AppArmor/SELinux confinement (Deployment101/green-deploy.yaml)
- No AppArmor/SELinux confinement (Deployment101/nginx-dep.yaml)
- …and 141 more

## Architecture

- 0 containers · 1 bounded contexts · 0 dependency edges (baseline)
