Skip to content

Investigate the two superpowers repos: detached forks, local checkout points upstream, version drift #63

Description

@twistedmelonman

Do-later: work out why two superpowers repos exist, which one is authoritative, and whether the local checkout should be repointed.

Surfaced while triaging twistedmelonman/dotfiles#231. Nothing here is broken today — the plugin loads and works. The concern is that the pieces disagree about which repo is the real one, which makes findings hard to attribute and made #64 harder to write.

What is actually on disk and on GitHub

thing points at note
~/Developer/superpowers (local checkout) obra/superpowers origin is the upstream, over HTTPS. At v5.0.5, commit 8ea3981.
smartwatermelon/superpowers (GitHub) fork=false, parent=none, Issues disabled. Created 2026-07-31T18:17Z.
smartwatermelon/superpowers-marketplace fork=false, parent=none, Issues disabled. Lives as a submodule under claude-config.
marketplace marketplace.json smartwatermelon/superpowers version: 6.2.0
plugin cache holds 4.0.3, 6.2.0, 6.3.0

The three things worth understanding

1. gh issue list in the local checkout lists someone else's tracker.
~/Developer/superpowers has origin = https://github.com/obra/superpowers.git, so gh issue list there returns obra/superpowers' 312 open issues — Jesse Vincent's, not ours. It looks like a healthy local backlog and is nothing of the sort. No default remote is set (gh repo set-default is unconfigured), so gh falls through to origin.

There is no local checkout of smartwatermelon/superpowers anywhere under ~/Developer — a find over every git remote there turns up exactly one superpowers checkout, and it is the upstream one.

2. The superpowers repos read as detached forks, not fresh repos.
Both report fork=false / parent=none, yet smartwatermelon/superpowers carries upstream ancestry: Jesse Vincent's commits 44c9b2d6 and 3dcbd5c4 (the v6.2.0 release) sit beneath the first local commit 18821ef9 ("chore: remove forced SessionStart hook injecting using-superpowers (#1)"). The repo was created 18:17Z and that first local commit lands 59 minutes later.

That shape is consistent with fork-then-detach. Worth confirming, because it determines whether upstream changes can still be pulled in cleanly and whether there is any intent to track upstream at all.

3. Version drift across the three sources.
The local checkout is 5.0.5, marketplace.json declares 6.2.0, and the plugin cache has 6.3.0 on disk. Three sources, three versions. Related: #64 carries a finding that the marketplace dropped a pinned commit ref, so the plugin installs from HEAD while version: still says 6.2.0 — that pin removal is probably why cache and manifest disagree.

Questions to answer

  • Is smartwatermelon/superpowers a detached fork of obra/superpowers? Was detaching deliberate?
  • Should ~/Developer/superpowers be repointed at smartwatermelon/superpowers (with obra as an upstream remote), or is it deliberately a read-only upstream reference? If the latter, gh repo set-default should be set so gh commands there do not silently address the upstream tracker.
  • Is there meant to be a local checkout of smartwatermelon/superpowers at all? Right now it is only ever touched through the plugin cache.
  • Why is Issues disabled on both? For a real fork that is the GitHub default; for a detached standalone repo it is a deliberate setting. If it is just inherited default, enabling it would let Recovered review findings for repos with Issues disabled (superpowers, superpowers-marketplace, Instapaper-MCP, headroom) #64's 10 findings move to where they belong.
  • Should the manifest version, the cache, and the checkout be reconciled — or is the drift expected because the pin was intentionally dropped?

Why this is worth doing

Attribution. During the twistedmelonman/dotfiles#231 drain, ten findings had to be verified against gh api and the plugin cache instead of a local checkout, because the obvious local path is a different repo. Attributing by the local checkout would have been wrong in a way that looked right — the upstream tree still has the hooks/ directory the findings say was deleted.

Related

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

    tech-debtTechnical debt to address

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions