Skip to content

Chameleon

v4.1.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 bootstrap cleanup for no‑remote repos and ensured torn .chameleon files are reported as index‑unavailable.

Changes in this release

Bugfix Medium

Bootstrap of a no‑remote repo no longer leaves permanently‑orphaned plugin‑data directories.

Bootstrap of a no‑remote repo no longer leaves permanently‑orphaned plugin‑data directories.

Source: llm_adapter@2026-07-17

Confidence: high

Bugfix Medium

Committed‑index loaders treat a torn `.chameleon` as index‑unavailable instead of serving corrupted data.

Committed‑index loaders treat a torn `.chameleon` as index‑unavailable instead of serving corrupted data.

Source: llm_adapter@2026-07-17

Confidence: high

Bugfix Medium

Post‑tool verify cooldown is reachable; dedup TTL no longer gets zeroed.

Post‑tool verify cooldown is reachable; dedup TTL no longer gets zeroed.

Source: llm_adapter@2026-07-17

Confidence: high

Bugfix Medium

Partial refresh stamps `conventions.json` with the generation, preventing false "bundle is unloadable" errors.

Partial refresh stamps `conventions.json` with the generation, preventing false "bundle is unloadable" errors.

Source: llm_adapter@2026-07-17

Confidence: high

Bugfix Medium

FastAPI package‑form roles (`app/schemas/`, `app/dependencies/`, `deps/`, `crud/`) now bucket correctly, avoiding unintended inheritance of Pydantic schema guidance.

FastAPI package‑form roles (`app/schemas/`, `app/dependencies/`, `deps/`, `crud/`) now bucket correctly, avoiding unintended inheritance of Pydantic schema guidance.

Source: llm_adapter@2026-07-17

Confidence: high

Bugfix Medium

`.gitattributes-template` routes the structured idiom store to the merge driver, preventing conflict markers in live idiom state.

`.gitattributes-template` routes the structured idiom store to the merge driver, preventing conflict markers in live idiom state.

Source: llm_adapter@2026-07-17

Confidence: high

Full changelog

Fixes from the qa66 whole-plugin, from-scratch, real-invocation campaign
(512 cells across 8 language/framework rows plus support-process and
hostile-input rows; 10 findings, every one adversarially re-verified in a
fresh isolated workspace before being fixed, and every fix re-verified with
the finding's own real repro afterward).

Fixed

  • A from-scratch bootstrap of a no-remote repo (fresh git init, no origin)
    no longer leaves permanently-orphaned plugin-data directories: after the
    orchestrator mints the repo_uuid, bootstrap_repo invalidates the
    same-process repo-id cache, recomputes the final identity, scopes the drift
    baseline to it, and sweeps the pre-uuid lock directory (skipped whole when
    a concurrent claimant holds the lock, so contention never splits the
    bootstrap mutual exclusion). detect_repo's
    legacy-id re-trust hint now uses a non-creating probe
    (trust_state_probe) instead of minting an empty directory per probed
    identity.
  • The five committed-index loaders (symbol signatures, calls index, exports
    index, reverse index, function catalog) honor the COMMITTED transaction
    sentinel like every other profile loader: a torn .chameleon (crash
    mid-commit, unresolved merge) now reads as index-unavailable across
    search_codebase/get_callers/get_callees/query_symbol_importers/
    get_blast_radius/get_duplication_candidates instead of being served as
    ground truth while sibling tools report profile_corrupted for the same
    tree. Doctor reports that torn state directly ("profile is uncommitted ...
    run /chameleon-refresh") instead of misreading each refused loader as a
    stale-schema artifact.
  • The documented "5 seconds once escalated" posttool-verify cooldown is
    reachable: the self-correction window no longer zeroes the dedup TTL. The
    byte-identical-content digest gate already guarantees a real fix is never
    swallowed, and because every violating verify re-stamped
    last_violation_at, the zeroing had made the dedup structurally
    unreachable for any file that ever violated.
  • A partial refresh stamps the carried conventions.json with the refresh's
    generation, so the bundle stays generation-consistent; doctor's
    cross-artifact check now mirrors the loader's actual gate (four artifacts)
    and reports a lagging conventions.json as staleness instead of falsely
    claiming "the bundle is unloadable" after every partial refresh.
  • FastAPI package-form roles: app/schemas/ and app/dependencies/ (and
    deps/, crud/) now role-bucket like their filename forms, so a
    dependencies file no longer inherits the Pydantic schemas archetype's
    "extends BaseModel" guidance via path fallback, and a schemas package
    names cleanly (schema) instead of an opaque cluster hash.
  • .gitattributes-template routes the structured idiom store
    (.chameleon/idioms/**) to the merge driver: two branches that each
    taught a different idiom always collide on the .view_digest sidecar,
    and the unrouted merge wrote raw conflict markers into live store state.
    With the route, per-idiom JSON records merge and the sidecar is declined
    whole (accept either side; the next teach or refresh recomputes it).

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]