I found a bug in fds module (Flash Data Storage) which lead to data system corruption.
Given the device started GC(Garbage Collection) procedure
When the device will reset during the in the certain moment of page swap procedure.
Then assigning new record id will overlap existing ones.
When just first two words of a record are copied to the swap page, the header of this record will pass header_check function.
During the page_scan procedure, this corrupted header will be used to update m_latest_rec_id. It will result in assigning new record ids from 0.
I have updated header_check function to check record_id against 0xFFFFFFFF value, and now I am testing this workaround.