Skip to content

solo-erase flakes in full-suite runs: the erased device's IndexedDB database survives the erase #112

Description

@lannbot

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions