**TL;DR:** Symptom: delete with a metadata filter reports success but records remain. Check the namespace, the filter match, and whether deletion protection or the wrong index is involved. Confirm it 1. Fetch one record you expected deleted; print its namespace and metadata.

## The fix

1. Fetch one record you expected deleted; print its namespace and metadata.

2. Run a query with the same filter: if it returns records, the filter works and the delete did not target them (namespace/index wrong). If it returns nothing, the filter itself matches nothing.

3. `describe_index_stats()` per namespace before and after the delete to see which namespace count moved.

4. Pass the correct namespace explicitly on the delete call.

5. Fix the filter using the fetch output as ground truth.

6. For full-namespace wipes use `delete_all` with the namespace; it is unambiguous.

## When to use this

- This covers exactly what the title says: Pinecone diagnosis.
- You are setting this up for the first time, or auditing an existing setup.
- You want the key gotchas in one place before you start.

## When not to use this

- You are doing a different workflow with Pinecone; these steps are specific to the title above.
- You need the full reference docs; this is the short path, not the manual.

## Compatibility

- Not pinned to a specific version; follows current Pinecone behavior.