- rejects a remove or update request whose terminator is owned by a different
router, closing the two fabric handlers the batch fix did not cover
- adds a unit test for the single-terminator ownership check
- adds an end-to-end test that drives the fabric control channel from an
enrolled router against a second router's terminator, covering single remove,
batch remove, and re-weight, plus a control that a router can still remove its
own
- filters the fabric RemoveTerminators handler so a router can only remove terminators
whose owning router matches the request source; ids owned by another router are dropped
and logged rather than deleted
- keeps absent ids so a delete racing a not-yet-applied create is still ordered after it
- the edge control channel already enforces this via verifyTerminator
Backport of #4165. release-v2.0.x has no RemoveTerminatorsV2, so only the v1 handler
is affected.