AckdbPerson
One human. The true identity is the ULID; durable keys are pointers into it (exactly as `domain` → entityId). `status` is the IDENTITY lifecycle only — a person with three ended jobs is still `active`; employment state lives on each contact edge.
Properties
personIdstringrequirednamestring (nullable)statusstringrequired"active""merged"mergedIntostring (nullable)The surviving person after a merge (tombstone chain); null while active.
avatarUrlstring (nullable)Photo URL — a fact about the human, projected onto every contact read. http(s) only; ackDB stores the link, never the bytes (the frontend hotlinks it). Latest non-null write wins.
createdAtstring <date-time>requiredupdatedAtstring <date-time>requiredExample
AckdbPerson example
{
"personId": "01J8ZC2V9K3W4X5Y6Z7A8B9C0D",
"name": "Elly Chen",
"status": "active",
"mergedInto": "string",
"avatarUrl": "https://media.licdn.com/dms/image/v2/abc/profile.jpg",
"createdAt": "1970-01-01T00:00:00.000Z",
"updatedAt": "1970-01-01T00:00:00.000Z"
}