-
Notifications
You must be signed in to change notification settings - Fork 0
feat: checkpoint PhotoKit duplicate inventory #321
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
seonghobae
wants to merge
8
commits into
feat/apple-photos-duplicate-library-v1
Choose a base branch
from
feat/photokit-checkpoint-audit-v1
base: feat/apple-photos-duplicate-library-v1
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
0f1e57a
feat: checkpoint PhotoKit duplicate inventory
seonghobae 4c8670c
fix: keep PhotoKit checkpoints bounded and stable
seonghobae d23710d
fix: await native PhotoKit resource completion
seonghobae c1ee752
fix: keep PhotoKit pagination linear and restartable
seonghobae b5a95f1
fix: restore PhotoKit reconnection after revocation
seonghobae fbaf66e
test: preserve offline PhotoKit read contract
seonghobae 86c2c59
fix: report refused container reclaim accurately
seonghobae f66c3fa
Merge remote-tracking branch 'refs/remotes/origin/pr-317' into codex/…
seonghobae File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
38 changes: 38 additions & 0 deletions
38
docs/architecture/adr/0024-photokit-checkpointed-inventory.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,38 @@ | ||
| # ADR-0024: Checkpoint PhotoKit inventory at native completion boundaries | ||
|
|
||
| - Status: Accepted | ||
| - Date: 2026-08-30 | ||
|
|
||
| ## Context | ||
|
|
||
| Reading locally available originals can take materially different time per asset. A single large | ||
| PhotoKit request kept the customer waiting without progress or cancellation, while an arbitrary | ||
| wall-clock timeout discarded completed evidence. | ||
|
|
||
| ## Decision | ||
|
|
||
| DiskSage requests one `PHAsset` per native page. A page is accepted only after PhotoKit's resource | ||
| completion handler, and records its measured duration rather than using it as a guessed cutoff. | ||
| Rust rejects gaps, repeated offsets, missing completion evidence, and inconsistent totals. The UI | ||
| checkpoints after every page, yields for rendering, and stops between pages when requested. A | ||
| checkpoint is resumable; it never authorizes deletion. Network access remains disabled and no | ||
| PhotoKit change request is made during inventory. | ||
|
|
||
| ## Consequences | ||
|
|
||
| Large libraries take as long as their locally available originals require, but the customer sees | ||
| progress, may stop safely, and can resume without repeating accepted pages. Destructive planning | ||
| still requires a complete inventory and the existing fresh re-fetch and exact approval contract. | ||
|
|
||
| ## Rejected alternatives | ||
|
|
||
| An arbitrary whole-library timeout was rejected because elapsed wall time is not evidence that | ||
| PhotoKit failed. Large fixed pages were rejected because they cannot yield promptly between assets. | ||
|
|
||
| ## References | ||
|
|
||
| Apple. (n.d.). *PHAssetResourceManager*. Apple Developer Documentation. | ||
| https://developer.apple.com/documentation/photokit/phassetresourcemanager | ||
|
|
||
| Apple. (n.d.). *Fetching and caching assets and thumbnails*. Apple Developer Documentation. | ||
| https://developer.apple.com/documentation/photokit/fetching-and-caching-assets-and-thumbnails |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.