Observed on the merged tree of #108 + #109 (neither alone had shown it):
- main run 32816934522, first attempt:
FAIL solo-erase — pm-device-<id> (the database) survived the erase: expected false, got true (33/34). The rerun of the same commit passed 34/34.
- One local full-suite run of the same tree failed 33/34 (scenario identity not captured); the immediate local rerun passed 34/34.
solo-erase ALONE passes 6/6 locally — the flake needs suite context (load, ordering, or a prior scenario's residue).
Shape: the erase ceremony completed (no onblocked rejection — that would have failed the ceremony act itself), the page reloaded onto the first-run fork correctly, and yet the device's IndexedDB database EXISTS again at the post-reload check. That reads as resurrection, not survival: something re-created pm-device-<id> after the destroy — a worker outliving the reload window with an armed timer (checkpoint debounce, flush debounce) whose firing re-opens the namespace and re-creates the database as a side effect of open-on-missing.
Candidate wideners, in suspicion order:
Reproduction lever to try first: run the suite from solo-storage onward in a loop, or artificially arm the checkpoint debounce just before the erase ceremony and assert the database stays gone across the window. The fix direction, if the hypothesis holds: destroy must cancel/await every armed timer and in-flight internal driver call before dropping the namespace, and open-on-missing paths in sealed-fs/idb should refuse to re-create a namespace whose index row is gone.
Observed on the merged tree of #108 + #109 (neither alone had shown it):
FAIL solo-erase — pm-device-<id> (the database) survived the erase: expected false, got true(33/34). The rerun of the same commit passed 34/34.solo-eraseALONE passes 6/6 locally — the flake needs suite context (load, ordering, or a prior scenario's residue).Shape: the erase ceremony completed (no onblocked rejection — that would have failed the ceremony act itself), the page reloaded onto the first-run fork correctly, and yet the device's IndexedDB database EXISTS again at the post-reload check. That reads as resurrection, not survival: something re-created
pm-device-<id>after the destroy — a worker outliving the reload window with an armed timer (checkpoint debounce, flush debounce) whose firing re-opens the namespace and re-creates the database as a side effect of open-on-missing.Candidate wideners, in suspicion order:
Reproduction lever to try first: run the suite from
solo-storageonward in a loop, or artificially arm the checkpoint debounce just before the erase ceremony and assert the database stays gone across the window. The fix direction, if the hypothesis holds:destroymust cancel/await every armed timer and in-flight internal driver call before dropping the namespace, and open-on-missing paths in sealed-fs/idb should refuse to re-create a namespace whose index row is gone.