Lightweight PK classifier. Cascade (each step is independent; first confident
nominee wins):
Universal convention — vendor-wide hint matches a field
Naming heuristic — common PK names (id, ID, Id, …)
Statistical uniqueness — sample rows: exactly one column is unique+non-null
One-shot LLM — single inference; no iteration; honest 'none'
Returns Confident=false when nothing is confident enough. The pipeline then
leaves the IO row PK-less; no __mj.Entity is created for it until a PK
resolves (the runtime D7 rule). No fabrication.
Lightweight PK classifier. Cascade (each step is independent; first confident nominee wins):
Returns Confident=false when nothing is confident enough. The pipeline then leaves the IO row PK-less; no
__mj.Entityis created for it until a PK resolves (the runtime D7 rule). No fabrication.