Environment:
- ECC version: 2.0.0-rc.1
- Skill: continuous-learning-v2
- OS: Linux (WSL2)
- Install combination: ECC plugin (latest) co-installed with an older manual-install copy at ~/.claude/skills/continuous-learning-v2/
What happened:
After enabling the observer (observer.enabled: true) and seeing observations accumulate in observe.sh's runtime, /instinct-status continued to report:
No instincts found.
Project: etl_api_pipeline (2ee37dfd84ab)
Project instincts: /home/.../.claude/homunculus/projects/2ee37dfd84ab/instincts/personal
Hours of debugging later, traced the divergence:
- The plugin's observe.sh and instinct-cli.py use _resolve_homunculus_dir(), which prefers $XDG_DATA_HOME and falls back to ~/.local/share/ecc-homunculus/.
- The older manual install's instinct-cli.py hardcoded Path.home() / ".claude" / "homunculus".
- The two CLIs also use different project-hash algorithms — same git remote URL produced 46e38f3813e6 (new) vs 2ee37dfd84ab (old).
- Observations were being written to ~/.local/share/ecc-homunculus/projects/46e38f3813e6/observations.jsonl (508 of them, observer running, analysis cycle attempted), while /instinct-status looked at the empty
~/.claude/homunculus/projects/2ee37dfd84ab/.
End result: a fully functional, actively learning system that appears completely broken to the user.
Expected:
When the path scheme or hash algorithm changes, one of:
- The old CLI prints a deprecation warning / migration prompt directing the user to the new location.
- A migration helper at first run moves/symlinks legacy ~/.claude/homunculus// into ~/.local/share/ecc-homunculus//.
- The CLI checks BOTH locations and surfaces a clear "found legacy data at X, active data at Y" message.
Suggested fix:
Add migration logic to instinct-cli.py status that:
- Checks for legacy ~/.claude/homunculus/ existence
- If present, prints a one-time warning with the new XDG path and suggested mv/ln -s commands
- Optionally: auto-migrates with --migrate flag
Also worth documenting the path migration in the SKILL.md changelog / release notes for 2.0.0-rc.1.
Workaround applied:
cp ~/.claude/plugins/cache/ecc/ecc/2.0.0-rc.1/skills/continuous-learning-v2/scripts/instinct-cli.py
~/.claude/skills/continuous-learning-v2/scripts/instinct-cli.py
Environment:
What happened:
After enabling the observer (observer.enabled: true) and seeing observations accumulate in observe.sh's runtime, /instinct-status continued to report:
No instincts found.
Project: etl_api_pipeline (2ee37dfd84ab)
Project instincts: /home/.../.claude/homunculus/projects/2ee37dfd84ab/instincts/personal
Hours of debugging later, traced the divergence:
~/.claude/homunculus/projects/2ee37dfd84ab/.
End result: a fully functional, actively learning system that appears completely broken to the user.
Expected:
When the path scheme or hash algorithm changes, one of:
Suggested fix:
Add migration logic to instinct-cli.py status that:
Also worth documenting the path migration in the SKILL.md changelog / release notes for 2.0.0-rc.1.
Workaround applied:
cp ~/.claude/plugins/cache/ecc/ecc/2.0.0-rc.1/skills/continuous-learning-v2/scripts/instinct-cli.py
~/.claude/skills/continuous-learning-v2/scripts/instinct-cli.py