Repository navigation
Fix shared wrapper serialization dependency packaging - #3878
Open
Ramses Sanchez-Hernandez (ramsessanchez) wants to merge 3 commits into
Open
Ramses Sanchez-Hernandez (ramsessanchez) wants to merge 3 commits into
Ramses Sanchez-Hernandez (ramsessanchez) wants to merge 3 commits into
Conversation
Retain RecyclableMemoryStream from the restore graph and preload it through normal wrapper manifests without duplicating the shared Authentication/Kiota closure. Add package and offline typed-mutation regression gates. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Ramses Sanchez-Hernandez (ramsessanchez)
requested a review
from a team
as a code owner
October 30, 2026 02:23
This was referenced Oct 30, 2026
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
PowerShell 5.1 compatibility is explicitly outside v3 support and acceptance scope; retain earlier Desktop observations as historical evidence only. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This was referenced Nov 2, 2026
This branch has not been deployed
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.
Changes proposed in this pull request
Microsoft.IO.RecyclableMemoryStreamby NuGet package identity from the existing restore graph, and preload it through generated manifests' normalRequiredAssemblies, alongsideStd.UriTemplate. Original official Authentication 2.38.1 ships Kiota JSON referencing RecyclableMemoryStream 3.0.1 but omits that DLL. No new package/version declaration, installed Authentication change, manual DLL injection, loader shim, signing change, or copied shared Kiota/Auth closure.ad585c4a7175a7b8196be725d5a0f2e542616c08preserves original headef5690b7c3317450083af2c1126e81878ae09405and actual target604bd968c78e681370e3dc6d8d38718429959a7fas its two parents. Final source/head151948cf5e490d8619a758164fbc2874165ec0c3also includes only the user-directed documentation clarification that v3 validation uses PowerShell 7. All published history/coauthors are preserved; pushed non-force.Historical before/after evidence (2026-10-29, original 08e409a baseline)
The unmodified full SchemaExtensions v1 build imported normally under original official Authentication 2.38.1 and passed GET, DELETE, three WhatIf checks, and three genuinely declined confirmation prompts. Actual typed POST and PATCH each failed before HTTP, with zero requests, on
FileNotFoundException: Microsoft.IO.RecyclableMemoryStream, Version=3.0.1.0. The original fix then passed full generation/build, pack, normal package-manifest import, and actual Core typed mutation gates in both profiles. Those logs and original Auth hashes remain preserved separately; they are not presented as validation of the newer merged target. Introduction is not established, and this defect is not attributed to #3849.Fresh post-#3847 proof (2026-11-02, final source 151948c)
One bounded proof ran full SchemaExtensions v1.0 generation/build, then full beta generation/build through the unchanged four-mutex queue, each using the compatible spec from the actual merged source. Full generation did not use
SkipKiota; the subsequent production pack reused its completed client generation. Both newly packaged profiles imported via their unaltered unpacked normal manifests in fresh PowerShell 7.6.9/Core child processes, with original complete official Authentication 2.38.1 first on the prescribed process-local module search path and isolated Kiota 1.36.1 at process-local generation parallelism 1.Runtime gates assert typed nested JSON for real POST/PATCH, exact methods and escaped URLs, typed results, PATCH followed by same-route GET refetch, unchanged GET/DELETE, and three each of WhatIf/declined-Confirm no-send checks. All HTTP stays in the terminal in-memory handler on the real shared GraphSession HttpClient, with no live Graph requests. The DLL-present/preload-removed negative control additionally reproduces both real POST/PATCH missing-dependency failures before HTTP.
Each current package contains exactly six DLLs: wrapper module/client/runtime plus UriTemplate, Multipart, and RecyclableMemoryStream 3.0.1. The manifest preloads UriTemplate and RecyclableMemoryStream. Those standalone dependencies resolve from the unpacked package in
Default; Kiota JSON/Abstractions/HTTP and other shared Kiota libraries resolve only from official Authentication inmsgraph-load-context. Auth/Core remain single official assemblies and the session marker-client identity is asserted. The official bundle still has no RecyclableMemoryStream DLL.PowerShell support scope
Per the user-directed v3 support decision, PowerShell 5.1 is explicitly unsupported/out of scope and is not an acceptance blocker. No Desktop runs were requested or performed in this refreshed proof. The earlier unsigned-source versus signed-official Authentication identity failures are retained only as historical observations, not a required compatibility gate or proposed future fix. No signing, loader, Authentication, or repository-wide compatibility changes were added.
Exact current commands and provenance
The bounded script and its
commands-results.jsonretain the executable, complete arguments, UTC timestamps, exit code, raw log path, and exact source head for all ten current commands. Every current command exited 0. Executed selectors:input-provenance.jsonrecords final source/tree/normal-merge/target SHAs, both compatible-spec SHA256s, unchanged queue and isolated Kiota binary hashes/version, original official Auth root/fingerprints, and relevant source fingerprints.package-inventory-v1.0.jsonandpackage-inventory-beta.jsonrecord current package/manifest/DLL hashes and declarations. Raw logs, exits, actual HTTP/assembly-source/context JSON, three negative-control results, andruntime-tests\session-cache.trxare retained in the new named artifact root above, without overwriting old evidence.Only this pass's owned generated source changes were restored after verifying there were no intervening external writes; prevalidation tracked-file hashes match the restored source exactly. Net PR scope remains the original five shared packaging/test/doc paths, with a clean worktree.
Other links
tools/Templates/WrapperModule.csproj.template,tools/Build-WrapperModule.ps1,tools/Test-WrapperModule.ps1,tools/Test-WrapperSerialization.ps1,tools/WrapperGenerator/README.md