The scenario sets a "busy" mark in SeaTable for the duration of a long job: a second run sees it, stops with a clear error, and leaves the data intact.
Only one run at a time
No duplicated data
The second run fails clearly, not silently
The lock expires — a hung job can't block everything