Skip to content

SDD progress ledger: single repo-level path gets clobbered by concurrent SDD sessions #106

Description

@rz1989s

Repro (hit for real, 2026-09-03)

Two SDD sessions ran in this repo in parallel windows:

  1. Session A: feat/104-fleet-presentation-redesign (plan 2026-09-03-fleet-presentation-p1, base d9345bb) — wrote its ledger line to .superpowers/sdd/progress.md.
  2. Session B (this one): feat/1b-2-fleet-governance-adapter — followed the SDD skill's ledger check (cat .superpowers/sdd/progress.md), saw the file, and then overwrote it with > while initializing its own section. Session A's recovery map was destroyed (restored by hand from session B's scrollback).

Root cause

.superpowers/sdd/progress.md is a single repo-level path. The SDD skill treats it as the durable cross-compaction recovery map, but its identity is not scoped to the session/branch executing the work. Any second concurrent SDD session (different branch, same checkout dir or a sibling worktree of the same repo) reads-and-tramples the first one's ledger.

Secondary hazard observed in the same incident: two sessions sharing one working directory can also pull the branch out from under each other via git checkout (session B switched branches while A's tree state was live).

Expected

  • Ledger writes are append/merge-safe across concurrent sessions (or ledger path is per-branch, e.g. .superpowers/sdd/progress.<branch>.md, resolved from git branch --show-current).
  • The skill's ledger-init step should detect a foreign/unrelated existing ledger and MERGE (new section + a tombstone note), never >.

Suggested fix direction

  • scripts/sdd-workspace (or a small sdd-ledger helper) owns ledger init/append: resolve per-branch filename, create-if-absent, append sections. The skill text references the fixed path in multiple places and would need the pointer updated.

Environment

  • armory-fleet @ aa0dbef (both sessions), SDD skill via superpowers, macOS, pi sessions in the same checkout directory.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions