import: settle which macOS image signal to believe
The gap was the unified fetch, four accounts in one crowd;
read iCloud alone and the two signals agree out loud.

Assisted-by: Claude Opus 5 via Claude Code
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
change rroluovxomsyvosrvtlyloyxzmmxzttz
commit ce51ea2e61fb756e2b5c72c4c1bd2f8f07efcb9b
author Alpha Chen <alpha@kejadlen.dev>
date
parent qlrvopys
diff --git a/docs/plans/2026-09-16-importing-from-macos.md b/docs/plans/2026-09-16-importing-from-macos.md
index c92516e..b20d753 100644
--- a/docs/plans/2026-09-16-importing-from-macos.md
+++ b/docs/plans/2026-09-16-importing-from-macos.md
@@ -182,9 +182,18 @@ contacts, macOS 26):
   and reading `note` raises `CNPropertyNotFetchedException`. AppleScript's
   `note of person` returns the note, so notes come from there.
 - `PHOTO`. The image key comes back available, and still no card carries
-  a photo, so the builder writes `PHOTO` from `imageData`.
-  `imageDataAvailable` is true for 392 contacts while `imageData` is
-  present for 193; which of the two to believe is unsettled.
+  a photo, so the builder writes `PHOTO` from `imageData`. That is the
+  signal to believe: across the 360 people the iCloud container holds
+  unmerged, `imageDataAvailable` and `imageData` agree on every one
+  (measured 2026-09-19). The gap recorded here before — 392 against 193
+  — came of measuring the unified, all-account fetch instead, where 185
+  of 1,770 contacts claim an image and supply none. Each of those 185
+  has a unified identifier no container claims and a distinct
+  `thumbnailImageData` of 723 to 333,967 bytes, and thumbnails without
+  images are Monica's: 1,673 of its 1,680 cards, against 8 in the other
+  three accounts. Two of those 8 are iCloud's, and one has already
+  imported as `photo: false` over a 68,996-byte JPEG thumbnail, so
+  whether the builder falls back to `thumbnailImageData` is open.
 - `UID`. No card has one, so the builder adds the minted id.
 
 The reader asks for an explicit list of keys and fails if any comes back