Skip to main content
← Back to list
01Issue
BugShippedSwamp Club
Assigneeskeeb

Relationships

#1196 Cannot subscribe: personal collective has 0 operatives (owner missing from own roster) — payment returns Forbidden, while whoami and extension push both grant the collective

Opened by magistr · 7/16/2026· Shipped 7/17/2026

I cannot buy a subscription for myself. My personal collective magistr has an empty operatives roster, so the subscription page has no seat to assign me, and attempting to pay returns a Forbidden error.

The account is locked out of paying — there is no self-serve path to a subscription.

The contradiction

Three server-side views of the same membership disagree:

1. /o/magistr/members says I am not in it. This page is publicly readable (no login needed to see it) and renders:

magistrpersonal
No operatives.

2. /api/whoami says I am. swamp auth whoami --json for the same account:

{
  "username": "magistr",
  "collectives": ["quest", "bad-at-naming", "magistr"]
}

3. The registry agrees with whoami. I published 46 extensions under @magistr/* today (all at 2026.07.16.2, via CI using an API key for this account). Every push was authorised against the magistr collective and succeeded. The server clearly grants this account authority over the collective.

So authority over magistr is honoured on the publish path and asserted by whoami, while the operatives roster for the same collective is empty — and billing sides with the empty roster.

Steps to reproduce

  1. As the owner of a personal collective, open https://swamp-club.com/o/<name>/members → "No operatives."
  2. Go to the subscription page and try to pay for yourself → Forbidden.

Expected

The owner of a personal collective should be an operative of it. Buying a subscription for your own account should not require any prior membership action, and certainly should not 403.

Hypothesis

A personal collective looks like it is created without a membership/operative record for its owner. Owner authority appears to be derived some other way — the collectives claim on the identity, or an implicit username == collective name rule — which is why publishing works. Anything that instead reads the operatives roster (subscription seat assignment) sees zero and denies.

#1071 (subscription.findByCollectiveId) suggests subscriptions are keyed per collective, which fits: no operative row → no assignable seat → Forbidden.

Possibly the same root cause as #1186 / #1187

I filed two other issues today where a collective membership never materialises:

  • #1186 — an invite is never claimed when the invitee registers via Google with the invited address; the invite stays pending and no membership forms.
  • #1187/orgs shows the invitee no pending invitation at all.

Three separate symptoms, all of the form "the collective membership row is not there." Worth checking whether operative/membership records are written on a single path that several flows (personal-collective creation, invite acceptance) never call.

Impact

High — this blocks payment. The account cannot subscribe by any self-serve route, and the failure surfaces as a bare Forbidden with nothing indicating that an empty operatives roster is the cause.

02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED+ 1 MOREASSIGNED+ 5 MOREREVIEW+ 3 MOREPR_MERGED+ 1 MORECONTRIBUTOR_NOTIFIED

Shipped

7/17/2026, 1:58:12 AM

Click a lifecycle step above to view its details.

03Sludge Pulse
keeb assigned keeb7/17/2026, 12:33:08 AM
Editable. Press Enter to edit.

keeb commented 7/17/2026, 1:58:31 AM

Thanks @magistr for reporting this! The fix has been merged and a release is on its way. We appreciate your contribution to swamp.

Sign in to post a ripple.