# Context — ubiquitous language

Glossary for this repo. Terms mean exactly this in docs, code comments, and
conversation; challenge drift when you see it.

- **Staging** — the Access-gated copy of the site at
  `dev-website.bigscreencloud.com`, rebuilt from every push to `dev`. The
  place where team/contractor testing and API tests happen. Not public.
- **Release** — the deliberate act of publishing to production by pushing a
  `v*` tag on `main`. Merging to `main` alone is *not* a release.
- **Cutover** — the one-time DNS change pointing `www.bigscreenvr.com` (and
  apex) at the new site's Pages project, retiring the legacy site from prod.
- **Legacy pipeline** — Jenkins → AWS S3/CloudFront flow that served the old
  React SPA. Frozen: kept dormant, never iterated on, not decommissioned.
- **Embed shell** — a build artifact containing only a page's unfurl metadata
  (`<head>` title/description/OG/Twitter tags + referenced image/video
  assets) with an empty body. Exists so unfurls can be tested publicly
  without exposing page content.
- **Embed check** — one `npm run embed:check` run: shells deployed to a fresh
  random public URL, pasted into Discord/Slack to verify unfurls, dead within
  ~5 minutes (script delete + purge Worker backstop).
- **API tier** — which API environment a browser session talks to: **dev**
  (`dev-gem-*` hosts) or **prod** (`main-shark-*` hosts). On staging, a
  runtime per-browser choice via `?api=prod` / `?api=dev`; in production,
  always prod.
- **PROD API badge** — the fixed, dismissable indicator shown on staging
  whenever the session's API tier is prod.
- **Access gate** — the Cloudflare Access email-OTP login wall in front of
  staging. Replaces the legacy IP whitelist; grants viewing, never Cloudflare
  dashboard rights.
- **Origin allowlist** — the API servers' CORS/origin check
  (`cloud/apps/api/api.ts`): `*.bigscreencloud.com` and
  `(www.)bigscreenvr.com` origins pass; everything else is rejected with 401.
  The reason staging lives on a `bigscreencloud.com` hostname.
