Skip to content

Prefix registry

Every requirement identifier begins with a prefix registered here. The checker reads this table: a prefix that is not listed is an error, and a requirement identifier whose prefix is listed but whose number does not resolve to a current requirement is a stray mention (SPEC-053).

A prefix appears exactly once. A prefix whose document was deleted is removed from this file once no mention of its identifiers remains in the tree, so a stale mention is fixed rather than hidden.

PrefixSpecFile
SPECSpecification formatdocs/specs/SPEC-spec-format.md
TOPICTopic formatdocs/specs/TOPIC-topic-format.md
APIBackend API contractdocs/specs/API-backend-api.md
CONFBackend configurationdocs/specs/CONF-backend-configuration.md
AUTHBackend authdocs/specs/AUTH-backend-auth.md
OPSBackend operationsdocs/specs/OPS-backend-operations.md
PUSHPush subscriptions and webhooksdocs/specs/PUSH-push-subscriptions.md
IDENTIdentity updatesdocs/specs/IDENT-identity-updates.md
JOINJoining groupsdocs/specs/JOIN-joining-groups.md
GMODModifying groupsdocs/specs/GMOD-modifying-groups.md
PERMGroup permissionsdocs/specs/PERM-group-permissions.md
METAGroup metadata and app datadocs/specs/META-group-metadata.md
DMSDMs and stitchingdocs/specs/DMS-direct-messages.md
PROCMessage processingdocs/specs/PROC-message-processing.md
SENDMessage sendingdocs/specs/SEND-message-sending.md
FORKFork recovery and commit logdocs/specs/FORK-fork-recovery.md
CONSConsentdocs/specs/CONS-consent.md
SYNCDevice syncdocs/specs/SYNC-device-sync.md
ARCHArchive formatdocs/specs/ARCH-archive-format.md
CTYPEContent typesdocs/specs/CTYPE-content-types.md
STOREClient storagedocs/specs/STORE-client-storage.md
ATCHRemote attachmentsdocs/specs/ATCH-remote-attachments.md
EVENTClient eventsdocs/specs/EVENT-client-events.md
LOGClient loggingdocs/specs/LOG-client-logging.md

| MIG | Legacy database migration | docs/specs/MIG-legacy-database-migration.md |

API and PUSH are reused by their replacements: the deleted documents 001_backend_api.md and 005_push_subscriptions.md used those prefixes, and the new specs take them over.

A reused prefix keeps its historical number space. An identifier that already meant something must never come to mean something else, or every past pull request, commit message, and review comment becomes ambiguous, and no cleanup of current code can repair that history. A replacement spec therefore allocates above the floor below, and reuses a historical number only when it carries the same obligation as before.

PrefixHighest number the deleted document usedFirst number a replacement may allocate
APIAPI-165API-200
PUSHPUSH-105PUSH-200

The floors are round numbers above the highest number those documents used, so no replacement requirement can take a number that already meant something else.