openova/docs/GLOSSARY.md
hatiyildiz 27325edb32 docs(iter-2): glossary alignment — rename workspace-controller, fix definitions
GLOSSARY.md line-by-line audit. Eight corrections.

1. workspace-controller → environment-controller everywhere. The
   controller reconciles the Environment CRD; "workspace" is banned as
   a Catalyst scope, so it cannot be in a component name either. Fixed
   in: GLOSSARY, ARCHITECTURE, PLATFORM-TECH-STACK, NAMING-CONVENTION,
   SOVEREIGN-PROVISIONING, IMPLEMENTATION-STATUS, core/README,
   BUSINESS-STRATEGY. Banned-term entry in GLOSSARY now explicitly
   covers component names too.

2. "workspace repos" (per-Environment Gitea repos) → "Environment
   Gitea repos" in GLOSSARY, PLATFORM-TECH-STACK.

3. JWT claim {workspace, org, role} → {environment, org, role} in
   ARCHITECTURE projector diagram.

4. OpenOva definition refined: was "Never used to name a product",
   which contradicted "OpenOva Catalyst", "OpenOva Cortex". Now: brand
   prefix in product names; bare "OpenOva" = the company; bare
   "Catalyst" = the platform.

5. Catalyst definition completed: was missing provisioning, billing,
   gitea, observability — now lists all 14 control-plane components,
   pointing at the table below.

6. Catalyst components table: added `provisioning` (validates
   configSchema, commits to Environment Gitea); reordered to match
   ARCHITECTURE §3 grouping; clarified each component's source-of-truth
   (catalog-svc reads monorepo + Gitea, blueprint-controller watches
   monorepo + Gitea, etc.).

7. Environment definition: refers to NAMING §2.4 for env_type values;
   removed inline list that didn't match canonical ordering. Added
   concrete examples (acme-prod, acme-dev, bankdhofar-uat).

8. Application example: dropped "RocketChat" which appeared nowhere
   else; replaced with generic "running deployment" plus the
   established WordPress / Postgres examples.

9. sovereign-admin description: was "runs Crossplane" — Crossplane is
   platform plumbing not user-facing. Now: "manages the underlying
   clusters via Crossplane (which is platform plumbing, not a
   user-facing surface)".

Banned-term coverage:
- "Workspace" entry now covers BOTH the Catalyst scope AND component
  naming (workspace-controller → environment-controller).

Refs #37
2026-04-27 21:06:09 +02:00

11 KiB

Glossary

Status: Canonical. Single source of truth for OpenOva terminology. Updated: 2026-04-27. Note: Terms here describe the agreed model. For which terms map to currently-implemented code vs design-stage, see IMPLEMENTATION-STATUS.md.

Every other document defers to this file. When a term in another doc looks contested, this file wins. New terminology is proposed here first, then propagated.


Core nouns

Term Definition
OpenOva The company. Authors and maintains Catalyst, Blueprints, and the openova.io services. Used as a brand prefix in product names (e.g. "OpenOva Catalyst", "OpenOva Cortex"). When unqualified, "OpenOva" refers to the company; when referring to the platform itself, prefer Catalyst.
Catalyst The OpenOva platform itself. A self-sufficient Kubernetes-native control plane. Composed of: console, marketplace, admin, catalog-svc, projector, provisioning, environment-controller, blueprint-controller, billing, identity, secret, event-spine, gitea, observability. See "Catalyst components" below. Published from this repository as signed OCI Blueprints.
Sovereign One deployed instance of Catalyst on Kubernetes infrastructure chosen by its owner. Self-contained; never depends at runtime on any other Sovereign. Examples: openova (run by us, hosts our SaaS Organizations — formerly "Nova"), omantel (run by Omantel, hosts SME Organizations across Oman), bankdhofar (run by the bank, hosts internal Organizations).
Organization The multi-tenancy unit inside a Sovereign. Has billing, Users, Environments, private Blueprints. Ahmed's pharmacy is one Organization on the omantel Sovereign; digital-channels is one Organization on the bankdhofar Sovereign.
Environment An env-typed scope where Applications run. Named {org}-{env_type} where env_type is one of `prod
Application What a User installs into an Environment from a Blueprint. The user-facing object: an App Store-style card representing a running deployment (e.g. WordPress, Postgres, an internal microservice).
Blueprint The reusable, OCI-published, signed unit of installable software. Unifies what previously was split between "module" (primitive) and "template" (composition). A Blueprint can declare dependencies on other Blueprints, with arbitrary depth. Visibility: listed (catalog card) / unlisted / private (Org-scoped). Source layout: see BLUEPRINT-AUTHORING.md §2.
User A person. Authenticates via Keycloak. Belongs to one Organization (or has cross-Org admin scope as sovereign-admin).

Roles

Term Definition
sovereign-admin The role for Users who operate a Sovereign — configures the Catalyst control plane, manages the underlying clusters via Crossplane (which is platform plumbing, not a user-facing surface), onboards Organizations, sets Sovereign-wide policies. Omantel's cloud team and Bank Dhofar's platform team are both sovereign-admin on their respective Sovereigns. There is no separate entity-noun (rejected: "operator", "tenant", "client").
org-admin Role within one Organization — creates Environments, manages Users, sets Org-level policies.
org-developer Role with Application install/configure rights inside specific Environments.
org-viewer Read-only role within an Organization.
security-officer Role with audit/policy/secret-rotation gating rights. Optional Org-level role.
billing-admin Role with billing/invoice/quota rights. Optional Org-level role.
sme-end-user Persona, not a role: an SME owner (Ahmed) for whom Organization onboarding is automatic on first signup.

Infrastructure

Term Definition
Cluster A physical Kubernetes cluster. Named per docs/NAMING-CONVENTION.md: {provider}-{region}-{building-block}-{env_type} — e.g. hz-fsn-rtz-prod. Owned by sovereign-admin. Never user-facing.
vcluster A virtual Kubernetes cluster (loft.sh's vcluster) running inside a parent Cluster. One vcluster per Organization per parent Cluster. Named {org} within the parent (qualified globally as {provider}-{region}-{bb}-{env_type}-{org}). Implementation detail of an Environment; not user-facing.
Building Block A functional security zone — rtz (restricted trust), dmz (edge), mgt (management). Stable across failovers. See NAMING-CONVENTION.md §1.3.
Region Geographic location, provider-scoped 3-char code (fsn, nbg, hel).
Env Type Environment dimension value: `prod
Placement Per-Application metadata declaring which regions and building blocks realize that Application. Modes: single-region, active-active, active-hotstandby.

Catalyst components (the control plane)

Component Purpose
console Primary user-facing UI. Three depths: form view (default for SME), advanced view (default for corporate), in-browser Monaco IaC editor (toggle). All commits to the Environment Gitea repo.
marketplace Public-facing Blueprint card grid (the "App Store").
admin Sovereign-level admin UI. Where sovereign-admin configures the deployment.
catalog-svc Reads Blueprint CRDs (sourced from the monorepo + Org-private Gitea repos), serves catalog API to console + marketplace.
projector CQRS read-side service. Subscribes to NATS JetStream, materializes per-Environment KV, serves SSE to console, handles Gitea webhooks (forces Flux reconcile on commit).
provisioning Validates Application install requests against Blueprint configSchema, composes manifests, commits to the Environment Gitea repo.
environment-controller Reconciles the Environment CRD: creates the vcluster(s), bootstraps Flux inside, creates the Gitea repo, wires the webhook, generates pull credentials.
blueprint-controller Watches Blueprint sources (this monorepo + per-Sovereign Gitea Org-private repos), validates and registers Blueprint CRDs.
billing Per-Org metering, invoicing.
identity Keycloak (per-Organization realm in SME-style Sovereigns; per-Sovereign realm in corporate-style) + SPIFFE/SPIRE for workload identity.
secret OpenBao + External Secrets Operator (ESO). Independent Raft cluster per region (no stretched cluster); cross-region perf replication is async.
event-spine NATS JetStream — pub/sub + Streams + KV bucket. Workload-identity-scoped Accounts per Organization. Replaces what was previously specified as "Redpanda + Valkey" for the control plane.
gitea Per-Sovereign Git server. Hosts the Blueprint catalog mirror, Org-private Blueprints, and per-Environment Gitea repos.
observability Per-Sovereign OpenTelemetry + Grafana stack (Alloy + Loki + Mimir + Tempo + Grafana) for Catalyst's own telemetry.

Persona-facing surfaces

Term Definition
UI The Catalyst console — full feature, three view depths.
Git Direct push or pull-request to the Environment's Gitea repo, or to private Blueprint repos.
API Catalyst REST + GraphQL. Used for portal integrations (a customer's Backstage / ServiceNow / JIRA). Not a primary IaC authoring surface.
kubectl Inside a User's own vcluster, for debugging only. Not a configuration surface.
Crossplane Platform plumbing, never a user surface. Used internally by Blueprints to manage non-K8s cloud resources. Advanced users may author their own Crossplane Compositions and contribute them upstream as Blueprints.

Banned terms (do not use in any docs / UI / API)

Banned Use instead Reason
Tenant Organization Cloud-overloaded, ambiguous between Sovereign tenancy and Organization tenancy.
Operator (as entity / person) sovereign-admin (the role) Confused with the K8s Operator pattern. (K8s Operators in the controller-pattern sense are still called Operators.)
Client (in product UX sense) User Collides with Keycloak OIDC client. (OIDC clients in technical contexts remain "clients".)
Module Blueprint Catalyst unifies modules + templates. (Go module, Terraform module, Helm module are exempt — they're external technologies.)
Template Blueprint Same reason. (K8s template, prompt template, scaffold template are exempt — external technologies.)
Backstage Catalyst console Backstage was decided removed from the platform.
Synapse (as a product) Axon (the OpenOva product) or Matrix/Synapse (the chat server) Matrix's Synapse server is fine when context is the chat server.
Lifecycle Manager (separate product) Catalyst Lifecycle management is one of Catalyst's responsibilities, not a separate product.
Bootstrap wizard (separate product) Catalyst bootstrap Bootstrap is one phase of Catalyst provisioning.
"Workspace" (as Catalyst scope or component name) Environment / environment-controller Renamed for industry alignment and to escape collision with VS Code / Slack / Backstage / Terraform workspaces. The controller previously named workspace-controller is now environment-controller.
"Instance" (as user-facing object) Application App Store metaphor. CRD remains internal.

Acronyms

Acronym Expansion
OCI Open Container Initiative — registry artifact standard. Blueprints are published as OCI artifacts.
CRD Custom Resource Definition — Kubernetes typed extension object.
CQRS Command-Query Responsibility Segregation — write side (Git → Flux → K8s) vs read side (projector → JetStream KV → console).
ESO External Secrets Operator.
SPIFFE / SPIRE Workload identity standards. SVIDs are short-lived mTLS certs bound to K8s ServiceAccounts.
GSLB Global Server Load Balancing — handled by k8gb across regions.
PromotionPolicy Removed concept. Replaced by EnvironmentPolicy attached to a destination Environment, enforcing PR/approval/soak/change-window rules.

See also