Skip to content

Migrate Security shared directives and regenerate both v3 profiles - #3892

Open
Ramses Sanchez-Hernandez (ramsessanchez) wants to merge 13 commits into
powershell-v3from
ramsessanchez-security-v3-migration
Open

Ramses Sanchez-Hernandez (ramsessanchez) wants to merge 13 commits into
powershell-v3from
ramsessanchez-security-v3-migration

Conversation

@ramsessanchez

Copy link
Copy Markdown
Contributor

No linked issue.

Changes proposed in this pull request

  • Migrate only src/Security/Security.md shared cmdlet directives, retaining the active source and reviewed annotations. The unchanged original selector matches six actual legacy v1.0 and seven legacy beta operations. Normally merged Align operation IDs for required shared directive paths #3847 alignment makes all six/seven surviving compatible method/path/ID triples equal to those complete original source sets. The ledger uses ordinary literal evidence; all rejected Legacy-integration fields are removed. Both profiles are required, none excluded. Global and profile-local directives are ignored; parameter aliases/transforms and schema directives remain deferred.
  • Preserve curated/derived behavior and structural naming. Suppress reviewed nested dataSource operations and beta aggregatedAppsDetails, reuse existing attackSimulation suppression, document actual removed legacy bulk APIs, and retain structural alerts_v2/$count naming. Six body-incompatible collection actions retain their endpoints with meaningful Multiple nouns; seven count alternatives use ByArticle, ByHost, or AcrossHost, leaving published count names on their existing routes. No selectors, authored profile filters, new mutation groups, response-union restrictions, global generator changes, or new suppressions hide collisions. Existing v1 derived suppressions and unaffected neighbors remain unchanged.
  • Regenerate Kiota client + cmdlets + projects/lockfiles together for each profile, separately, against actual normally merged Sync current v2 Authentication into powershell-v3 #3891. Fresh normal manifests use adapted Authentication 2.41.2 and profile-aware transport. Each wrapper bin contains exactly its module/client/runtime DLLs, with no dependency copies/preloads. Validate real typed bodies, /v1.0 versus /beta URLs, escaped IDs, queries/headers/results, mandatory bindings, WhatIf, and genuinely declined confirmation without live Graph or credential-store access.

Commit boundaries

Boundary Commit
Initial migration/evidence/annotations/tests 4d98d2e57f
Historical v1 generation b78a0f75c6
Collision-contract regression evidence d7c61f69d1
Normal #3849 integration / API correction c95f003339, 7e1c9d39ed
Historical separate v1 / beta generations 81016faedf, 711fe3f757
Historical audit / source evidence 65ec1fdaa1, e62c1bec92
Normal 844672d7c2238f6b29a208f9ba73fe28e9e29cef integration effd25e4ca
Final literal migration/audit correction ac12a9d126
Final combined v1.0 generation 232a781c4e
Final combined beta generation 571084ded3

Historical failed/prepared/candidate proofs are preserved but are not current-target acceptance.

Final required gates

Profile Compatible spec Git blob Full Release build Exports Actual authenticated offline transport
v1.0 4d40a982e9b6708c07886c18e02704fab0fde822 Exit 0, OK, 47.40s 662 6 bodyless POSTs + 7 count GETs
beta e6f5ec76b7d4bd047c5cf0b5a4b0ad61ab86a2aa Exit 0, OK, 88.80s 1,003 6 bulk JSON POSTs + 6 bodyless POSTs + 14 count GETs

Both pipelines used the unchanged parent four-mutex queue, sequential v1.0 then beta, compatible specs only, Kiota 1.36.1+fd3bf87790149b87f40f7eae1a5feb9016625943, and process-local model generation parallelism 1. Acceptance Authentication was the normally packaged adapted 2.41.2 built from actual merged shipping source, not stock-gallery replacement or old 2.38.1. All 64 package file hashes remained unchanged. No skip flags, fallback, DLL injection, or unmerged candidate overlays.

Exact validation commands and results, run from this Security worktree:

dotnet test .\tools\WrapperGenerator.Tests\WrapperGenerator.Tests.csproj --configuration Release --filter 'FullyQualifiedName~SecurityDirectiveMigrationTests|FullyQualifiedName~NamingTests|FullyQualifiedName~CmdletConfiguratorTests' --logger 'trx;LogFileName=Security-final.trx' --results-directory C:\Users\ramsess\.copilot\session-state\f1a620d0-1a1d-426d-bc63-27a54b002f26\files\security-final-844672-20261102
# PASS: 105 tests, zero failures; explicit runtime profile with derived data ON/OFF.
pwsh -NoProfile -File .\tools\Get-WrapperDirectiveMigrationInventory.ps1 -Module Security -FailOnUnresolved -AsJson
# PASS: exit 0; all six directives Mapped using ordinary literal evidence.
& C:\Users\ramsess\.copilot\session-state\f1a620d0-1a1d-426d-bc63-27a54b002f26\files\Invoke-SecurityFinalBuild.ps1 -Profile v1.0
# PASS: full queue/build exit0, OK, 662 exports, 47.40s.
& C:\Users\ramsess\.copilot\session-state\f1a620d0-1a1d-426d-bc63-27a54b002f26\files\Invoke-SecurityFinalBuild.ps1 -Profile beta
# PASS: full queue/build exit0, OK, 1003 exports, 88.80s.

The retained build runner prepends the isolated Kiota directory, sets cap1 and the full process-local PSModulePath with normal-source Auth2.41.2 first, verifies exact fresh-child ModuleBase/version, and invokes the unchanged queue with -RepoRoot set to this worktree, -Module Security -ApiVersion v1.0 then beta, and -Configuration Release; no SkipKiota, GenerateOnly, or NoCollisionData.

Additional full-module probes are retained outside SDK source. $e is C:\Users\ramsess\.copilot\session-state\f1a620d0-1a1d-426d-bc63-27a54b002f26\files\security-final-844672-20261102. Each was invoked in a fresh child with the same ordered process-local Auth environment:

pwsh -NoProfile -File "$e\Test-SecurityFinalFidelity.ps1" -RepoRoot $PWD.Path -Profile v1.0
pwsh -NoProfile -File "$e\Test-SecurityFinalFidelity.ps1" -RepoRoot $PWD.Path -Profile beta
# Both PASS: nonzero full exports; every migrated suppression absent, 7 unaffected neighbors preserved.
pwsh -NoProfile -File "$e\Test-SecurityFinalRuntime.ps1" -RepoRoot $PWD.Path -Profile v1.0
pwsh -NoProfile -File "$e\Test-SecurityFinalRuntime.ps1" -RepoRoot $PWD.Path -Profile beta
# Both PASS: 7 published count defaults each, beta7 scoped alternatives; mutation mandatory IDs and WhatIf.
pwsh -NoProfile -File "$e\Test-SecurityFinalTransport.ps1" -RepoRoot $PWD.Path -Profile v1.0 -EvidencePath "$e\v1.0-transport.json"
pwsh -NoProfile -File "$e\Test-SecurityFinalTransport.ps1" -RepoRoot $PWD.Path -Profile beta -EvidencePath "$e\beta-transport.json"
# Both PASS using normal Authentication token pipeline and real full compiled Kiota serializers/deserializers.
# v1:13 requests;6WhatIf;6genuine declined Confirm, exactly one prompt each;19binder rejections.
# beta:26 requests;all6typed ids JSON bodies;12WhatIf;12genuine declined Confirm;38binder rejections.
# Safety/invalid calls send zero HTTP; exact escaped URLs, generic headers, reserved $filter/$search,
# typed int32 count=7, and204 empty results verified. Beta requests explicitly use /beta, not /v1.0.
pwsh -NoProfile -File "$e\Test-SecurityFinalPreservation.ps1"
# PASS:128 shipping source blobs match normal target, all64Authhashes unchanged, both bins only3ownedDLLs,
# no preloads/duplicate shared identities, all ledger profiles literal, clean worktree.

Raw parity and scope limitations

pwsh -NoProfile -File .\tools\Compare-WrapperCmdletNames.ps1 -GeneratedPath .\src\Security\wrapper\v1.0\Cmdlets -OutLedger "$e\v1.0-parity.csv"
# Exit1:633 matched/662 routes;28 existing unrelated naming mismatches,1 documented correction.
pwsh -NoProfile -File .\tools\Compare-WrapperCmdletNames.ps1 -GeneratedPath .\src\Security\wrapper\beta\Cmdlets -OutLedger "$e\beta-parity.csv"
# Exit1:0 raw matches/1003 routes;981 mismatches including Mg vs MgBeta,22 no-oracle.

Raw parity is not normalized or claimed passing. Unrelated naming differences remain outside shared-directive scope. No live Graph/service-validity claim, PATCH/refetch expansion, new mutation-group behavior, or Desktop/PowerShell5.1 work. Baseline unsupported/client-only/schema limitations remain visible rather than newly suppressed. Existing Microsoft.OpenApi.YamlReader advisory warnings are unrelated dependency findings.

The final evidence root retains final-result.json, preservation.json, source/spec/package hashes, raw logs/exits, Security-final.trx, compiled route evidence, actual authenticated HTTP bodies/results, binder/safety counts, and reproducer scripts. Earlier candidate/failed logs remain separate.

Other links

Account for complete same-profile legacy selectors, preserve curated suppressions and structural naming, and record actual retired bulk actions. Add exact compatible evidence and unaffected-neighbor regressions.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Run the full queued Release pipeline with compatible spec aea8141, Kiota 1.36.1 and official Authentication 2.38.1. Build exports 662 cmdlets. Generated projects are byte-identical. Compiled migrated-operation and neighboring-route checks pass; full module parity retains baseline mismatches.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Read all 26 exact compatible routes and published metadata in module-specific regressions. Preserve six item-default bodyless/bulk actions and the two nested-default scalar count groups; do not activate unsupported multi-route configuration.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Propagate runtime profiles separately, test derived data on and off, refresh exact source/current evidence, and resolve incompatible beta alternatives with scoped nouns rather than superseded selectors. Preserve the genuine seventh-source-operation strict inventory blocker.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Full queued Kiota 1.36.1 and cmdlet Release pipeline passed in 36.00 seconds, 662 exports, compatible spec 4d40a98. Original official Authentication 2.38.1 fresh import and compiled migration/neighbor checks passed. Cmdlets and projects byte-identical; retain generated client and lock changes together.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Full queued Kiota 1.36.1 and cmdlet Release pipeline passed in 67.40 seconds, 1003 exports, compatible spec eed5ced. Fresh official Auth2.38.1 module import, compiled suppression/naming/neighbor checks and mutation WhatIf passed. Actual bulk body probe is blocked by baseline missing RecyclableMemoryStream packaging; strict legacy source bridge also remains blocked. No PR readiness is claimed.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Distinguish compiled route and WhatIf evidence from real transport. Record missing RecyclableMemoryStream packaging and surviving legacy-ID strict bridge without claiming PR readiness.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Prepare the genuine seven-operation same-path Legacy bridge with exact old/current IDs. Keep v1.0 literal and update module source assertions only. Current normal-target strict inventory still fails until the shared helper merges; no generator/helper/spec/derived changes or regenerated output.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
… target

Normally integrated #3847 ID alignment and #3891 Authentication. Preserve complete six/seven original selector sets with ordinary literal triples, remove superseded Legacy schema, and update final module audit and regressions. All six strict mappings and 105 targeted tests pass.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Full queued Kiota+cmdlet Release pipeline at merged844672 passed47.40s with662 exports. Fresh normal-module route/neighbor/count/default and13 authenticated offline transport requests passed; six WhatIf and genuine declined confirmations sent no HTTP. Generated projects use dependency-free three-owned-DLL wrapper packaging; client/cmdlet/project/lock boundary remains combined.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Full queued Kiota+cmdlet Release pipeline at merged844672 passed88.80s with1003 exports. Fresh normal-manifest26 authenticated offline requests cover all6typedIds bulk JSON bodies,6bodylessitems and14scalarcount routes including exact beta URLs, escaping, headers and queries.12WhatIf+12genuine declined confirmations send no HTTP;38invalid bindings rejected. Retain combined client/cmdlet/project/lock boundary, three-owned-DLL package closure, and honest raw parity limitations.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

This branch has not been deployed

No deployments
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