mirror of
https://github.com/stablyai/orca.git
synced 2026-10-30 16:47:34 +00:00
* fix(runtime): a device registry save never resurrects a device removed on disk Every DeviceRegistry save wrote orcad's whole in-memory list. A lastSeen flush (250 ms after any socket auth, and again at shutdown) could therefore write back a device an admin had just removed from orca-devices.json on the host, silently undoing the revoke; it also dropped rows another writer had added. Saves now re-read the file and write the in-memory change merged over it: rows this process knew of that are gone from disk stay gone (in memory too), rows added on disk are kept, and this save's own adds and removals apply. The write stays the secure-file atomic rename. The pairing-repair e2e logs the registry's device ids after the kill and after the reconnect. * fix(runtime): tombstone devices this process removed so a stale writer can't restore them Review of #35483: after removeDevice(a), a stale writer (an old orcad's flush during an SSH relaunch or upgrade overlap, an external tool) could write a back; the next save treated it as new on disk, adopted it and let it authenticate. DeviceRegistryWriter now remembers every id this process removed, recorded before the write so a failed load-time cleanup counts too, and never adopts those from disk. replaceRow reports false when the merge dropped the row, and a pending offer removed on disk is replaced instead of handed out.