NoumenonTell me what's broken

A delete that does not delete

An item vanishes after you click Delete, then returns when you refresh the page.

Create a throwaway item owned by your test account and copy its id if the app shows one. Never use an important record for this check. You are looking for evidence of a completed deletion, not just a change in the list currently drawn on screen. Keep the original name and id so you can distinguish the same item from a newly created copy.

Reviewed . Start with a two-minute check; repairs can take longer.

The two-minute check.

  1. Watch the delete action.

    Open Chrome’s Inspect menu, select Network and clear the request list. Delete the throwaway item once. Select the new request associated with that item and read the method, URL, status and Response. Note any reported error or affected record id.

  2. Check what the next read returns.

    Reload the list with Network open. Inspect the list request’s Response and look for the original id. If it is returned, the app can still read that record; the disappearing row alone did not prove deletion.

  3. Look at the stored record.

    Open the correct database project and locate the original id. Read whether the row is still present or has a field marking it deleted. Do not manually remove it yet, since that would erase the evidence needed to explain the failed button.

  4. Compare ownership and policy.

    Compare the test account with the record’s owner. If the app uses Supabase, inspect the table’s DELETE policy and the SELECT policy that makes the row visible. Check the owner condition instead of disabling row level security.

Read the result.

WORKSA fresh read no longer returns the disposable item in the promised list.

BROKENThe original item returns after the app claims deletion.

FAKEDThe button only hides the item while claiming a persistent delete.

Causes and fixes.

Ranked in the order to investigate, not by claimed frequency.

  1. The interface hides the row without completing a delete.

    Wait for the delete operation and handle its error before presenting success. If the request fails, keep the item visible or restore it with a clear failure message.

  2. The request targets no permitted matching row.

    Correct the record id, owner filter or operation-specific access policy. Check that the intended test row is visible and deletable by its owner while another user cannot delete it.

  3. The app uses soft deletion but reads all rows.

    If the product intentionally marks items as deleted, make list reads honor that field. State whether deletion means hiding a record or permanently removing it, then test that promised behavior.

Edge cases.

  • A successful HTTP status can accompany an operation that matched no rows. Read the result and perform the fresh read before stamping the journey as passed.
  • A cached list may show a removed item. Compare the database record and the fresh response to avoid changing a working delete because of an old screen.

When to stop and hand it over

Hand it over if ownership rules are unclear, related records make the deletion fail, or the product needs an irreversible purge. Supply the disposable id and redacted request result. Keep real customer data out of the experiment.

Before the next attempt.

Should I delete the row in the dashboard?

That can remove the symptom without repairing the button. Keep the disposable row until you understand the request.

Does hiding a row count as deletion?

Only if that is the behavior the product promises. A permanent-delete claim needs stronger evidence than a hidden list item.

Related case evidence.

Notes test app / delete journey J2

The interface said a note was deleted, but it remained after refresh. The notes-clean fixture passed the same journey after repair. This was a deliberately broken test app, not a client project.

Official sources.

These sources document the product behavior used in this check. The diagnostic order and verdicts are Noumenon’s procedure; they are not quoted product error messages.

What's
not working?

You don't need to explain it perfectly. Tell me what you expected and what happened instead.

I'll reply personally by email.
The diagnosis is free. No commitment.

Please leave out passwords and secret keys. We can arrange a test login separately.