A chunk in quarantine is a retrieval record that a pipeline refused to trust. It may have been pulled for poison suspicion, a stale figure, a broken source link, or a ranking problem. Whatever the cause, the reviewer's job is not to repair the whole index. It is to answer one question: does this chunk, as written, deserve to be retrieved again.
The decision rule is short.
Restore if all four tests pass and no hard stop is recorded. Otherwise drop.
No partial restores, no "restore for now and watch it," no restoring with a note attached. A chunk is either trusted enough to be retrieved or it is out of the index. That binary is the whole value of the checklist: it removes the private judgment call that makes quarantine outcomes differ between reviewers.
Two hard stops override everything, including a clean test sheet. The first is a source hash mismatch where no owner confirms the new text. The second is any test failing twice across two separate review attempts. Both are recorded as reasons a reviewer cannot argue with later.
The framing borrows from database review practice, where a reviewer confirms that required artifacts are present and correctly formatted before an approval is even considered, and an incomplete request is sent straight back to the author rather than approved with caveats (GitLab's database review guidelines). Quarantine review works the same way: a missing field means the chunk goes back to the person who filed it, not forward to the index.
Before running a single test, fill these six fields. The tests reference them, so an empty record cannot be reviewed.
| Field | What goes in it | Fails review when |
|---|---|---|
| Chunk id | Stable identifier plus the collection and segment it belongs to | Missing or reused from another chunk |
| Source URL and hash | Canonical URL and the content hash captured at ingest | URL unreachable, or hash absent |
| Trigger | The named reason the chunk was quarantined, with the query or rule that fired | "Suspicious" or any unnamed reason |
| Test evidence | The four test results, each with its query text and returned value | Any test marked "spot checked" or "looked fine" |
| Reviewer | Named person who ran the tests | A team name or a bot |
| Decision | Restore or drop, with the hard stop if any | Blank, or restore with an attached condition |
The trigger field is where most weak records fail. "Suspicious content" is not a trigger. "Chunk returned at rank 2 for the query 'how do I reset a meter' and contains the phrase ignore previous instructions" is a trigger. Promptfoo's poison generation workflow exists because adversarial content often sits in documents that look ordinary, and its documentation warns that document embeddings frequently fail to capture semantic attacks and that traditional content filtering misses sophisticated ones (Promptfoo's RAG poisoning utility). If the trigger does not name the query and the exact text, the reviewer has nothing to test against.
The source hash deserves its own sentence. Hash the normalized text of the page as it stands now, using the same normalization the ingest pipeline used (whitespace collapsed, navigation stripped, encoding fixed). If you cannot reproduce the ingest normalization, you cannot compare hashes, and the chunk fails test 1 by default. Teams that get this wrong spend their quarantine reviews debating formatting noise.



