This release includes breaking changes for platform teams planning a safe upgrade.
Published 18d
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
breaking_upgrade
auth
Summary
AI summaryFixed linked git worktree support to consistently map profiles, preventing orphaned diverged profiles during refresh or bootstrap.
Full changelog
Fixed
- Linked git worktree support closed two dozen confirmed gaps. A committed
.chameleon/profile is normally gitignored and lives only at a repo's main
git worktree; a linked worktree (git worktree add) has no.chameleonof
its own.resolve_profile_root(added in v2.22.3) maps a linked worktree
back to its main worktree's profile, but the mapping was applied
inconsistently -- some artifact loaders and MCP tools called it, others read
.chameleon/<artifact>off the raw worktree path and silently degraded.
Five artifact loaders (load_reverse_index,load_constant_index,
load_symbol_signatures,load_counterexamples,load_function_catalog)
now resolve internally, mirroringload_calls_index's existing correct
behavior -- this alone fixedquery_symbol_importers,get_crossfile_context,
get_duplication_candidates, andlint_file's phantom-symbol check.
Eighteen more call sites acrossrefresh_repo,bootstrap_repo,
trust_profile,teach_profile,teach_profile_structured,
propose_archetype_renames,apply_archetype_renames,
teach_competing_import,unteach_competing_import,
get_idiom_coverage,check_idiom_candidates,get_autopass_verdict,
get_contract_breaks,get_drift_status,scan_dependency_changes,
doctor,list_profiles, andrecord_review_verdictwere fixed
individually. The most severe:refresh_repoinvoked from a linked
worktree silently bootstrapped a brand-new, diverged profile INSIDE the
worktree instead of updating the shared profile at the main worktree --
orphaned the moment the worktree was removed, and permanently forked from
main's profile in the meantime. Fixing that write target alone was not
enough:refresh_repoandbootstrap_reponow separately track the
caller's actual worktree as ananalysis_root(discovery/AST-parsing) from
the redirected.chameleonwrite target, mirroring the existing
production_refanalysis/write split -- otherwise a refresh from a
worktree would silently profile the MAIN worktree's files while reporting
success. The unsafe-root safety refusal (temp-dir / world-writable roots)
now runs on the caller's real location instead of the redirected target,
since analysis reads real source files from it. Found via real linked
worktrees against real bootstrapped repos (TypeScript/Next.js, Ruby/Rails,
Python/Django), each finding independently re-reproduced and verified
before being fixed; a follow-up workflow-backed code review caught the
analysis-root regression in the first pass and eight further gaps before
release.
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]