Skip to main content

Glossary

Product and tennisโ€‹

Analysis โ€” The structured result associated with a completed video job. The app reads it from the job's result reference and derives visualizations, insights, progression, and practice recommendations.

NTRP โ€” A tennis skill-rating scale used in the player profile and onboarding. It is user-provided context, not an official rating issued by AceSense.

Practice recommendation โ€” A drill derived in the app from the weakest present stroke/session evidence. It is not a medical or guaranteed performance prescription.

Sample session โ€” A bundled, local demonstration job. It is not stored in Firestore and is excluded from progression calculations.

Session โ€” Product-facing record of a tennis recording and its analysis. Processing state is held in jobs; the app also uses a sessions collection for user-owned history data.

Jobs and storageโ€‹

Job โ€” A server-created jobs/{jobId} document that tracks one processing request and the references to its input and output artifacts.

Session ID โ€” A server-generated identifier used within per-user Storage paths. It is distinct from the Firestore job document ID.

Chunk โ€” A compatibility field/object-name convention retained by the current upload contract. The Flutter app presently uploads one file with chunkIndex: 0, totalChunks: 1, and isChunked: false; client-side splitting is not active.

Terminal state โ€” done or failed. Terminal transitions release reserved concurrency and complete/refund applicable commerce accounting idempotently.

Signed URL โ€” A time-limited URL granting access to a private Storage object. Provider handoff URLs use a 30-minute TTL; consumers must not log or persist them as stable object identifiers.

Identity and authorizationโ€‹

Firebase ID token โ€” A short-lived signed token proving Firebase identity and carrying claims such as admin or role.

Custom claim โ€” A server-controlled Firebase Auth attribute. admin: true is the preferred admin gate; client-writable Firestore fields are never used for authorization.

Admin allowlist โ€” The temporary, mirrored fallback that accepts a verified email when the admin claim has not propagated. See Admin Allowlist.

Session cookie โ€” The five-day HttpOnly cookie used by the private docs and launchpad servers after exchanging a verified Firebase ID token.

App Check โ€” Firebase application attestation. Callable enforcement is enabled only when ENFORCE_APP_CHECK is exactly true.

Plans and accountingโ€‹

Tier โ€” The canonical cross-provider entitlement key (free, premium, or ultimate) used by the upload entitlement/monthly gate.

Plan โ€” The legacy/operational quota key (free, trial, pro, or team) used for daily and concurrent upload limits. Code that maps tier to plan must be reviewed when either vocabulary changes.

Quota slot โ€” A concurrent-upload reservation made atomically before job creation and released once on failure or completion.

API key balance โ€” Server-maintained prepaid balance used by public REST/MCP jobs. The raw key is shown only at creation; Firestore stores a hash and metadata.

Platformโ€‹

Callable โ€” A Firebase HTTPS callable function with Firebase auth context and structured HttpsError responses. Mobile/admin callers use europe-west1 explicitly.

Cloud Task โ€” The retryable asynchronous dispatch step between accepted input and an external inference provider. It supersedes Firestore-trigger-only dispatch as the current queue mechanism.

Security Rules โ€” Firestore and Storage authorization evaluated for direct client access. Admin SDK operations bypass Rules and must enforce authorization in function code.

Control plane โ€” The Firebase-side auth, validation, orchestration, quota, billing, status, and retention code. External inference implementation is a separate boundary.

CSP nonce โ€” A cryptographically random value generated per private-site request and attached to allowed HTML script/style elements. It lets the strict Content Security Policy run required bootstraps without globally enabling inline scripts.

ADR โ€” Architecture Decision Record. It records the decision and context at a point in time; later code may supersede it, which must be stated explicitly.