Skip to content

Chameleon

v4.4.1 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 false‑positive file‑naming lint for compound suffixes across directories and prevented pre‑write reuse nudges from flagging common framework method names.

Changes in this release

Bugfix Medium

Per-edit file-naming lint no longer false-flags files following their own directory's suffix convention.

Per-edit file-naming lint no longer false-flags files following their own directory's suffix convention.

Source: llm_adapter@2026-07-17

Confidence: high

Bugfix Medium

Pre-write reuse-before-create nudge stops treating framework-override contracts as reusable targets.

Pre-write reuse-before-create nudge stops treating framework-override contracts as reusable targets.

Source: llm_adapter@2026-07-17

Confidence: high

Full changelog

Fixed

  • Per-edit file-naming lint no longer false-flags a file that follows its OWN
    directory's suffix sub-convention. A semantic archetype can span directories
    with different suffix conventions (Rails app/workers/*_worker.rb alongside
    app/workers/scheduler/*_scheduler.rb, all one worker archetype; NestJS
    *.service.ts alongside a queues/*.processor.ts cohort). The lint now checks
    a file's compound suffix against its OWN same-language directory siblings and
    uses that directory convention ONLY to suppress the archetype-wide false
    positive — never to invent or redirect a suggestion, so a directory of misnamed
    files can neither legitimize a typo nor point a new file at a wrong local
    majority. Falls back to the archetype-wide suffix when the directory has too few
    same-language siblings (FILE_NAMING_DIR_MIN_SAMPLE, default 3). Inert for
    Python, which has no compound-suffix convention. See _directory_dominant_suffix
    in lint_engine.py.
  • Pre-write reuse-before-create nudge no longer points the model at a per-file
    framework-override contract as a "reuse target". A Rails migration's change
    (added to the dedup stopword list) and any name defined across more than
    PREWRITE_DEDUP_MAX_DEFINERS (default 6) DISTINCT files — a worker's perform,
    a service's call, a NestJS pipe's transform, a Django command's handle
    are recognized as conventions, not unique symbols worth reusing. Genuine
    small-count duplication (2–6 copies of a real helper) still surfaces. Language-
    and framework-agnostic: the guard keys on definer-file frequency. See
    _prewrite_dedup_section in hook_helper.py.

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]