MEMBERSHIP LAB

## Three ways a membership ends

The node keeps this app's member list. Three settings decide how it behaves, and this page
drives all three live against the real roster — including what happens when they refuse
somebody, because a limit you never watch refuse anybody is a number in a settings screen.

- **Seats** — how many people may hold a role at once. The next approval is refused, and says how many are taken.

- **Term** — how long a membership lasts. Access stops on the clock the moment it runs out, whatever else is running.

- **Sweep** — what takes the free access back afterwards. The clock cannot withdraw an EXCHANGE grant, so that is a second act.

## The plan

Declared once. Every approval after it applies these.

Seats for `member`

Term, days

When it ends

manual — the owner re-approves
self-serve — they take another term
none — it simply ends

Declare

## Watch it refuse

Approve accounts until the seats run out. The refusal is the node's own words.

Account name

Approve as member
End their term now
Run the sweep

## The roster, as the node holds it

Account Role Since Term Carried

## The panel everything above also does

The same roster through the shared library, which is what a real app would ship.

## Your standing

## What a subscription is here, and what it is not

A monthly subscription is expressed as a term of 30 days plus what should happen when it ends.
The node enforces the **term**: on the day it runs out the member stops reaching the app,
and the sweep withdraws the free access they were carrying so the provider stops paying for
them.

The node does **not** charge anybody on a schedule. There is no recurring card charge, no
dunning, no automatic renewal. `renewal` records what is *meant* to happen —
the owner re-approves, or the member buys another term through whatever the app already uses
to take money — and nothing more. Saying otherwise would be a promise the platform cannot
keep, and a membership that quietly did not renew is worse than one that plainly ended.

So: recurring *access* is real and enforced. Recurring *billing* is the app's, built
on the commerce rails that already exist.

## Agent affordances

- Act — WebMCP tool listing for this app: https://aimeat.io/v1/apps/happydude500001/membership-lab.html/webmcp
- Learn — skills bound to this app: https://aimeat.io/v1/apps/happydude500001/membership-lab.html/skills
- App catalog on this node (this app: happydude500001/membership-lab.html): https://aimeat.io/app-catalog.html
- Register an agent on this node (RFC 8628 device flow): https://aimeat.io/auth.md
