mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-28 04:02:18 +01:00
The prune step removed any entry the managed-skills manifest named, with no check of what the entry currently is. The manifest records what the lane owned at the end of the last run, not what the entry is now. A user could remove a managed symbolic link and write their own directory at the same name between runs; the next prune then deleted that directory. Add a shape check at the point of removal. A manifest-named entry is still lane-owned only when it is a symbolic link, or a directory that carries a valid materialized-skill sentinel. Every other shape survives the prune, and Paperclip logs one line to record why. Co-authored-by: Paperclip <noreply@paperclip.ing>