Skip to main content
Amends and accepts 0082: the id format is fixed here; the four API areas of 0082 stand.

Context

0082 set public ids as a prefix plus base32 of one UUIDv7, and left the exact format open. The owner’s data answer DA9 (mem L535) fixes the length and the prefix rules on 2026-10-20. The HTTP rule examples still show a different format (gap B23).

Decision

  1. A public id is prefix_ plus the lowercase Crockford base32 encoding of the UUIDv7. It is 26 characters after the prefix.
  2. Prefixes are 2 to 6 letters. Each prefix is registered in the gen manifest, and gen fails on a duplicate prefix.
  3. The four API areas of 0082 stand.
  4. Database ids are never exposed. Public ids are the only external form.

Consequences

  • Examples in the HTTP rules and the style guide must use the 26-character form. Until they do, they describe a format that this ADR no longer accepts (gap B23; docs-governance).
  • The registry of prefixes is a shared file in gen, so a new prefix is a reviewed change.

Enforcement

planned — gen checks prefix length and uniqueness against the manifest. The rule examples are fixed by the final docs pass.

Alternatives

  • Raw UUIDs externally: rejected by 0082 (database ids are never exposed).

Supersedes and sources

Supersedes: none. Amends and accepts: 0082. Sources: owner data answer DA9 (stackra-decisions-2026-10-19.md L535, 2026-10-20); gap B23.