Skip to content

feat(items): add protected local operation callbacks - #16

Merged
Quaternion8192 merged 13 commits into
developfrom
fix/preview5-protected-local-operations
Oct 10, 2026
Merged

Quaternion8192 merged 13 commits into
developfrom
fix/preview5-protected-local-operations

Conversation

@Quaternion8192

@Quaternion8192 Quaternion8192 commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

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.RunProtectedLocalOperationAsync with 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:

  • CI 37975067272: x64 and ARM64 each 582 passed, 0 failed, 0 skipped, verified from downloaded original TRX. All 60 new integration cases execute on both architectures; x64 native ABI, API baseline, formatting, dependency audit and runtime boundaries pass.
  • Both architectures actually execute isolated package consumers after trim and Native AOT publication. CI's merge snapshot 9939b13 has exactly the same source tree as final head 0dec545.
  • Local related integration suite: 112 passed, 0 skipped, including deterministic delayed-cancellation propagation, projection failure, shutdown/feed and restart recovery.
  • Release and DocFX build: 0 warnings/errors; documentation bundle verified against 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.

@Quaternion8192
Quaternion8192 marked this pull request as ready for review October 9, 2026 19:17
@Quaternion8192
Quaternion8192 merged commit adad62f into develop Oct 10, 2026
5 checks passed
@Quaternion8192
Quaternion8192 deleted the fix/preview5-protected-local-operations branch October 10, 2026 00:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant