Today the dispatch scan decides its own exclusion in
iwms/bridges/ops2_dispatch.py::_decide, from a free-text order tag plus a prior-dispatch lookup, once per parcel rather than once per line.
// today
if "replacement" in tag_set and _has_prior_dispatch(...):
return True, "replacement re-send", "tag"
if "exchange" in tag_set:
return False # always deducts, never paired
// i3
GET /api/reverse/claims/<anchor_key>
→ { leg: "exchange_out", granted: true,
claimed_by: "csd", at: "11:44:02" }
A tag becomes evidence with confidence 0.60, beaten by an operator link at 1.00, a variant swap at 0.85 and a line-gap at 0.90, and beaten outright by a CSD claim. It is no longer a decision.