Skip to content

Chameleon

v4.4.38 Bugfix

This release fixes issues for SREs watching stability and regressions.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

ai-coding-assistant archetype ast-analysis claude-code claude-plugin code-conventions
+12 more
code-review code-style developer-tools javascript linter mcp mcp-server prompt-engineering python ruby rails typescript

Summary

AI summary

Fixed extraction of Ruby DSL conventions for module‑nested Rails controllers.

Changes in this release

Bugfix Medium

Fixes extraction of Ruby DSL conventions for module-nested classes in Rails controllers.

Fixes extraction of Ruby DSL conventions for module-nested classes in Rails controllers.

Source: llm_adapter@2026-07-20

Confidence: medium

Full changelog

Fixed

  • Ruby DSL conventions were silently dropped for module-nested classes -- the
    standard Rails API layout (module Api; module V1; class UsersController).
    _RUBY_DSL_CALL_RE anchored on a literal two-space indent (^ ), so a class
    body indented to 4 or 6 spaces by its module wrappers matched nothing, and
    extract_method_call_conventions returned {} for the cohort. Controllers are
    the most module-nested archetype in every Rails app, so the archetype that most
    needs before_action / rescue_from guidance got none: on a real Rails fixture
    conventions.json carried method_calls for model/service/serializer/query and
    omitted controller entirely. The class-contract pass compounds it by filtering
    allowlisted macros out of dsl_macros on the grounds that the Common DSL line
    already covers them -- a line that never fired for nested classes.

    The extractor now prefers the parser's own class_body_calls (recorded with the
    enclosing class at any nesting depth, so indentation cannot fool it), keeping the
    raw-bytes regex only as the fallback for a degraded or legacy profile, and that
    fallback is corrected to any-indent (^[ \t]+) -- the form lint_engine's
    _RUBY_DSL_RE had all along. Same intent, two regexes, one wrong.

    End-to-end: the 9 module-nested controllers now derive
    {'common_top5': ['before_action'], 'sample_size': 9} (was {}); top-level
    models are unchanged. Found by the full-matrix Rails column, then adversarially
    verified -- which confirmed the outcome while REFUTING the reported mechanism
    (the AST extractor handles nesting correctly at any depth; only this regex did not).

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Chameleon

Get notified when new releases ship.

Sign up free

About Chameleon

All releases →

Related context

Earlier breaking changes

  • v3.0.0 MCP surface folded from 48 tools to 19; remaining 32 operator tools become actions on three dispatchers.

Beta — feedback welcome: [email protected]