Skip to content

Chameleon

v2.38.12 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 stale-index facts in correctness reviewer and related idiom review issues.

Full changelog

Multi-lens review and idiom-judge correctness pass (exhaustive audit of both
paths against real repos).

Fixed

  • Stale-index facts fed to the correctness reviewer. The turn-end correctness
    lens grounds the reviewer prompt with caller facts and transitive caller chains
    read from the committed calls snapshot, and the prompt tells the reviewer to
    flag a finding for any listed caller a change would break. Those caller sites
    were never re-verified against the working tree, so after a refactor the
    reviewer was handed callers that no longer exist or no longer call the changed
    function (a deleted file cited with an exact line, a chain through a deleted
    module) and steered to raise a phantom finding. This is the recurring "stale
    index" symptom. Both blocks now re-verify each cited caller against the working
    tree (the file is readable and still references the function) and drop the stale
    ones: the one-hop block recomputes its count, and a transitive chain is
    truncated at its first stale edge (dropped if that shortens it below the hop
    threshold). Advisory grounding, so a renamed caller the snapshot cannot follow
    simply drops rather than misreports.
  • The turn-end idiom self-review could truncate an idiom mid-block. Past the
    context cap the idioms/principles text was hard-sliced with no marker, so a cut
    landing inside a counterexample fence could read an anti-pattern as the
    recommended form, or cut a directive mid-sentence and lose its polarity. The
    block now ends with a "truncated; see the file" marker (matching the per-edit
    path) so a shortened block never reads as the complete idiom set.
  • The once-per-session idiom-review marker was never aged out. A turn with no
    session id collapsed every marker to one shared file, after which the idiom
    review was skipped indefinitely. The marker namespace is now reaped at
    SessionStart like the other once-per-session markers.
  • The multi-lens advisory header overstated its coverage. When the correctness
    lens ran detached (async mode, or on a bare-auth fallback), only the duplication
    lens ran synchronously, yet the header still claimed "correctness + duplication."
    It now names only the lenses that actually ran this turn.
  • A duplication pair could be permanently suppressed without ever being shown.
    The multi-lens duplication lens marked a finding "surfaced" before synthesis and
    rendering; an error in between left the marker written but no advisory emitted.
    The mark now happens only after the finding is rendered.
  • The duplication lens ignored its own per-session spawn cap under multi-lens,
    running up to the (larger) correctness budget instead. It now honors the
    duplication cap.
  • The idiom_judge directive no longer claims an "independent judge is enabled"
    (no separate judge spawns from this gate); it now reads as a high-bar self-review
    instruction, matching what the flag actually does.

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]