diff --git a/.xum/skills/verify-xum/SKILL.md b/.xum/skills/verify-xum/SKILL.md index ffaa533adc4..2542533221f 100644 --- a/.xum/skills/verify-xum/SKILL.md +++ b/.xum/skills/verify-xum/SKILL.md @@ -45,8 +45,9 @@ newest-run link live there. Use a checkout of your own, not a shared repository. (the default on Debian and Ubuntu, which give each user a private group), git makes a clone's folder, `.git` and `.git/worktrees/` 0775, so every command refuses. Run `chmod g-w,o-w` on the folder the message names (it names one at a time), or use a checkout made -under umask 022. Bun on PATH must be the version in `package.json` `packageManager`. Launch -refuses another Bun. +under umask 022. A writable folder you do not own (root's, for example) cannot be fixed that way: +the message then says to use a checkout under folders you own. Bun on PATH must be the version in +`package.json` `packageManager`. Launch refuses another Bun. ```bash .xum/skills/verify-xum/scripts/verify-xum.sh launch diff --git a/.xum/skills/verify-xum/scripts/verify-xum.sh b/.xum/skills/verify-xum/scripts/verify-xum.sh index 9364fe55fff..1828d936c58 100755 --- a/.xum/skills/verify-xum/scripts/verify-xum.sh +++ b/.xum/skills/verify-xum/scripts/verify-xum.sh @@ -91,7 +91,7 @@ group_is_ours() { # replacement again and undoes the quoting. refusal_fix() { # refusal_fix [[ -n $1 ]] || return 0 - printf ': %s%q%s' "${1%%@DIR@*}" "$2" "${1#*@DIR@}" + if [[ $1 == *@DIR@* ]]; then printf ': %s%q%s' "${1%%@DIR@*}" "$2" "${1#*@DIR@}"; else printf ': %s' "$1"; fi } # A run's state.env is sourced, so the run folder and the home above it must be real folders (no @@ -114,8 +114,12 @@ require_safe_ancestors() { # require_safe_ancestors [