This release includes 1 security fix for security teams reviewing exposed deployments.
Published 29d
Developer Productivity
✓ No known CVEs patched
This release patches 1 known CVE
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
Summary
AI summaryRefresh repairs damaged enforcement.json, Ruby constant_index.json, and Python exports/reverse indexes while fixing large file handling in the Python extractor.
Full changelog
Fixed
- Refresh now repairs a damaged
enforcement.jsoninstead of preserving it.
A corrupt enforcement file — or a valid object whoseblock_rulesis not a
dict — madeactive_block_rulesfall open to an empty set, silently voiding
all block-rule enforcement whilemode=enforcestill read as healthy, and a
normal refresh noop-preserved the damage. The repair predicate now requires
enforcement.jsonto parse to a dict whoseblock_rulesis itself a dict, so
/chameleon-refreshre-derives and restores it. - Refresh now repairs a corrupt Ruby
constant_index.json. The Ruby
cross-file constant graph (the analogue of the TypeScript/Python symbol
indexes) was missing from the repair set, so a corrupt one silently killed the
cross-file existence-break advisory,get_blast_radius, and
get_contract_breakswith no recovery path. It is now validated and repaired. - Refresh now repairs corrupt Python
exports_index.json/
reverse_index.jsonand an emptyprofile.summary.md. The symbol-index
repair check was TypeScript-only; Python writes these indexes too. The summary
check was existence-only. - The Python extractor no longer drops large valid files. The libcst node
ceiling counted dense CST nodes against a cap meant for sparser AST nodes, so a
valid sub-1 MB file (≈3500 lines) was silently skipped. The cap is retuned to
libcst density;MAX_FILE_SIZEremains the real bound. - The status line strips box-drawing characters from cached profile fields,
so a poisoned cache name can no longer forge a│-delimited trust segment. get_callersdocumentation now credits Python import-grade callers (the
docstrings said the import grade was TypeScript-only; Python emits it too).
Security Fixes
- Status line now strips box-drawing characters from cached profile fields, preventing forged trust segments.
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]