Repository navigation
feat(items): add protected local operation callbacks - #16
Merged
Quaternion8192 merged 13 commits intoOct 10, 2026
Merged
Conversation
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Local initialization previously could not retain the original object across ordinary-file conversion, awaited host work and DACL read/apply/readback through public APIs. This adds
CloudItem.RunProtectedLocalOperationAsyncwith a controlled context, complete original binding and independent receipts for native preparation, durable projection, permissions and draining.An owned Windows file object retains data/namespace exclusion and security access through the actual callback, admitted scope calls and cancellation handlers. Local conversion reuses the existing conversion/projection cores, preserves content and known pending state, and completes required persistence after native success. It introduces no accepted revision, InSync mark, dehydration, journal ACK or SQLite schema. Permission operations copy .NET descriptors and apply only Access. Directory mode pins the directory name while leaving member and descendant coordination to the host.
Budgets and shutdown stop new work and signal cooperative cancellation; resources remain retained until actual work drains. Mutation boundaries check original cancellation signals directly so delayed linked-token callbacks cannot start canceled native work. Exact-item inspection/conversion reuse the scope; unsupported facade reentry and self-disposal fail fast. A second DACL writer under a held CFAPI reference is deliberately avoided after native evidence of self-waiting. Share-none file admission can reject conflicting readers as well as writers; it is intended for short local work.
The compiled public-API sample, isolated locked NuGet consumer, XML documentation, DocFX guide and platform matrix cover the new contract. Review corrected permission admission after handled projection failure and rejection of unsupported native objects before CFAPI root queries. Request-flow fault hooks make the pre-native cancellation regression independent of provider completion transactions.
Final-source validation:
9939b13has exactly the same source tree as final head0dec545.0dec545. The local preview.5 candidate embeds this commit and verifies package/symbol/SBOM/consumer-lock hashes; ARM64 trim/AOT consumers execute with source reads=0.Comprehensive source review is complete; identified production findings are corrected with regressions. MP's installed/MSIX, non-administrator and whole-tree product acceptance remains separate. No release, tag, publication or workflow upload-rule change is included.