> ## Documentation Index
> Fetch the complete documentation index at: https://docs.inviolet.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Trial-everything

> Every Deep Violet and Ultraviolet feature unlocks a 30-day free trial on first use.

Every Deep Violet and Ultraviolet feature unlocks a 30-day free trial on first use. No credit card. One-shot per feature: once your 30 days end, the feature locks until you upgrade.

## How it activates

Implicitly. The first time your org touches a tier-gated feature (e.g. installing a Vault credential broker integration, configuring an `allow_with_redact` response handler), the TrialGate middleware activates the trial as a side effect. A toast banner confirms the trial start; the dashboard widget in the upper-right shows days remaining on your shortest trial.

## Two-layer check

For every gated request, TrialGate runs:

1. **Base tier** — does the org's current tier permit the feature? If yes, returns `paid`.
2. **Trial overlay** — is there an active, unexpired trial row for the (org, feature) pair? If yes, returns `trial_active`. If a row exists but is expired, returns `locked_after_expired`. If no row exists, inserts one and returns `trial_just_started`.

## One-shot rule

Enforced at the storage layer with a UNIQUE constraint on `(organization_id, feature_id)`. You cannot re-trial a feature; once expired, the only way back is upgrading.

## What happens at expiry

The nightly tier-reconciliation cron transitions `active` rows past their `expires_at` to either `expired_no_upgrade` (org still on lower tier) or `expired_to_purchase` (org upgraded during the trial). Enforcement reverts to the Violet equivalent — usually `deny` or `deny_with_reroute`.

## Settings page

See `/settings/trials` for every (org, feature) trial in three sections: active, expired without upgrade, converted to purchase.
