同名计划会共享并覆盖同一个工作空间
原文依据:5 处工作空间名称只取计划文件的基本名,不包含目录或内容标识。两个不同目录中的 `release.md` 都会解析到同一个 `.superpowers/sdd/release/`,与“另一个计划永远不会被读取或写入”的声明不符。任务摘要也会以固定名称覆盖写入。
一个计划可能读取另一个计划的进度、报告或差异,覆盖其任务摘要,甚至因误读 `Task N: complete` 而跳过任务。这会泄露项目上下文并造成错误实施决策。
工作空间键仅由计划文件的基本名生成;目录和内容都不参与区分。因此不同目录里的同名 Markdown 计划会解析到同一目录,后一次运行还会以固定任务文件名覆盖摘要。这与注释所称的计划隔离不一致,可能混用台账、报告或审查材料,进而影响代理对已完成任务和代码状态的判断。用户可要求使用规范化完整路径或内容哈希作为空间标识。
slug=$(basename "$plan" .md)[ -n "$slug" ] && [ "$slug" != "." ] && [ "$slug" != ".." ] \ || { echo "cannot derive a workspace name from: $plan" >&2; exit 2; }root=$(git rev-parse --show-toplevel)base="$root/.superpowers/sdd"dir="$base/$slug"mkdir -p "$dir"printf '*\n' > "$base/.gitignore"cd "$dir" && pwd查看另外 4 个位置
else dir=$("$(cd "$(dirname "$0")" && pwd)/sdd-workspace" "$plan") out="$dir/task-${n}-brief.md"fiawk -v n="$n" ' /^```/ { infence = !infence } !infence && /^#+[ \t]+Task[ \t]+[0-9]+/ { intask = ($0 ~ ("^#+[ \t]+Task[ \t]+" n "([^0-9]|$)")) } intask { print }' "$plan" > "$out"- Each plan owns a workspace: at skill start, run this skill's `scripts/sdd-workspace PLAN_FILE` — it prints the plan's git-ignored directory (`<repo-root>/.superpowers/sdd/<plan-basename>/`), home to every artifact for THIS plan: ledger, briefs, reports, review packages. Another plan's directory is never yours to read or write.- Check for this plan's ledger at `<workspace>/progress.md`. If its firstif [ $# -eq 3 ]; then out=$3else dir=$("$(cd "$(dirname "$0")" && pwd)/sdd-workspace" "$plan") out="$dir/task-${n}-brief.md"fi