This release fixes issues for SREs watching stability and regressions.
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
Summary
AI summaryTeach operations that interfere with profile re-derive no longer silently fail, now returning a retry‑shortly rejection.
Full changelog
Fixed
- A teach racing a profile re-derive is no longer silently lost. A
(re-)bootstrapreadsidioms.mdandconventions.jsonearly and carries
those snapshots into the atomic profile swap, holding only.bootstrap.lock.
teach_profilewritesidioms.mdunder.idioms.lockand
teach_competing_import/apply_archetype_renameswriteconventions.json
(andrenames.json) under.conventions.lock— disjoint locks. A teach that
landed between the carry-read and the swap returnedsuccessbut was then
clobbered by the swap, with no integrity check to catch it. The refresh
wrapper already guardedidioms.mdwith.idioms.lock, but the common
/chameleon-refresh --force(and background auto-refresh) path left
conventions.jsonexposed, and a directbootstrap_repo(force=True)
(/chameleon-initre-init) leftidioms.mdexposed. The (re-)derive now
serializes against both teach write locks across its read-to-swap window, so
a concurrent teach gets a clean "retry shortly" rejection instead of a silent
loss. Locks are acquired in one fixed order everywhere (.idioms→
.conventions→.bootstrap), so a refresh and a direct re-init cannot
deadlock; verified under concurrent stress.
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]