ackDB
Person/contact integrity sweep
Read-only, on-demand health report over the identity graph (#472). Four wound classes, each with an exact count and a sample capped at 25 rows:
- unregisteredEdgeEmails — contacts whose email is not a person key AND whose person has NO linkedin_url anchor. Should be 0: such a person is invisible to email-keyed ingest, and the next push mints a duplicate human. Heal with npm run backfill-email-keys. Note (#575): linkedin-anchored contacts whose email is intentionally column-only are NOT counted — email is a fallback anchor, so their missing email key is by design, and the backfill deliberately skips them.
- keylessPersons — active persons with zero durable keys; reachable only by legacy entity-scoped adoption, never by global resolution.
- sameNameSameCompany — the same normalized name held by DIFFERENT persons at one company: the visible tell of a split human. A review list, not a bug list — two real people can share a name.
- domainMismatchEdges — active contacts whose email domain (non-freemail) matches none of their company's domain links; candidates for POST /contacts/{contactId}/move.
get/api/v1/ackdb/persons/integrity
Request
- Base URLhttp://localhost:3009
- AuthHTTP bearer
Response
{ data: { unregisteredEdgeEmails, keylessPersons, sameNameSameCompany, domainMismatchEdges } }, each { count, sample[] }.
Changes
No recorded changes to this operation across all 1 revision of this API.