Plans with the same filename share and overwrite one workspace
Source references: 5The workspace name uses only the plan's basename, without its directory or a content identity. Plans such as two different `release.md` files both resolve to `.superpowers/sdd/release/`, contrary to the claim that another plan is never read or written. Task briefs are also overwritten under fixed names.
One plan can read another plan's progress, reports, or diffs, overwrite its task brief, or skip work after misreading a `Task N: complete` entry. This can expose project context and cause incorrect implementation decisions.
The workspace key is derived only from the plan's basename; its directory and contents are not included. Distinct Markdown plans with the same name therefore resolve to the same directory, and later task extraction writes a fixed task filename there. This contradicts the claimed plan isolation and could mix ledgers, reports, or review artifacts, affecting decisions about completed work and code state. Users can ask for a normalized full-path or content hash in the workspace identity.
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" && pwdShow 4 other places
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