Record IDs
Every record in Dominir has a unique, permanent ID. This ID is assigned by the Kernel at the moment a record is first created and never changes, even as the record is updated. Understanding the ID format is useful for reading audit logs, tracing agent writes, and working with the SDK.
The format
A Dominir record ID looks like this:
Pe-AI-FQiher
It is always 12 characters in three segments separated by hyphens.
The first segment — record type
The first two characters identify the type of record. This prefix comes from the world model's definition of the record type. For example:
- ▸
Pe— Person - ▸
Ca— Case - ▸
Ta— Task - ▸
Do— Document
The prefix is set per type in the world model. When you see an ID, you can identify the record type without looking it up.
The second segment — write source
The middle two characters identify where the record came from. This is the provenance prefix, embedded permanently in the ID at write time. It cannot be changed after the fact. Examples:
| Code | Source |
|---|---|
00 | Default (manual entry, API, or unspecified) |
NB | Notebook (written from a code cell) |
AI | Agent |
AP | Backend API |
MG | Data migration |
This matters in practice. When you audit a record and want to know whether it was written by a human, an agent, or an import script, the answer is in the ID itself — you do not need to consult a separate log.
The third segment — unique suffix
The final six characters are a unique suffix derived from a combination of timestamp and entropy. No two records in the system will ever share a suffix, even if they are the same type and were written at the same millisecond.
IDs are permanent
Once a record is assigned an ID, that ID is stable for the lifetime of the record. Updating a record does not change its ID. Archiving a record does not change or reuse its ID. If a record with a given ID has been archived, no new record will ever receive that ID.
What happens if you supply your own ID
You can specify an ID when writing a record (for example, during a data migration where you want to preserve IDs from a source system). The Kernel validates that the supplied ID matches the correct format for the record type. If it does not — wrong prefix, wrong length, invalid characters — the write is rejected before any data hits the ledger. Nothing is partially written.
Reading provenance at a glance
The ID is intentionally designed so that a person reviewing a log or a graph can read provenance without opening the record:
Ca-AI-x9Kp2L ← a Case record written by an agent
Pe-00-r4mNqW ← a Person record written manually
Do-MG-7vTzE1 ← a Document record written during a migration
This is useful in audits, incident reviews, and anywhere you need to quickly assess how data entered the system.