{"fixture_id":"CRM-001","observation_type":"authored_test_fixture","input":{"left":{"source_id":"F001","name":"Fiction A","email":"","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"F001","name":"Fiction A","email":"","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-1","policy":"conservative-link-review-v1"},"expected":{"decision":"link_candidate","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Same nonempty ID in the same fixture namespace; no conflicting populated identifier."}
{"fixture_id":"CRM-002","observation_type":"authored_test_fixture","input":{"left":{"source_id":"F001","name":"","email":"a@example.test","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"F001","name":"","email":"b@example.test","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-2","policy":"conservative-link-review-v1"},"expected":{"decision":"review","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Same ID with conflicting populated emails must not silently merge."}
{"fixture_id":"CRM-003","observation_type":"authored_test_fixture","input":{"left":{"source_id":"F001","name":"","email":"","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"F002","name":"","email":"","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-3","policy":"conservative-link-review-v1"},"expected":{"decision":"keep_separate","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Different IDs and no corroborating attributes."}
{"fixture_id":"CRM-004","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"","email":"a@example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"","name":"","email":"a@example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-4","policy":"conservative-link-review-v1"},"expected":{"decision":"link_candidate","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Exact verified non-role email is a candidate signal, not proven person identity."}
{"fixture_id":"CRM-005","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"","email":" a@example.test ","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"","name":"","email":"a@example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-5","policy":"conservative-link-review-v1"},"expected":{"decision":"link_candidate","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Trim surrounding email whitespace under the explicit policy."}
{"fixture_id":"CRM-006","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"","email":"a@EXAMPLE.TEST","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"","name":"","email":"a@example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-6","policy":"conservative-link-review-v1"},"expected":{"decision":"link_candidate","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Case-normalize only the domain for this policy."}
{"fixture_id":"CRM-007","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"","email":"A@example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"","name":"","email":"a@example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-7","policy":"conservative-link-review-v1"},"expected":{"decision":"review","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Local-part case difference is not automatically collapsed."}
{"fixture_id":"CRM-008","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"","email":"a+news@example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"","name":"","email":"a@example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-8","policy":"conservative-link-review-v1"},"expected":{"decision":"review","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Do not assume plus addressing denotes one mailbox for every domain."}
{"fixture_id":"CRM-009","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"","email":"a.b@example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"","name":"","email":"ab@example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-9","policy":"conservative-link-review-v1"},"expected":{"decision":"review","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Do not apply a vendor-specific dot rule to arbitrary domains."}
{"fixture_id":"CRM-010","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"","email":"a@example.test","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"","name":"","email":"a@example.test","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-10","policy":"conservative-link-review-v1"},"expected":{"decision":"review","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Unverified identical email is insufficient for candidate linking here."}
{"fixture_id":"CRM-011","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"","email":"a@example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"","name":"","email":"a@example.test","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-11","policy":"conservative-link-review-v1"},"expected":{"decision":"review","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Verification is required on both fixture records."}
{"fixture_id":"CRM-012","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"","email":"sales@example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":true},"right":{"source_id":"","name":"","email":"sales@example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":true},"namespace":"fictional-case-12","policy":"conservative-link-review-v1"},"expected":{"decision":"review","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"A shared role address is not evidence of one person."}
{"fixture_id":"CRM-013","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"Fiction A","email":"","email_verified":false,"phone_test_token":"","company":"Example North","role_mailbox":false},"right":{"source_id":"","name":"Fiction A","email":"","email_verified":false,"phone_test_token":"","company":"Example North","role_mailbox":false},"namespace":"fictional-case-13","policy":"conservative-link-review-v1"},"expected":{"decision":"review","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Name plus company is a weak match signal."}
{"fixture_id":"CRM-014","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"Fiction A","email":"","email_verified":false,"phone_test_token":"","company":"Example North","role_mailbox":false},"right":{"source_id":"","name":"Fiction A","email":"","email_verified":false,"phone_test_token":"","company":"Example South","role_mailbox":false},"namespace":"fictional-case-14","policy":"conservative-link-review-v1"},"expected":{"decision":"review","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"A company difference does not disprove identity or establish a job change."}
{"fixture_id":"CRM-015","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"Fiction A","email":"","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"","name":"Fiction B","email":"","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-15","policy":"conservative-link-review-v1"},"expected":{"decision":"keep_separate","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Different names without a stronger shared identifier."}
{"fixture_id":"CRM-016","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"","email":"","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"","name":"","email":"","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-16","policy":"conservative-link-review-v1"},"expected":{"decision":"keep_separate","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Two empty records are not duplicates merely because every field equals blank."}
{"fixture_id":"CRM-017","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"","email":"","email_verified":false,"phone_test_token":"+999000000001","company":"","role_mailbox":false},"right":{"source_id":"","name":"","email":"","email_verified":false,"phone_test_token":"+999000000001","company":"","role_mailbox":false},"namespace":"fictional-case-17","policy":"conservative-link-review-v1"},"expected":{"decision":"review","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Synthetic phone equality alone can represent a shared or reassigned number."}
{"fixture_id":"CRM-018","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"","email":"a@example.test","email_verified":true,"phone_test_token":"+999000000001","company":"","role_mailbox":false},"right":{"source_id":"","name":"","email":"a@example.test","email_verified":true,"phone_test_token":"+999000000002","company":"","role_mailbox":false},"namespace":"fictional-case-18","policy":"conservative-link-review-v1"},"expected":{"decision":"review","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Conflicting populated phone identifiers require review even when email matches."}
{"fixture_id":"CRM-019","observation_type":"authored_test_fixture","input":{"left":{"source_id":"F001","name":"","email":"a@example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"F002","name":"","email":"a@example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-19","policy":"conservative-link-review-v1"},"expected":{"decision":"review","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Different IDs in one namespace conflict with the email candidate signal."}
{"fixture_id":"CRM-020","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"Fiction Café","email":"","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"","name":"Fiction Café","email":"","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-20","policy":"conservative-link-review-v1"},"expected":{"decision":"review","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"NFC and NFD code units differ but normalize to the same name; name equivalence is review evidence, not a unique identity."}
{"fixture_id":"CRM-021","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"Fiction Cafe","email":"","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"","name":"Fiction Café","email":"","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-21","policy":"conservative-link-review-v1"},"expected":{"decision":"review","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"An absent versus present accent remains different after NFC normalization; accent stripping is only a weak review signal."}
{"fixture_id":"CRM-022","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"","email":"a@example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"","name":"","email":"a@example.invalid","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-22","policy":"conservative-link-review-v1"},"expected":{"decision":"keep_separate","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Different domains remain different addresses."}
{"fixture_id":"CRM-023","observation_type":"authored_test_fixture","input":{"left":{"source_id":"F001","name":"Fiction A","email":"","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"F001","name":"Fiction A updated","email":"","email_verified":false,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-23","policy":"conservative-link-review-v1"},"expected":{"decision":"link_candidate","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"Same ID permits a candidate despite a changed display name; actual merge still needs a survivorship rule."}
{"fixture_id":"CRM-024","observation_type":"authored_test_fixture","input":{"left":{"source_id":"","name":"","email":"fiction-at-example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"right":{"source_id":"","name":"","email":"fiction-at-example.test","email_verified":true,"phone_test_token":"","company":"","role_mailbox":false},"namespace":"fictional-case-24","policy":"conservative-link-review-v1"},"expected":{"decision":"review","automatic_merge_allowed":false},"rule_ids":["C-CANDIDATE","C-CONFLICT","C-NO-DESTRUCTIVE-MERGE"],"rationale":"A verification flag does not repair malformed email syntax."}
