fix(vector): guard dead-letter on etag, harden marker filter

Addresses round-2 review on PR #920:
- Only dead-letter a terminal failure when the file has an etag to
  content-address the marker; without one, fall back to the legacy per-user
  placeholder mark (an etagless marker is unmatchable). + test.
- _dead_letter_filter now also matches is_placeholder=True (redundant with
  dead_letter=True but lets Qdrant use the is_placeholder payload index).
- TODO(deck-349) documenting the dead-lettered-then-deleted orphan-marker leak
  (out of scope; needs a marker sweep or TTL field) per reviewer.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Chris Coutinho
2026-06-17 19:25:04 +02:00
co-authored by Claude Opus 4.8
parent cd348b3233
commit d720071942
4 changed files with 59 additions and 8 deletions
+1
View File
@@ -151,6 +151,7 @@ class TestIsDeadLettered:
assert conds == {
"doc_id": "520189",
"doc_type": "file",
"is_placeholder": True,
dl.DEAD_LETTER_KEY: True,
}
assert "user_id" not in conds