Skip to content

Commit 2fc1260

Browse files
authored
Merge pull request #245 from relizaio/2026-05-issue-217-uuid-documentation
docs: TEA UUID Scope and Stability (#217)
2 parents d6c073e + 09dc983 commit 2fc1260

2 files changed

Lines changed: 29 additions & 0 deletions

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ The working group has produced a list of use cases and requirements for the prot
6767
- [TEA Collection](tea-collection/tea-collection.md): A versioned list of artefacts for a specific Release (Component Release) or Product Release. Collections are versioned to indicate changes, e.g., an updated VEX or corrected SBOM.
6868
- [TEA Artifacts](tea-artifact/tea-artifact.md): Files associated with a Collection. A single TEA Artifact can appear in multiple Collections. Note that a TEA Artifact is a named term introduced by the TEA standard.
6969

70+
See [TEA UUID Scope and Stability](doc/tea-uuid-scope.md) for uniqueness and stability rules that apply to all UUIDs in the data model above.
71+
7072
## Artefacts available of the API
7173

7274
The Transparency Exchange API (TEA) supports publication and retrieval of a set of transparency exchange artefacts. The API itself is not restricting the types of the artefacts published. A few examples:

doc/tea-uuid-scope.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# TEA UUID Scope and Stability
2+
3+
This document defines the scope of uniqueness and the stability guarantees of UUIDs used by TEA objects (TEA Product, TEA Product Release, TEA Component, TEA Release, TEA Collection, TEA Artifact).
4+
5+
## Uniqueness scope
6+
7+
A TEA UUID alone is **not** globally unique. Global uniqueness in TEA is achieved by the tuple:
8+
9+
```text
10+
authoritative domain + object type + UUID
11+
```
12+
13+
- The **authoritative domain** is supplied by the TEI (`urn:tei:<type>:<domain-name>:<unique-identifier>`); see [discovery](../discovery/readme.md). TEA itself has no centralized authority that can police UUIDs across servers, so cross-server uniqueness is not enforceable and is not claimed.
14+
- The **object type** scopes uniqueness to a single object class (Product, Product Release, Component, Release, Collection, Artifact). A TEA server MUST guarantee that UUIDs are unique within `(authoritative domain, object type)`. UUIDs are not required to be unique across object types.
15+
16+
The per-object-type scoping reflects how TEA servers are typically implemented: each object type lives in its own database table, where uniqueness is trivially enforced by a primary key. Cross-table uniqueness offers no functional benefit - TEA has no operation that resolves a UUID without already knowing its object type.
17+
18+
Implementations MAY use generators that produce globally unique UUIDs (e.g. RFC 4122). Doing so neither violates nor strengthens this specification.
19+
20+
## Stability
21+
22+
All TEA UUIDs MUST be stable for the lifetime of the resource they identify, within a given TEA server. Specifically:
23+
24+
- A UUID MUST NOT be reassigned to a different resource.
25+
- A UUID MUST NOT change across backup/restore or re-hosting of the same TEA service instance.
26+
27+
Stability is required for **all** TEA object types, not only TEA Product Release. While TEI resolution targets only Product Release UUIDs, clients routinely bookmark and cache sub-resource URLs (e.g. `/component/{uuid}`, `/release/{uuid}`, `/collection/{uuid}`); changing those UUIDs would silently break those clients.

0 commit comments

Comments
 (0)