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

personIdstringrequired
namestring (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>required
updatedAtstring <date-time>required

Example

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"
}