---
title: "Verify organization invitations respect the configured seat limit"
description: "Fill a disposable organization to its known seat boundary and check invitation behavior, reservation accounting, and recovery after freeing one seat."
canonical_url: "https://vostride.com/agent-library/organization-membership/seat-limit-invitation.md"
md_url: "https://vostride.com/agent-library/organization-membership/seat-limit-invitation.md"
content_kind: "recipe"
topic: "organization-membership"
---

# Verify organization invitations respect the configured seat limit

Fill a disposable organization to its known seat boundary and check invitation behavior, reservation accounting, and recovery after freeing one seat.

## Risk

Seat enforcement can occur at invitation or acceptance depending on the product contract. This recipe targets invitation-time enforcement and ensures rejected attempts do not leave hidden reservations that prevent a later valid invitation.

## Fixtures

- A sandbox organization with a fixed known seat allowance and occupied seats at that limit.
- A controlled recipient inbox plus one removable test member whose seat may be released.
- A documented invitation-time seat policy and hooks reporting occupied and reserved seats.

## Steps

1. Open the organization members view and verify the displayed seat count agrees with the fixture hook at the configured limit.
2. Attempt to invite the controlled recipient and verify the documented seat-limit error or upgrade route without a successful pending invitation.
3. Inspect reserved seats and delivery state; verify the rejected attempt did not reserve a hidden seat or issue a usable invitation.
4. Remove the designated disposable member, confirm the seat count decreases, and retry the invitation.
5. Verify one pending invitation is now created, accept it as the recipient, and confirm the final occupied seat count equals the limit.

## Expected results

- The full organization rejects new invitations at the documented enforcement point.
- Failed invitation attempts do not leave active reservations.
- Freeing one seat permits exactly the intended additional member.

## False-pass traps

- An invitation-time test is inappropriate when the product intentionally enforces seats only on acceptance.
- A stale displayed counter must be checked against the authoritative fixture seat state.

## Cleanup

- Restore disposable memberships and cancel any run-owned invitation reservations.

## Use with agent-qa

Adapt this test design to your application's acceptance criteria and configured target using the [recipe execution guide](/agent-library/software-factory/turn-a-recipe-into-an-agent-qa-test.md). External fixture setup and non-UI checks require your own supported hooks or test tooling. Validate the authored test, execute it, and inspect the completed evidence; this recipe is not a recorded test result.

## References

- [agent-qa test](/docs/agent-qa/configuration/test.md)
- [agent-qa hooks](/docs/agent-qa/guides/hooks.md)
- [agent-qa auth state](/docs/agent-qa/guides/auth-state.md)

- [Organization membership QA recipes](/agent-library/organization-membership.md)
- [Software factory QA library](/agent-library.md)
