mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-26 21:47:20 +00:00
ff11b6fd99
A host agent or Docker host that reported no machine ID, DMI UUID or cluster slot is keyed by its source-specific ID and holds no identity pin, because a pin needs a strong key. When a later report carried one the resource minted a new ID, no pin named the old one, and pin-driven succession declared nothing. The operator's rows, a remediation lock included, stayed on an ID the registry no longer lists, while the dispatch gates read the row of the listed ID. Pulse could then act on a host the operator had told it never to touch. The retired ID is recomputable from the report itself, as a Proxmox guest's retired IDs are. ingestRecord now notes the source-specific ID of each host agent and Docker host reporter that lands on another ID with a key, and the snapshot and record ingests hand the batch to applyRecordSuccessions, which skips an ID still observed. The stores already carry the row, or its lock onto an existing row, once per predecessor. Proxmox nodes are left out on purpose: they borrow their linked agent's key, and a link or split can move that borrow either way. The other uncovered change named in the contract, a physical disk re-keyed in place to a machine-scoped ID, is not a way around the lock today: the planner plans only capabilities a resource advertises and no producer gives a physical disk one. TestPhysicalDiskResourcesAdvertiseNoActionCapability pins that for the Proxmox, agent, Unraid and TrueNAS producers, and the contract now says so, including that the disk's other operator settings are not carried.