Enum IssueReferenceRole
What a reference is for. Two jobs hide inside "where did this issue come from", and they have opposite tolerances for going stale, so the field says which one is meant rather than leaving every reader to guess from the Kind.
[JsonConverter(typeof(JsonStringEnumConverter))]
public enum IssueReferenceRole
Fields
Identity = 1This issue is that ticket: a GitHub issue, a Jira key, a Trello card. A key, not a hint.
The server refuses to let two issues claim the same identity, and that refusal is the whole point of the role: it is what lets a repeated import recognise a candidate it has already tracked and update it, instead of creating a duplicate.
Provenance = 0A human hint about where the issue came from — a backlog row, a code comment, a conversation. Allowed to go stale and never load-bearing:
LanguageController.cs:52is wrong after the next edit, and that is tolerable.Provenance references are deliberately not unique. Many issues legitimately share one origin — 68 of this tracker's first 78 issues came off the same backlog file — so requiring uniqueness would reject the very data the field exists to hold.
Remarks
Closed, unlike Kind. The set of source systems is an extensibility point and must stay open; the set of jobs a reference can do is not — there are exactly two, and a third would be a different feature rather than a new tracker.