diff --git a/docs/diagrams/survivor-selection-concept.html b/docs/diagrams/survivor-selection-concept.html index dd72ea1b1..2f8b97957 100644 --- a/docs/diagrams/survivor-selection-concept.html +++ b/docs/diagrams/survivor-selection-concept.html @@ -394,7 +394,7 @@

Stage 2 — Priority list

03
More attachments
-
when normalized MIME matches, prefer the more complete set
+
only when every eligible copy has matching normalized MIME
payload
@@ -403,7 +403,7 @@

Stage 2 — Priority list

04
Attachment-presence signal
-
when counts tie, preserve a source-declared attachment
+
within that equivalent set, preserve a source-declared attachment
payload
@@ -412,7 +412,7 @@

Stage 2 — Priority list

05
Larger payload
-
when normalized MIME matches, prefer more stored bytes
+
within that equivalent set, prefer more stored bytes
payload
diff --git a/docs/internal/accounts-identities-collections-dedup/spec.md b/docs/internal/accounts-identities-collections-dedup/spec.md index c52232fd2..0ec1c3f21 100644 --- a/docs/internal/accounts-identities-collections-dedup/spec.md +++ b/docs/internal/accounts-identities-collections-dedup/spec.md @@ -313,9 +313,9 @@ preference runs in this order: 1. Source preference (when `--prefer` is configured, or the default order: `gmail,imap,mbox,emlx,hey`). -2. Complete original payload — has raw MIME, then, when normalized - raw MIME matches, more attachments, an attachment-presence signal, - and a larger original payload. +2. Complete original payload — has raw MIME, then, only when every + eligible copy has the same normalized raw MIME hash, more attachments, + an attachment-presence signal, and a larger original payload. 3. Source metadata quality — provider IDs, threading info, presence of Message-ID. 4. Richer label or folder metadata. @@ -324,9 +324,9 @@ preference runs in this order: Earlier rules win outright. Later rules apply only when all earlier ones tie. Attachment and payload-size metadata are authoritative only -when both rows have raw MIME and their normalized MIME hashes match; -a shared Message-ID alone is insufficient. The exact policy is visible -in dry-run output. +when every eligible copy has raw MIME and all normalized MIME hashes +match; a shared Message-ID alone is insufficient. The exact policy is +visible in dry-run output. The public [Deduplication](../../usage/deduplication.md) guide carries the rendered survivor-selection diagram. diff --git a/docs/usage/deduplication.md b/docs/usage/deduplication.md index 9b9630600..c55e8473e 100644 --- a/docs/usage/deduplication.md +++ b/docs/usage/deduplication.md @@ -38,10 +38,10 @@ Survivor selection is deterministic and explainable, and the reasoning is printe 7. Earlier archive timestamp. 8. A stable row ID, as the final tie-breaker. -Earlier rules win outright; later rules apply only when all earlier ones tie. The attachment-count, attachment-presence, and payload-size rules apply only when both copies have raw MIME and their normalized MIME hashes match. A shared `Message-ID` alone cannot make those payload-completeness signals authoritative. The survivor inherits the union of labels from the copies it replaces, and backfills raw MIME from a non-survivor if it was missing the original payload. +Earlier rules win outright; later rules apply only when all earlier ones tie. The attachment-count, attachment-presence, and payload-size rules apply only when every eligible copy has raw MIME and all their normalized MIME hashes match. A shared `Message-ID` alone cannot make those payload-completeness signals authoritative. The survivor inherits the union of labels from the copies it replaces, and backfills raw MIME from a non-survivor if it was missing the original payload.
- Survivor selection runs the sent-copy eligibility filter first, then a priority list: source preference, raw MIME, more attachments, an attachment-presence signal, a larger payload, richer labels, earlier archive time, and finally a stable row ID. + Survivor selection filters to eligible sent copies first, then considers source preference and raw MIME. Only when every eligible copy has matching normalized MIME does it compare attachments, attachment presence, and payload size before labels, archive time, and stable row ID.
## Choosing a Scope