This release includes breaking changes for platform teams planning a safe upgrade.
Published 1mo
Developer Productivity
✓ No known CVEs patched
✓ 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
Affected surfaces
auth
rbac
rce_ssrf
Summary
AI summaryRuby cross-file blast radius added and autopass detection fixed.
Full changelog
Ruby cross-file blast radius, plus per-language gaps closed by a proactive
cross-matrix verification of every recent fix.
Added
- Ruby constant-reference reverse index (cross-file blast radius). Ruby has
no static named-export surface (requirepulls a whole file by side effect),
so it never got the TS/Python reverse index — the biggest cross-file blind
spot on a Rails monolith. The new index inverts Ruby's class/constant graph:
for each constant, the files that define it and the files that reference it
(via a constant-receiver call site), built from parse data already collected.
query_symbol_importersnow returns the Ruby blast radius (editing the file
that defines a widely-used service class lists its callers), and the autopass
blast-radius gate consumes it. The index is built for Ruby at bootstrap/refresh
and hashed into the trust SHA. Existing Ruby repos pick it up on their next
/chameleon-refresh. - Ruby constant-existence break for PR review.
get_crossfile_contextand
the turn-end advisory now flag a class/module that the index records as defined
in an edited file but the file no longer defines, while other files still
reference it — the Ruby analogue of a removed export still imported.
High-confidence only (one defining file, bare top-level name, a referencer that
still names it). /chameleon-teachaccepts an optional archetype to scope a free-form
idiom (so it surfaces first on that archetype's edits); omitted, the idiom
stays general and applies to every archetype.
Fixed
- Autopass blast-radius now covers Ruby (it keyed on the reverse-index
extensions and read 0 for.rb, inconsistent with the Stop judge-router that
already counted Ruby fan-out). - Paren-less Kernel#eval is now detected (
eval "..."/eval s/
eval %(...)) — the rule only matchedeval(, so the idiomatic Ruby form
slipped enforcement entirely. Fires at error severity, no false positives on
instance_eval/class_eval, member calls, assignments, or comment/string
mentions. - Lint wording is language-correct for Python and Ruby. The node-kind
humanizer had no Python (libcst) labels, soClassDef/FunctionDefleaked
raw; and thelint_filetool never passed the language through, so Ruby and
Python output used the TypeScript "default export" framing. Both fixed. - The inline-override hint offers
# chameleon-ignoreto Python (it only
special-cased Ruby; Python developers got the//token, a syntax error in
their file). - Contract breaks now detect the canonical Ruby service-object. A class with
both a class method and an instance method of the same name (def self.call+
def call) was dropped as ambiguous, missing the very method that has callers;
the singleton (the constant-receiver target) is now kept.
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
About Chameleon
All releases →Beta — feedback welcome: [email protected]