Skip to content

instinct-cli.py silently switched to ~/.local/share/ecc-homunculus/; legacy installs read stale empty directory with no warning #2036

@PyGuy2000

Description

@PyGuy2000

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:

  1. The old CLI prints a deprecation warning / migration prompt directing the user to the new location.
  2. A migration helper at first run moves/symlinks legacy ~/.claude/homunculus// into ~/.local/share/ecc-homunculus//.
  3. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High prioritybugSomething isn't workingneeds-fixCI checks are failing - needs attention

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions