Skip to content

invites: NIP-86 membership claims share existing invitations - #21

Merged
FelineStateMachine merged 1 commit into
mainfrom
feat/nip86-membership-claims
Sep 4, 2026
Merged

invites: NIP-86 membership claims share existing invitations#21
FelineStateMachine merged 1 commit into
mainfrom
feat/nip86-membership-claims

Conversation

@FelineStateMachine

Copy link
Copy Markdown
Owner

Motivation

NIP-43 clients need standard management methods for caller-chosen membership invitations. bind.ws already has invites and a member tree, but exposes only its custom invite management API. This implements NIPs proposal #2408 at revision dcf5af03aacd5ca9c70c51448e32f60477f6ac34 (checked 2026-09-04).

Change

  • listclaims([]) returns usable code strings; createclaim([code]) and deleteclaim([code]) return true on success.
  • The existing invite table supplies expiry, uses, revocation and issuer attribution. All issuance paths share member quota/depth, permission checks and audit. Member listings filter by creator and liveness before the 200-code cap.
  • Existing createinvite, listinvites, revokeinvite, NIP-43/NIP-29/HTTP joins and relay ownership claim retain their behavior. No database migration or broader permission redesign.
  • Documentation pins the proposal and states the existing operational constraints: 4-64 ASCII code characters, three-day lifetime, unlimited uses until expiry/revocation, bounded listing, and member-scoped deletion. The proposal removes legacy kind-28935 invite requests; bind.ws never generated those replies.

This PR is independent of the parallel NIP-AD and NIP-9a changes, with no required merge order and no NIP-11 edits. README, HTTP docs and exposure tests may need ordinary conflict resolution when combined. The upstream proposal remains open; its unspecified expiry/code constraints follow existing bind.ws behavior.

Testing Completed

  • npm run typecheck: passes TypeScript, generated-file, console, celld and template configuration checks.
  • npm test: 44 files, 219 tests pass.
  • Five new invite integration tests and a management exposure test cover authorization, chosen codes, audit, ownership separation, shared quotas, member isolation, filtered listing/cap, exact expiry boundary, exhaustion, revocation, bans and all join paths.
  • Independent subagent production and final test review found no actionable defects.
  • An initial full run hit an existing GRASP busy-response flake; its isolated 14-test rerun and the final full suite pass. New test timing assumptions were corrected before the final run.

Responsible AI disclosure

Implemented with Codex assistance, including subagent test work and independent review. Changes were checked locally with the project validation commands. No merge or deployment is included.

Standard listclaims, createclaim and deleteclaim reuse the invite store,
member permissions, quotas, expiry and audit. Existing ownership and invite
APIs retain their behavior. Pinned proposal documentation and integration
tests cover management, visibility and joining through every admission path.
@FelineStateMachine
FelineStateMachine merged commit 6d98cb7 into main Sep 4, 2026
1 check passed
@FelineStateMachine
FelineStateMachine deleted the feat/nip86-membership-claims branch September 4, 2026 23:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant