Glossary¶
The Tend vocabulary, defined once and used everywhere. Terms are alphabetical; each links to the page that covers it in depth.
- App CR / App CRD
- The single source of truth for one app: a custom resource of kind
Appin API grouptendtech.io/v1alpha1(CRDapps.tendtech.io) carrying owner, expiry, declared data scopes, purpose classification, environment state, and references to the app's git repo and attestation chain. All platform behavior reconciles from it (Principle IV). See App CRD. - attestation chain
- The verifiable record from prompt to production — prompt hash, model identity and version, artifact versions, test results — emitted as in-toto/SLSA attestations, cosign-signed, and stored beside the image in Harbor (Principle III). See the evidence chain.
- boundary tier
- The customer-chosen inference boundary. Tier 1 (cloud-private):
model inference runs against a managed endpoint in the customer's own cloud
tenancy and region, reached over public-internet TLS rather than private
interconnect. Provider training and response caching are disabled; the
provider's abuse-logging retention exemption is a separate manual filing and
is recorded as not yet requested. The shipped posture is recorded field by
field in
deploy/inference/tier1-posture.yaml, and every change to it is a reviewable diff. Tier 2 (self-hosted) is reserved and not exercised: the design is that all inference would run on customer-operated infrastructure with no external model calls, but the tier has never been selected on any installation and no self-hosted serving exists. Only Tier 1 has run. See boundary tiers. - builder adapter
- The CLI that turns a prompt into a committed app: it calls the
inference gateway, generates the app, and commits to the per-app repo.
The builder's only contracts with Tend are: talk to the inference
gateway, commit to the app repo, never deploy (Principle VII). Lives
in
builder/adapter/. - Cilium
- The CNI that enforces Tend's network policies, including L7 DNS rules. kindnet and other non-enforcing CNIs cannot substitute for it. The generated-perimeter decision is ADR-0007.
- contract-not-code
- Principle II: security and governance are enforced at the platform layer — admission policy, network policy, the data gateway — never by reviewing or trusting generated application code. See the governance model.
- cost cap
- The per-app spending ceiling declared on the App CR
(
spec.costCap: amount, currency, period; defaulted to 50.00 EUR monthly). The operator drives normal → warning-75 → warning-90 → suspended from OpenCost telemetry; missing telemetry never enforces. See respond to a cost-cap suspension. - data gateway
- The sole data path for every app: all data access goes through it,
where the declared scope is checked and every access logged.
Undeclared access is denied. Runs in
tend-systemon TCP 8080. See data gateway API. - data scope
- One declared data access on the App CR: a name, a source type
(
synthetic,postgres, ors3in the v1 baseline; REST and warehouse connectors are follow-ups), and an access level (readorreadwrite). See declare and change data scopes. - decisions-about-people flag
- The EU AI Act triage marker captured in the app's purpose classification at promotion and surfaced in the estate view. Tend records and surfaces it; it does not adjudicate conformance. Also called the AI Act triage marker. See App CRD.
- default-deny
- The network floor of every app namespace: with both an ingress and an egress section present, Cilium drops every flow not explicitly allowed — in both directions. Rendered per namespace by the operator (ADR-0007).
- estate
- The totality of governed apps, answerable at any time: what apps exist, who built them, what data they touch, what they cost — and any of them retirable in one action.
- estate portal
- The Backstage instance whose software catalog and estate plugin are fed entirely by the estate API (never the Kubernetes API directly): one row/entity per app, single-action suspend/resume/retire/restore, zero external egress. See estate portal & revoked scopes.
- estate viewer
- The minimal, standalone UI over the estate from the walking skeleton:
apps, states, scopes, costs, and evidence. Lives in
estate-viewer/and remains the fallback of the same UI-agnostic contract the estate portal consumes (risk 5). See evidence & estate API. - evidence index
- The 003 query surface over all evidence: a single per-app query returns every history category — prompts, models, tests, approvals, deployments, scopes, classification, and data access — with honest degradation when a category has no data. See evidence & estate API.
- evidence record
- An app's accumulated, queryable history entry set — the material attached to its promotion PR and served by the evidence index. See query an app's evidence.
- fail closed
- The posture of every non-negotiable gate: when verification cannot
complete (for example the registry is unreachable), the request is
refused rather than waved through. The attestation gate sets
failurePolicy: Failfor exactly this. The single-admission-engine decision is ADR-0006. - frozen
- The App lifecycle state for an app whose owner is deactivated past
the grace period, whose expiry passed without renewal, or that was
just restored from its archive: stopped but not yet archived
(Principle V). Causes compose and are recorded on
status.lifecycle.freeze; the app unfreezes only once every cause clears. See lifecycle. - gateway-only egress
- The complete egress contract of an app namespace: beyond DNS and
intra-namespace traffic, exactly three destinations are reachable — the
data gateway, the inference gateway, and Keycloak's token endpoint, where an
app exchanges its platform-provisioned client credentials for the token it
presents to the inference gateway. All three are in
tend-systemon TCP 8080. No per-source holes, no free-form egress (ADR-0007). - generated perimeter
- The per-app network policies the operator renders from the App
record at reconcile. Every rendered object carries
tendtech.io/generated-by=tend-operator; a hand-written per-app policy is an SC-006 violation: the operator is the only writer of a per-app policy object (ADR-0007). - GitOps
- Principle VI: all changes — app code, promotion, platform and policy-baseline updates — flow through git and Argo CD. The builder and end users never deploy directly. See the governance model.
- governance depth (003)
- The second feature to ship (
specs/003-governance-depth/; 002 is a drafted, unbuilt docs-site spec): real enforcement on the 001 spine — the policy baseline, the gateway-only perimeter, the data gateway as sole data path, the evidence index, and cost cap enforcement. - in-toto
- The attestation format the evidence chain uses: a signed statement
binding a subject (the image digest) to a predicate (the SLSA
provenance), checkable with
cosign verify-attestationagainst the image digest. - inference gateway
- The builder's only model endpoint: it keeps model I/O in-boundary and
attributable, routing to the configured tier. Runs in
tend-systemon TCP 8080. See inference gateway. - Kyverno
- The admission policy engine enforcing the policy baseline — validate, mutate, and verifyImages rules at admission (ADR-0006).
- managed operating model
- The commercial track where PGT operates Tend inside the customer's boundary. Planned, not built. The intent is one artifact for both models — the distinction being access control and release delivery, never a code fork — with managed operation adding no egress beyond the configured tier (Principles I and VII). Those are the acceptance criteria of unstarted roadmap work; nothing in the platform differs between the two models today.
- once per crossing
- The cost-warning semantics: the 75% and 90% notifications fire once
per threshold crossing per period, not repeatedly while cost
oscillates around a threshold. Implemented as
warning75At/warning90Attimestamps on the App status. - PGT
- The 100% Swedish-owned company building Tend, and the operator of record under the managed operating model. Platform and data jurisdiction is customer-controlled; model-endpoint jurisdiction is tier-dependent.
- platform-approver group
- The Keycloak group (
platform-approvers, realm roleplatform-approver) whose members may approve or reject promotion requests. Approval is the merge of the promotion PR. See promote an app to production. - policy baseline
- The versioned, GitOps-delivered set of admission and network policies every app runs under. Every rule ships with a violating manifest rejected in CI (SC-001) — for the admission baseline and for the generated network perimeter alike (ADR-0006, ADR-0007).
- Principles I–VII
- The constitution's binding invariants: I boundary integrity (NON-NEGOTIABLE), II contract-not-code, III evidence chain (NON-NEGOTIABLE), IV App CRD as single source of truth, V platform-enforced lifecycle, VI GitOps delivery, VII replaceable builder. See the constitution.
- projected ServiceAccount token
- The app's credential to the data gateway: a short-lived, audience-bound
token (
tend-data-gateway) mounted by the app pod template. The app never holds a data-source credential. See data gateway API. - promotion PR
- The platform-raised pull request that promotes an app from sandbox to production, with the evidence record attached. The user never touches git; approval is the merge by a platform approver, captured in git history and the attestation chain. See promote an app to production.
- retired
- The App lifecycle state after retirement: stopped, definition and
complete evidence record archived into the app's own git repo,
resources released. The App CR survives as a tombstone with an
archiveRef, restorable by a platform engineer (which re-enters the lifecyclefrozen, never running, until an owner-validated renewal). An app frozen past its retention period (the duration of the current uninterrupted freeze) is retired automatically, or immediately via thetendtech.io/retireannotation (Principle V). See lifecycle. - revoked scope
- A data-scope name withdrawn platform-wide by a merge to the
revoked-scopesGitOps policy baseline — the merge is the single revocation action, git history is the audit trail (Principle VI). The data gateway denies it, Kyverno rejects new declarations of it, and the operator projects it onto every declaring app'sstatus.lifecycle.revokedScopes— no app is redeployed. See estate portal & revoked scopes. - sandbox
- The isolated environment every app starts in: synthetic or masked data only, no network route to production, and the same admission gates as production — the attestation gate holds in sandbox too. See lifecycle.
- SLSA
- Supply-chain Levels for Software Artifacts — the provenance predicate
format (
https://slsa.dev/provenance/v1) the attestation chain emits and the admission gate verifies, including the TendpromptHashandmodelfields, checked by theverifyImagesrule at admission (ADR-0006). - synthetic data
- Generated, non-real data. Sandbox apps use synthetic or masked data
exclusively; every new App is admission-defaulted to a single
syntheticscope, served through the data gateway. - Tend operator
- The Kubernetes operator (
operator/) that reconciles everything from the App CR: namespace provisioning, the generated perimeter, resource quotas, discovery config, lifecycle state, and cost enforcement. - Tier 1 / Tier 2
- The two boundary tiers — cloud-private and self-hosted. Tier 1 is the default and the only tier that has ever run; Tier 2 is reserved and not exercised. See boundary tier above and boundary tiers.
- TokenReview
- The Kubernetes API the data gateway uses to validate an app's projected ServiceAccount token, establishing which app is calling before evaluating its scopes. See data gateway API.
- verifyImages
- The Kyverno rule type behind the attestation gate: it verifies image
signatures and attestations at admission and pins images to their
verified digest, resolved by the
verifyImagesrule at admission (ADR-0006). - walking skeleton (001)
- The first feature (
specs/001-walking-skeleton/): the minimal end-to-end spine — prompt → running sandbox app — with a real version of every component, proven before governance depth was added.