From 5868ae73bfecff1ee8881866f0156fbf70691751 Mon Sep 17 00:00:00 2001 From: Justin Emerson Date: Mon, 27 Jul 2026 18:27:44 -0700 Subject: [PATCH] fix(tools): emit repo-relative paths in the drift report, never absolute `confidence.unresolvedParameters[].file` passed the cmdlet's absolute path straight through, while `target.file` was already repo-relative. Because these artifacts are committed, that had two consequences: 1. It published the generating machine's home-directory path into the repo -- 88 occurrences in each of Reports/PfbApiDriftReport.json and .md. 2. It made the committed content depend on WHERE it was generated. Regenerating from a git worktree instead of the main checkout rewrote all 88 lines, producing 174 of 279 diff lines of pure churn that buried the real changes under review. Extracts the relativization Get-PfbGapTarget already performed into a shared ConvertTo-PfbRepoRelativePath helper and applies it at both emission sites, so there is one rule and one place to change it. The .md writer reads the same structure, so it is fixed by the same change. Adds three regression guards over the real generated artifacts asserting no absolute path survives in unresolvedParameters, in enriched body-property targets, or in the rendered markdown. All three were mutation-proved: with the helper stubbed to a passthrough, all three fail. The target guard also asserts a non-zero population -- its first draft read the path from the wrong nesting level, always scanned nothing, and passed vacuously under that same mutation. Regenerated artifacts are path-only: 88 changed lines per file, verified to differ by nothing but the path prefix. No semantic change to the report. Suite 632/4/2, up from 629/4/2 -- exactly the three new guards, same four pre-existing pinned-figure failures. Co-Authored-By: Claude Opus 5 --- Reports/PfbApiDriftReport.json | 176 ++++++++++++------------ Reports/PfbApiDriftReport.md | 176 ++++++++++++------------ Tests/Build-PfbApiDriftReport.Tests.ps1 | 49 +++++++ tools/Build-PfbApiDriftReport.ps1 | 41 ++++-- 4 files changed, 254 insertions(+), 188 deletions(-) diff --git a/Reports/PfbApiDriftReport.json b/Reports/PfbApiDriftReport.json index 8a3c3bd..aad27cd 100644 --- a/Reports/PfbApiDriftReport.json +++ b/Reports/PfbApiDriftReport.json @@ -762,7 +762,7 @@ { "parameter": "Eradicate", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Bucket\\Remove-PfbBucket.ps1", + "file": "Public/Bucket/Remove-PfbBucket.ps1", "line": 27 } ], @@ -1073,7 +1073,7 @@ { "parameter": "Eradicate", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystemSnapshot\\Remove-PfbFileSystemSnapshot.ps1", + "file": "Public/FileSystemSnapshot/Remove-PfbFileSystemSnapshot.ps1", "line": 24 } ], @@ -1136,7 +1136,7 @@ { "parameter": "Eradicate", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\Remove-PfbFileSystem.ps1", + "file": "Public/FileSystem/Remove-PfbFileSystem.ps1", "line": 38 } ], @@ -1224,7 +1224,7 @@ { "parameter": "Force", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\Remove-PfbFileSystemSession.ps1", + "file": "Public/FileSystem/Remove-PfbFileSystemSession.ps1", "line": 59 } ], @@ -1857,13 +1857,13 @@ { "parameter": "FileSystemName", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Quota\\Remove-PfbQuotaGroup.ps1", + "file": "Public/Quota/Remove-PfbQuotaGroup.ps1", "line": 30 }, { "parameter": "GroupName", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Quota\\Remove-PfbQuotaGroup.ps1", + "file": "Public/Quota/Remove-PfbQuotaGroup.ps1", "line": 31 } ], @@ -1893,13 +1893,13 @@ { "parameter": "FileSystemName", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Quota\\Remove-PfbQuotaUser.ps1", + "file": "Public/Quota/Remove-PfbQuotaUser.ps1", "line": 25 }, { "parameter": "UserName", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Quota\\Remove-PfbQuotaUser.ps1", + "file": "Public/Quota/Remove-PfbQuotaUser.ps1", "line": 26 } ], @@ -1960,7 +1960,7 @@ { "parameter": "Eradicate", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Server\\Remove-PfbServer.ps1", + "file": "Public/Server/Remove-PfbServer.ps1", "line": 35 } ], @@ -2428,7 +2428,7 @@ { "parameter": "Endpoint", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Connection\\Test-PfbConnection.ps1", + "file": "Public/Connection/Test-PfbConnection.ps1", "line": 31 } ], @@ -6026,7 +6026,7 @@ { "parameter": "Enabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Alert\\Update-PfbAlertWatcher.ps1", + "file": "Public/Alert/Update-PfbAlertWatcher.ps1", "line": 32 } ], @@ -6071,7 +6071,7 @@ { "parameter": "Flagged", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Alert\\Update-PfbAlert.ps1", + "file": "Public/Alert/Update-PfbAlert.ps1", "line": 26 } ], @@ -6521,7 +6521,7 @@ { "parameter": "Enabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\Update-PfbAuditFileSystemPolicy.ps1", + "file": "Public/Policy/Update-PfbAuditFileSystemPolicy.ps1", "line": 40 } ], @@ -6560,7 +6560,7 @@ { "parameter": "Enabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\Update-PfbAuditObjectStorePolicy.ps1", + "file": "Public/Policy/Update-PfbAuditObjectStorePolicy.ps1", "line": 40 } ], @@ -6599,13 +6599,13 @@ { "parameter": "Destroyed", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Bucket\\Update-PfbBucket.ps1", + "file": "Public/Bucket/Update-PfbBucket.ps1", "line": 37 }, { "parameter": "Eradicate", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Bucket\\Remove-PfbBucket.ps1", + "file": "Public/Bucket/Remove-PfbBucket.ps1", "line": 27 } ], @@ -6998,7 +6998,7 @@ { "parameter": "Enabled", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\DataEviction\\Update-PfbDataEvictionPolicy.ps1", + "file": "Public/DataEviction/Update-PfbDataEvictionPolicy.ps1", "line": 37 } ], @@ -7039,7 +7039,7 @@ { "parameter": "Name", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\DirectoryService\\Update-PfbDirectoryService.ps1", + "file": "Public/DirectoryService/Update-PfbDirectoryService.ps1", "line": 32 } ], @@ -7377,7 +7377,7 @@ { "parameter": "Eradicate", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystemSnapshot\\Remove-PfbFileSystemSnapshot.ps1", + "file": "Public/FileSystemSnapshot/Remove-PfbFileSystemSnapshot.ps1", "line": 24 } ], @@ -7432,61 +7432,61 @@ { "parameter": "Destroyed", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\Update-PfbFileSystem.ps1", + "file": "Public/FileSystem/Update-PfbFileSystem.ps1", "line": 93 }, { "parameter": "Eradicate", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\Remove-PfbFileSystem.ps1", + "file": "Public/FileSystem/Remove-PfbFileSystem.ps1", "line": 38 }, { "parameter": "HardLimitEnabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\Update-PfbFileSystem.ps1", + "file": "Public/FileSystem/Update-PfbFileSystem.ps1", "line": 69 }, { "parameter": "HttpEnabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\Update-PfbFileSystem.ps1", + "file": "Public/FileSystem/Update-PfbFileSystem.ps1", "line": 90 }, { "parameter": "NfsEnabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\Update-PfbFileSystem.ps1", + "file": "Public/FileSystem/Update-PfbFileSystem.ps1", "line": 72 }, { "parameter": "NfsExportPolicy", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\Update-PfbFileSystem.ps1", + "file": "Public/FileSystem/Update-PfbFileSystem.ps1", "line": 78 }, { "parameter": "NfsRules", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\Update-PfbFileSystem.ps1", + "file": "Public/FileSystem/Update-PfbFileSystem.ps1", "line": 75 }, { "parameter": "SmbClientPolicy", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\Update-PfbFileSystem.ps1", + "file": "Public/FileSystem/Update-PfbFileSystem.ps1", "line": 87 }, { "parameter": "SmbEnabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\Update-PfbFileSystem.ps1", + "file": "Public/FileSystem/Update-PfbFileSystem.ps1", "line": 81 }, { "parameter": "SmbSharePolicy", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\Update-PfbFileSystem.ps1", + "file": "Public/FileSystem/Update-PfbFileSystem.ps1", "line": 84 } ], @@ -8402,7 +8402,7 @@ { "parameter": "Enabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\Update-PfbNetworkAccessPolicy.ps1", + "file": "Public/Policy/Update-PfbNetworkAccessPolicy.ps1", "line": 42 } ], @@ -8719,7 +8719,7 @@ { "parameter": "Enabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\Update-PfbNfsExportPolicy.ps1", + "file": "Public/Policy/Update-PfbNfsExportPolicy.ps1", "line": 42 } ], @@ -9849,7 +9849,7 @@ { "parameter": "Enabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\Update-PfbPolicy.ps1", + "file": "Public/Policy/Update-PfbPolicy.ps1", "line": 28 } ], @@ -10011,13 +10011,13 @@ { "parameter": "FileSystemName", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Quota\\Update-PfbQuotaGroup.ps1", + "file": "Public/Quota/Update-PfbQuotaGroup.ps1", "line": 35 }, { "parameter": "GroupName", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Quota\\Update-PfbQuotaGroup.ps1", + "file": "Public/Quota/Update-PfbQuotaGroup.ps1", "line": 36 } ], @@ -10106,13 +10106,13 @@ { "parameter": "FileSystemName", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Quota\\Update-PfbQuotaUser.ps1", + "file": "Public/Quota/Update-PfbQuotaUser.ps1", "line": 30 }, { "parameter": "UserName", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Quota\\Update-PfbQuotaUser.ps1", + "file": "Public/Quota/Update-PfbQuotaUser.ps1", "line": 31 } ], @@ -10196,13 +10196,13 @@ { "parameter": "Destroyed", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Realm\\Update-PfbRealm.ps1", + "file": "Public/Realm/Update-PfbRealm.ps1", "line": 31 }, { "parameter": "Eradicate", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Realm\\Remove-PfbRealm.ps1", + "file": "Public/Realm/Remove-PfbRealm.ps1", "line": 32 } ], @@ -10274,7 +10274,7 @@ { "parameter": "Enabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\Update-PfbS3ExportPolicy.ps1", + "file": "Public/Policy/Update-PfbS3ExportPolicy.ps1", "line": 42 } ], @@ -10373,7 +10373,7 @@ { "parameter": "DnsName", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Server\\Update-PfbServer.ps1", + "file": "Public/Server/Update-PfbServer.ps1", "line": 34 } ], @@ -10412,7 +10412,7 @@ { "parameter": "Enabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\Update-PfbSmbClientPolicy.ps1", + "file": "Public/Policy/Update-PfbSmbClientPolicy.ps1", "line": 42 } ], @@ -10569,7 +10569,7 @@ { "parameter": "Enabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\Update-PfbSmbSharePolicy.ps1", + "file": "Public/Policy/Update-PfbSmbSharePolicy.ps1", "line": 42 } ], @@ -11986,7 +11986,7 @@ { "parameter": "Destroyed", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Workloads\\Update-PfbWorkload.ps1", + "file": "Public/Workloads/Update-PfbWorkload.ps1", "line": 36 } ], @@ -12174,7 +12174,7 @@ { "parameter": "Name", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\DirectoryService\\New-PfbActiveDirectory.ps1", + "file": "Public/DirectoryService/New-PfbActiveDirectory.ps1", "line": 40 } ], @@ -12512,7 +12512,7 @@ { "parameter": "Enabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\New-PfbAuditFileSystemPolicy.ps1", + "file": "Public/Policy/New-PfbAuditFileSystemPolicy.ps1", "line": 35 } ], @@ -12567,7 +12567,7 @@ { "parameter": "Enabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\New-PfbAuditObjectStorePolicy.ps1", + "file": "Public/Policy/New-PfbAuditObjectStorePolicy.ps1", "line": 35 } ], @@ -13329,7 +13329,7 @@ { "parameter": "Name", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Certificate\\New-PfbCertificateSigningRequest.ps1", + "file": "Public/Certificate/New-PfbCertificateSigningRequest.ps1", "line": 29 } ], @@ -13365,7 +13365,7 @@ { "parameter": "Disabled", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\DataEviction\\New-PfbDataEvictionPolicy.ps1", + "file": "Public/DataEviction/New-PfbDataEvictionPolicy.ps1", "line": 31 } ], @@ -13451,7 +13451,7 @@ { "parameter": "Member", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\DirectoryService\\New-PfbLocalGroupMember.ps1", + "file": "Public/DirectoryService/New-PfbLocalGroupMember.ps1", "line": 35 } ], @@ -13569,7 +13569,7 @@ { "parameter": "Name", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Network\\New-PfbDns.ps1", + "file": "Public/Network/New-PfbDns.ps1", "line": 29 } ], @@ -13774,7 +13774,7 @@ { "parameter": "SourceName", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystemSnapshot\\New-PfbFileSystemSnapshot.ps1", + "file": "Public/FileSystemSnapshot/New-PfbFileSystemSnapshot.ps1", "line": 36 } ], @@ -13818,91 +13818,91 @@ { "parameter": "FastRemoveDirectoryEnabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\New-PfbFileSystem.ps1", + "file": "Public/FileSystem/New-PfbFileSystem.ps1", "line": 139 }, { "parameter": "HardLimit", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\New-PfbFileSystem.ps1", + "file": "Public/FileSystem/New-PfbFileSystem.ps1", "line": 93 }, { "parameter": "Http", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\New-PfbFileSystem.ps1", + "file": "Public/FileSystem/New-PfbFileSystem.ps1", "line": 126 }, { "parameter": "MultiProtocolAccessControlStyle", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\New-PfbFileSystem.ps1", + "file": "Public/FileSystem/New-PfbFileSystem.ps1", "line": 129 }, { "parameter": "Nfs", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\New-PfbFileSystem.ps1", + "file": "Public/FileSystem/New-PfbFileSystem.ps1", "line": 102 }, { "parameter": "NfsExportPolicy", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\New-PfbFileSystem.ps1", + "file": "Public/FileSystem/New-PfbFileSystem.ps1", "line": 114 }, { "parameter": "NfsRules", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\New-PfbFileSystem.ps1", + "file": "Public/FileSystem/New-PfbFileSystem.ps1", "line": 111 }, { "parameter": "NfsV3", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\New-PfbFileSystem.ps1", + "file": "Public/FileSystem/New-PfbFileSystem.ps1", "line": 105 }, { "parameter": "NfsV41", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\New-PfbFileSystem.ps1", + "file": "Public/FileSystem/New-PfbFileSystem.ps1", "line": 108 }, { "parameter": "SafeguardAcls", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\New-PfbFileSystem.ps1", + "file": "Public/FileSystem/New-PfbFileSystem.ps1", "line": 133 }, { "parameter": "Smb", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\New-PfbFileSystem.ps1", + "file": "Public/FileSystem/New-PfbFileSystem.ps1", "line": 117 }, { "parameter": "SmbClientPolicy", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\New-PfbFileSystem.ps1", + "file": "Public/FileSystem/New-PfbFileSystem.ps1", "line": 123 }, { "parameter": "SmbSharePolicy", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\New-PfbFileSystem.ps1", + "file": "Public/FileSystem/New-PfbFileSystem.ps1", "line": 120 }, { "parameter": "SnapshotDirectoryEnabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\New-PfbFileSystem.ps1", + "file": "Public/FileSystem/New-PfbFileSystem.ps1", "line": 136 }, { "parameter": "Writable", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\FileSystem\\New-PfbFileSystem.ps1", + "file": "Public/FileSystem/New-PfbFileSystem.ps1", "line": 150 } ], @@ -13997,7 +13997,7 @@ { "parameter": "Name", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Replication\\New-PfbFleet.ps1", + "file": "Public/Replication/New-PfbFleet.ps1", "line": 30 } ], @@ -14324,7 +14324,7 @@ { "parameter": "Name", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Misc\\New-PfbLag.ps1", + "file": "Public/Misc/New-PfbLag.ps1", "line": 29 } ], @@ -14814,7 +14814,7 @@ { "parameter": "AttachedServers", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Network\\New-PfbNetworkInterface.ps1", + "file": "Public/Network/New-PfbNetworkInterface.ps1", "line": 55 } ], @@ -14870,7 +14870,7 @@ { "parameter": "Enabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\New-PfbNfsExportPolicy.ps1", + "file": "Public/Policy/New-PfbNfsExportPolicy.ps1", "line": 36 } ], @@ -15135,7 +15135,7 @@ { "parameter": "Name", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Node\\New-PfbNodeGroup.ps1", + "file": "Public/Node/New-PfbNodeGroup.ps1", "line": 30 } ], @@ -15843,7 +15843,7 @@ { "parameter": "Enabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\New-PfbPolicy.ps1", + "file": "Public/Policy/New-PfbPolicy.ps1", "line": 23 } ], @@ -16365,19 +16365,19 @@ { "parameter": "FileSystemName", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Quota\\New-PfbQuotaUser.ps1", + "file": "Public/Quota/New-PfbQuotaUser.ps1", "line": 42 }, { "parameter": "UserId", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Quota\\New-PfbQuotaUser.ps1", + "file": "Public/Quota/New-PfbQuotaUser.ps1", "line": 44 }, { "parameter": "UserName", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Quota\\New-PfbQuotaUser.ps1", + "file": "Public/Quota/New-PfbQuotaUser.ps1", "line": 43 } ], @@ -16427,7 +16427,7 @@ { "parameter": "Enabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\New-PfbS3ExportPolicy.ps1", + "file": "Public/Policy/New-PfbS3ExportPolicy.ps1", "line": 36 } ], @@ -16528,13 +16528,13 @@ { "parameter": "CreateDirectoryService", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Server\\New-PfbServer.ps1", + "file": "Public/Server/New-PfbServer.ps1", "line": 40 }, { "parameter": "DnsName", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Server\\New-PfbServer.ps1", + "file": "Public/Server/New-PfbServer.ps1", "line": 34 } ], @@ -16573,7 +16573,7 @@ { "parameter": "Enabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\New-PfbSmbClientPolicy.ps1", + "file": "Public/Policy/New-PfbSmbClientPolicy.ps1", "line": 36 } ], @@ -16710,7 +16710,7 @@ { "parameter": "Enabled", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\New-PfbSmbSharePolicy.ps1", + "file": "Public/Policy/New-PfbSmbSharePolicy.ps1", "line": 36 } ], @@ -16842,7 +16842,7 @@ { "parameter": "Name", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Monitoring\\New-PfbSnmpManager.ps1", + "file": "Public/Monitoring/New-PfbSnmpManager.ps1", "line": 33 } ], @@ -16899,7 +16899,7 @@ { "parameter": "Name", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\New-PfbSshCaPolicy.ps1", + "file": "Public/Policy/New-PfbSshCaPolicy.ps1", "line": 30 } ], @@ -17181,7 +17181,7 @@ { "parameter": "Name", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\New-PfbStorageClassTieringPolicy.ps1", + "file": "Public/Policy/New-PfbStorageClassTieringPolicy.ps1", "line": 30 } ], @@ -17253,7 +17253,7 @@ { "parameter": "Name", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Monitoring\\New-PfbSyslogServer.ps1", + "file": "Public/Monitoring/New-PfbSyslogServer.ps1", "line": 32 } ], @@ -17282,7 +17282,7 @@ { "parameter": "Name", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Replication\\New-PfbTarget.ps1", + "file": "Public/Replication/New-PfbTarget.ps1", "line": 31 } ], @@ -17325,7 +17325,7 @@ { "parameter": "Name", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\New-PfbTlsPolicy.ps1", + "file": "Public/Policy/New-PfbTlsPolicy.ps1", "line": 29 } ], @@ -17387,7 +17387,7 @@ { "parameter": "Inputs", "surface": "TypedUnresolved", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Workloads\\New-PfbWorkloadPlacementRecommendation.ps1", + "file": "Public/Workloads/New-PfbWorkloadPlacementRecommendation.ps1", "line": 29 } ], @@ -17428,7 +17428,7 @@ { "parameter": "Name", "surface": "AttributesOnly", - "file": "C:\\Users\\Justin Emerson\\Documents\\GitProjects\\fb-powershell\\fb-powershell\\Public\\Policy\\New-PfbWormPolicy.ps1", + "file": "Public/Policy/New-PfbWormPolicy.ps1", "line": 30 } ], diff --git a/Reports/PfbApiDriftReport.md b/Reports/PfbApiDriftReport.md index e40f38b..a5643f9 100644 --- a/Reports/PfbApiDriftReport.md +++ b/Reports/PfbApiDriftReport.md @@ -511,94 +511,94 @@ Per the decision-6 procedure above: open each parameter at its `file:line` and f | Endpoint | Parameter | Surface | File:Line | Caveat | |---|---|---|---|---| -| `DELETE /buckets` | `-Eradicate` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Bucket\Remove-PfbBucket.ps1:27` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | -| `DELETE /file-system-snapshots` | `-Eradicate` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystemSnapshot\Remove-PfbFileSystemSnapshot.ps1:24` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | -| `DELETE /file-systems` | `-Eradicate` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\Remove-PfbFileSystem.ps1:38` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | -| `DELETE /file-systems/sessions` | `-Force` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\Remove-PfbFileSystemSession.ps1:59` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | -| `DELETE /quotas/groups` | `-FileSystemName` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Quota\Remove-PfbQuotaGroup.ps1:30` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | -| `DELETE /quotas/groups` | `-GroupName` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Quota\Remove-PfbQuotaGroup.ps1:31` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | -| `DELETE /quotas/users` | `-FileSystemName` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Quota\Remove-PfbQuotaUser.ps1:25` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | -| `DELETE /quotas/users` | `-UserName` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Quota\Remove-PfbQuotaUser.ps1:26` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | -| `DELETE /servers` | `-Eradicate` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Server\Remove-PfbServer.ps1:35` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | -| `GET /arrays` | `-Endpoint` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Connection\Test-PfbConnection.ps1:31` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | -| `PATCH /alert-watchers` | `-Enabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Alert\Update-PfbAlertWatcher.ps1:32` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `PATCH /alerts` | `-Flagged` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Alert\Update-PfbAlert.ps1:26` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `PATCH /audit-file-systems-policies` | `-Enabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\Update-PfbAuditFileSystemPolicy.ps1:40` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `PATCH /audit-object-store-policies` | `-Enabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\Update-PfbAuditObjectStorePolicy.ps1:40` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `PATCH /buckets` | `-Destroyed` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Bucket\Update-PfbBucket.ps1:37` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | -| `PATCH /buckets` | `-Eradicate` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Bucket\Remove-PfbBucket.ps1:27` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | -| `PATCH /data-eviction-policies` | `-Enabled` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\DataEviction\Update-PfbDataEvictionPolicy.ps1:37` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | -| `PATCH /directory-services` | `-Name` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\DirectoryService\Update-PfbDirectoryService.ps1:32` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `PATCH /file-system-snapshots` | `-Eradicate` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystemSnapshot\Remove-PfbFileSystemSnapshot.ps1:24` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | -| `PATCH /file-systems` | `-Destroyed` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\Update-PfbFileSystem.ps1:93` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | -| `PATCH /file-systems` | `-Eradicate` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\Remove-PfbFileSystem.ps1:38` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | -| `PATCH /file-systems` | `-HardLimitEnabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\Update-PfbFileSystem.ps1:69` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | -| `PATCH /file-systems` | `-HttpEnabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\Update-PfbFileSystem.ps1:90` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | -| `PATCH /file-systems` | `-NfsEnabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\Update-PfbFileSystem.ps1:72` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | -| `PATCH /file-systems` | `-NfsExportPolicy` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\Update-PfbFileSystem.ps1:78` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | -| `PATCH /file-systems` | `-NfsRules` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\Update-PfbFileSystem.ps1:75` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | -| `PATCH /file-systems` | `-SmbClientPolicy` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\Update-PfbFileSystem.ps1:87` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | -| `PATCH /file-systems` | `-SmbEnabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\Update-PfbFileSystem.ps1:81` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | -| `PATCH /file-systems` | `-SmbSharePolicy` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\Update-PfbFileSystem.ps1:84` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | -| `PATCH /network-access-policies` | `-Enabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\Update-PfbNetworkAccessPolicy.ps1:42` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `PATCH /nfs-export-policies` | `-Enabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\Update-PfbNfsExportPolicy.ps1:42` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `PATCH /policies` | `-Enabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\Update-PfbPolicy.ps1:28` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `PATCH /quotas/groups` | `-FileSystemName` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Quota\Update-PfbQuotaGroup.ps1:35` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `PATCH /quotas/groups` | `-GroupName` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Quota\Update-PfbQuotaGroup.ps1:36` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `PATCH /quotas/users` | `-FileSystemName` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Quota\Update-PfbQuotaUser.ps1:30` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `PATCH /quotas/users` | `-UserName` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Quota\Update-PfbQuotaUser.ps1:31` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `PATCH /realms` | `-Destroyed` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Realm\Update-PfbRealm.ps1:31` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | -| `PATCH /realms` | `-Eradicate` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Realm\Remove-PfbRealm.ps1:32` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | -| `PATCH /s3-export-policies` | `-Enabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\Update-PfbS3ExportPolicy.ps1:42` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `PATCH /servers` | `-DnsName` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Server\Update-PfbServer.ps1:34` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `PATCH /smb-client-policies` | `-Enabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\Update-PfbSmbClientPolicy.ps1:42` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `PATCH /smb-share-policies` | `-Enabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\Update-PfbSmbSharePolicy.ps1:42` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `PATCH /workloads` | `-Destroyed` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Workloads\Update-PfbWorkload.ps1:36` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | -| `POST /active-directory` | `-Name` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\DirectoryService\New-PfbActiveDirectory.ps1:40` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /audit-file-systems-policies` | `-Enabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\New-PfbAuditFileSystemPolicy.ps1:35` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /audit-object-store-policies` | `-Enabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\New-PfbAuditObjectStorePolicy.ps1:35` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /certificates/certificate-signing-requests` | `-Name` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Certificate\New-PfbCertificateSigningRequest.ps1:29` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /data-eviction-policies` | `-Disabled` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\DataEviction\New-PfbDataEvictionPolicy.ps1:31` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | -| `POST /directory-services/local/groups/members` | `-Member` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\DirectoryService\New-PfbLocalGroupMember.ps1:35` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | -| `POST /dns` | `-Name` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Network\New-PfbDns.ps1:29` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /file-system-snapshots` | `-SourceName` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystemSnapshot\New-PfbFileSystemSnapshot.ps1:36` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | -| `POST /file-systems` | `-FastRemoveDirectoryEnabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\New-PfbFileSystem.ps1:139` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /file-systems` | `-HardLimit` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\New-PfbFileSystem.ps1:93` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /file-systems` | `-Http` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\New-PfbFileSystem.ps1:126` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /file-systems` | `-MultiProtocolAccessControlStyle` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\New-PfbFileSystem.ps1:129` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /file-systems` | `-Nfs` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\New-PfbFileSystem.ps1:102` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /file-systems` | `-NfsExportPolicy` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\New-PfbFileSystem.ps1:114` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /file-systems` | `-NfsRules` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\New-PfbFileSystem.ps1:111` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /file-systems` | `-NfsV3` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\New-PfbFileSystem.ps1:105` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /file-systems` | `-NfsV41` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\New-PfbFileSystem.ps1:108` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /file-systems` | `-SafeguardAcls` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\New-PfbFileSystem.ps1:133` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /file-systems` | `-Smb` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\New-PfbFileSystem.ps1:117` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /file-systems` | `-SmbClientPolicy` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\New-PfbFileSystem.ps1:123` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /file-systems` | `-SmbSharePolicy` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\New-PfbFileSystem.ps1:120` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /file-systems` | `-SnapshotDirectoryEnabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\New-PfbFileSystem.ps1:136` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /file-systems` | `-Writable` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\FileSystem\New-PfbFileSystem.ps1:150` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /fleets` | `-Name` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Replication\New-PfbFleet.ps1:30` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /link-aggregation-groups` | `-Name` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Misc\New-PfbLag.ps1:29` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /network-interfaces` | `-AttachedServers` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Network\New-PfbNetworkInterface.ps1:55` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /nfs-export-policies` | `-Enabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\New-PfbNfsExportPolicy.ps1:36` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /node-groups` | `-Name` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Node\New-PfbNodeGroup.ps1:30` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /policies` | `-Enabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\New-PfbPolicy.ps1:23` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /quotas/users` | `-FileSystemName` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Quota\New-PfbQuotaUser.ps1:42` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /quotas/users` | `-UserId` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Quota\New-PfbQuotaUser.ps1:44` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /quotas/users` | `-UserName` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Quota\New-PfbQuotaUser.ps1:43` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /s3-export-policies` | `-Enabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\New-PfbS3ExportPolicy.ps1:36` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /servers` | `-CreateDirectoryService` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Server\New-PfbServer.ps1:40` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /servers` | `-DnsName` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Server\New-PfbServer.ps1:34` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /smb-client-policies` | `-Enabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\New-PfbSmbClientPolicy.ps1:36` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /smb-share-policies` | `-Enabled` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\New-PfbSmbSharePolicy.ps1:36` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /snmp-managers` | `-Name` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Monitoring\New-PfbSnmpManager.ps1:33` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /ssh-certificate-authority-policies` | `-Name` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\New-PfbSshCaPolicy.ps1:30` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /storage-class-tiering-policies` | `-Name` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\New-PfbStorageClassTieringPolicy.ps1:30` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /syslog-servers` | `-Name` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Monitoring\New-PfbSyslogServer.ps1:32` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /targets` | `-Name` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Replication\New-PfbTarget.ps1:31` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /tls-policies` | `-Name` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\New-PfbTlsPolicy.ps1:29` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | -| `POST /workloads/placement-recommendations` | `-Inputs` | TypedUnresolved | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Workloads\New-PfbWorkloadPlacementRecommendation.ps1:29` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | -| `POST /worm-data-policies` | `-Name` | AttributesOnly | `C:\Users\Justin Emerson\Documents\GitProjects\fb-powershell\fb-powershell\Public\Policy\New-PfbWormPolicy.ps1:30` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `DELETE /buckets` | `-Eradicate` | TypedUnresolved | `Public/Bucket/Remove-PfbBucket.ps1:27` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | +| `DELETE /file-system-snapshots` | `-Eradicate` | TypedUnresolved | `Public/FileSystemSnapshot/Remove-PfbFileSystemSnapshot.ps1:24` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | +| `DELETE /file-systems` | `-Eradicate` | TypedUnresolved | `Public/FileSystem/Remove-PfbFileSystem.ps1:38` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | +| `DELETE /file-systems/sessions` | `-Force` | TypedUnresolved | `Public/FileSystem/Remove-PfbFileSystemSession.ps1:59` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | +| `DELETE /quotas/groups` | `-FileSystemName` | TypedUnresolved | `Public/Quota/Remove-PfbQuotaGroup.ps1:30` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | +| `DELETE /quotas/groups` | `-GroupName` | TypedUnresolved | `Public/Quota/Remove-PfbQuotaGroup.ps1:31` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | +| `DELETE /quotas/users` | `-FileSystemName` | TypedUnresolved | `Public/Quota/Remove-PfbQuotaUser.ps1:25` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | +| `DELETE /quotas/users` | `-UserName` | TypedUnresolved | `Public/Quota/Remove-PfbQuotaUser.ps1:26` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | +| `DELETE /servers` | `-Eradicate` | TypedUnresolved | `Public/Server/Remove-PfbServer.ps1:35` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | +| `GET /arrays` | `-Endpoint` | TypedUnresolved | `Public/Connection/Test-PfbConnection.ps1:31` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | +| `PATCH /alert-watchers` | `-Enabled` | AttributesOnly | `Public/Alert/Update-PfbAlertWatcher.ps1:32` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `PATCH /alerts` | `-Flagged` | AttributesOnly | `Public/Alert/Update-PfbAlert.ps1:26` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `PATCH /audit-file-systems-policies` | `-Enabled` | AttributesOnly | `Public/Policy/Update-PfbAuditFileSystemPolicy.ps1:40` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `PATCH /audit-object-store-policies` | `-Enabled` | AttributesOnly | `Public/Policy/Update-PfbAuditObjectStorePolicy.ps1:40` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `PATCH /buckets` | `-Destroyed` | AttributesOnly | `Public/Bucket/Update-PfbBucket.ps1:37` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | +| `PATCH /buckets` | `-Eradicate` | TypedUnresolved | `Public/Bucket/Remove-PfbBucket.ps1:27` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | +| `PATCH /data-eviction-policies` | `-Enabled` | TypedUnresolved | `Public/DataEviction/Update-PfbDataEvictionPolicy.ps1:37` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | +| `PATCH /directory-services` | `-Name` | AttributesOnly | `Public/DirectoryService/Update-PfbDirectoryService.ps1:32` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `PATCH /file-system-snapshots` | `-Eradicate` | TypedUnresolved | `Public/FileSystemSnapshot/Remove-PfbFileSystemSnapshot.ps1:24` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | +| `PATCH /file-systems` | `-Destroyed` | AttributesOnly | `Public/FileSystem/Update-PfbFileSystem.ps1:93` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | +| `PATCH /file-systems` | `-Eradicate` | TypedUnresolved | `Public/FileSystem/Remove-PfbFileSystem.ps1:38` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | +| `PATCH /file-systems` | `-HardLimitEnabled` | AttributesOnly | `Public/FileSystem/Update-PfbFileSystem.ps1:69` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | +| `PATCH /file-systems` | `-HttpEnabled` | AttributesOnly | `Public/FileSystem/Update-PfbFileSystem.ps1:90` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | +| `PATCH /file-systems` | `-NfsEnabled` | AttributesOnly | `Public/FileSystem/Update-PfbFileSystem.ps1:72` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | +| `PATCH /file-systems` | `-NfsExportPolicy` | AttributesOnly | `Public/FileSystem/Update-PfbFileSystem.ps1:78` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | +| `PATCH /file-systems` | `-NfsRules` | AttributesOnly | `Public/FileSystem/Update-PfbFileSystem.ps1:75` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | +| `PATCH /file-systems` | `-SmbClientPolicy` | AttributesOnly | `Public/FileSystem/Update-PfbFileSystem.ps1:87` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | +| `PATCH /file-systems` | `-SmbEnabled` | AttributesOnly | `Public/FileSystem/Update-PfbFileSystem.ps1:81` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | +| `PATCH /file-systems` | `-SmbSharePolicy` | AttributesOnly | `Public/FileSystem/Update-PfbFileSystem.ps1:84` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | +| `PATCH /network-access-policies` | `-Enabled` | AttributesOnly | `Public/Policy/Update-PfbNetworkAccessPolicy.ps1:42` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `PATCH /nfs-export-policies` | `-Enabled` | AttributesOnly | `Public/Policy/Update-PfbNfsExportPolicy.ps1:42` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `PATCH /policies` | `-Enabled` | AttributesOnly | `Public/Policy/Update-PfbPolicy.ps1:28` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `PATCH /quotas/groups` | `-FileSystemName` | AttributesOnly | `Public/Quota/Update-PfbQuotaGroup.ps1:35` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `PATCH /quotas/groups` | `-GroupName` | AttributesOnly | `Public/Quota/Update-PfbQuotaGroup.ps1:36` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `PATCH /quotas/users` | `-FileSystemName` | AttributesOnly | `Public/Quota/Update-PfbQuotaUser.ps1:30` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `PATCH /quotas/users` | `-UserName` | AttributesOnly | `Public/Quota/Update-PfbQuotaUser.ps1:31` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `PATCH /realms` | `-Destroyed` | AttributesOnly | `Public/Realm/Update-PfbRealm.ps1:31` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | +| `PATCH /realms` | `-Eradicate` | TypedUnresolved | `Public/Realm/Remove-PfbRealm.ps1:32` | body reachable via -Attributes for some parameters and untraceable for others; lists reflect typed-parameter coverage only, not full wire reachability | +| `PATCH /s3-export-policies` | `-Enabled` | AttributesOnly | `Public/Policy/Update-PfbS3ExportPolicy.ps1:42` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `PATCH /servers` | `-DnsName` | AttributesOnly | `Public/Server/Update-PfbServer.ps1:34` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `PATCH /smb-client-policies` | `-Enabled` | AttributesOnly | `Public/Policy/Update-PfbSmbClientPolicy.ps1:42` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `PATCH /smb-share-policies` | `-Enabled` | AttributesOnly | `Public/Policy/Update-PfbSmbSharePolicy.ps1:42` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `PATCH /workloads` | `-Destroyed` | TypedUnresolved | `Public/Workloads/Update-PfbWorkload.ps1:36` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | +| `POST /active-directory` | `-Name` | AttributesOnly | `Public/DirectoryService/New-PfbActiveDirectory.ps1:40` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /audit-file-systems-policies` | `-Enabled` | AttributesOnly | `Public/Policy/New-PfbAuditFileSystemPolicy.ps1:35` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /audit-object-store-policies` | `-Enabled` | AttributesOnly | `Public/Policy/New-PfbAuditObjectStorePolicy.ps1:35` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /certificates/certificate-signing-requests` | `-Name` | AttributesOnly | `Public/Certificate/New-PfbCertificateSigningRequest.ps1:29` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /data-eviction-policies` | `-Disabled` | TypedUnresolved | `Public/DataEviction/New-PfbDataEvictionPolicy.ps1:31` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | +| `POST /directory-services/local/groups/members` | `-Member` | TypedUnresolved | `Public/DirectoryService/New-PfbLocalGroupMember.ps1:35` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | +| `POST /dns` | `-Name` | AttributesOnly | `Public/Network/New-PfbDns.ps1:29` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /file-system-snapshots` | `-SourceName` | TypedUnresolved | `Public/FileSystemSnapshot/New-PfbFileSystemSnapshot.ps1:36` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | +| `POST /file-systems` | `-FastRemoveDirectoryEnabled` | AttributesOnly | `Public/FileSystem/New-PfbFileSystem.ps1:139` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /file-systems` | `-HardLimit` | AttributesOnly | `Public/FileSystem/New-PfbFileSystem.ps1:93` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /file-systems` | `-Http` | AttributesOnly | `Public/FileSystem/New-PfbFileSystem.ps1:126` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /file-systems` | `-MultiProtocolAccessControlStyle` | AttributesOnly | `Public/FileSystem/New-PfbFileSystem.ps1:129` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /file-systems` | `-Nfs` | AttributesOnly | `Public/FileSystem/New-PfbFileSystem.ps1:102` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /file-systems` | `-NfsExportPolicy` | AttributesOnly | `Public/FileSystem/New-PfbFileSystem.ps1:114` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /file-systems` | `-NfsRules` | AttributesOnly | `Public/FileSystem/New-PfbFileSystem.ps1:111` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /file-systems` | `-NfsV3` | AttributesOnly | `Public/FileSystem/New-PfbFileSystem.ps1:105` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /file-systems` | `-NfsV41` | AttributesOnly | `Public/FileSystem/New-PfbFileSystem.ps1:108` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /file-systems` | `-SafeguardAcls` | AttributesOnly | `Public/FileSystem/New-PfbFileSystem.ps1:133` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /file-systems` | `-Smb` | AttributesOnly | `Public/FileSystem/New-PfbFileSystem.ps1:117` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /file-systems` | `-SmbClientPolicy` | AttributesOnly | `Public/FileSystem/New-PfbFileSystem.ps1:123` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /file-systems` | `-SmbSharePolicy` | AttributesOnly | `Public/FileSystem/New-PfbFileSystem.ps1:120` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /file-systems` | `-SnapshotDirectoryEnabled` | AttributesOnly | `Public/FileSystem/New-PfbFileSystem.ps1:136` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /file-systems` | `-Writable` | AttributesOnly | `Public/FileSystem/New-PfbFileSystem.ps1:150` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /fleets` | `-Name` | AttributesOnly | `Public/Replication/New-PfbFleet.ps1:30` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /link-aggregation-groups` | `-Name` | AttributesOnly | `Public/Misc/New-PfbLag.ps1:29` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /network-interfaces` | `-AttachedServers` | AttributesOnly | `Public/Network/New-PfbNetworkInterface.ps1:55` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /nfs-export-policies` | `-Enabled` | AttributesOnly | `Public/Policy/New-PfbNfsExportPolicy.ps1:36` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /node-groups` | `-Name` | AttributesOnly | `Public/Node/New-PfbNodeGroup.ps1:30` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /policies` | `-Enabled` | AttributesOnly | `Public/Policy/New-PfbPolicy.ps1:23` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /quotas/users` | `-FileSystemName` | AttributesOnly | `Public/Quota/New-PfbQuotaUser.ps1:42` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /quotas/users` | `-UserId` | AttributesOnly | `Public/Quota/New-PfbQuotaUser.ps1:44` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /quotas/users` | `-UserName` | AttributesOnly | `Public/Quota/New-PfbQuotaUser.ps1:43` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /s3-export-policies` | `-Enabled` | AttributesOnly | `Public/Policy/New-PfbS3ExportPolicy.ps1:36` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /servers` | `-CreateDirectoryService` | AttributesOnly | `Public/Server/New-PfbServer.ps1:40` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /servers` | `-DnsName` | AttributesOnly | `Public/Server/New-PfbServer.ps1:34` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /smb-client-policies` | `-Enabled` | AttributesOnly | `Public/Policy/New-PfbSmbClientPolicy.ps1:36` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /smb-share-policies` | `-Enabled` | AttributesOnly | `Public/Policy/New-PfbSmbSharePolicy.ps1:36` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /snmp-managers` | `-Name` | AttributesOnly | `Public/Monitoring/New-PfbSnmpManager.ps1:33` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /ssh-certificate-authority-policies` | `-Name` | AttributesOnly | `Public/Policy/New-PfbSshCaPolicy.ps1:30` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /storage-class-tiering-policies` | `-Name` | AttributesOnly | `Public/Policy/New-PfbStorageClassTieringPolicy.ps1:30` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /syslog-servers` | `-Name` | AttributesOnly | `Public/Monitoring/New-PfbSyslogServer.ps1:32` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /targets` | `-Name` | AttributesOnly | `Public/Replication/New-PfbTarget.ps1:31` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /tls-policies` | `-Name` | AttributesOnly | `Public/Policy/New-PfbTlsPolicy.ps1:29` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | +| `POST /workloads/placement-recommendations` | `-Inputs` | TypedUnresolved | `Public/Workloads/New-PfbWorkloadPlacementRecommendation.ps1:29` | one or more parameters could not be traced to a wire name and have no -Attributes escape hatch; lists reflect typed-parameter coverage only, not full wire reachability | +| `POST /worm-data-policies` | `-Name` | AttributesOnly | `Public/Policy/New-PfbWormPolicy.ps1:30` | body reachable only via -Attributes; lists reflect typed-parameter coverage, not wire reachability | ## Read-only fields (not addressable) diff --git a/Tests/Build-PfbApiDriftReport.Tests.ps1 b/Tests/Build-PfbApiDriftReport.Tests.ps1 index 997b854..ef57296 100644 --- a/Tests/Build-PfbApiDriftReport.Tests.ps1 +++ b/Tests/Build-PfbApiDriftReport.Tests.ps1 @@ -409,6 +409,55 @@ Describe 'Build-PfbApiDriftReport (real generated artifacts, skips gracefully if } } + Context 'REGRESSION: every emitted path is repo-relative -- these artifacts are COMMITTED' { + # An absolute path here bakes the generating machine's directory layout into the + # repository. Two concrete harms, both observed in the wild before this guard existed: + # 1. It published a developer's home-directory path (`C:\Users\\...`) to the + # repo -- 88 occurrences in each of PfbApiDriftReport.json and .md on main. + # 2. It made the committed file depend on WHERE it was generated. Regenerating from a + # git worktree instead of the main checkout rewrote all 88 lines, producing 174 of + # 279 diff lines of pure churn that buried the 3 real changes under review. + # `target.file` was always relative; `confidence.unresolvedParameters[].file` was not. + + It 'emits no absolute path in any unresolvedParameters entry' { + if (-not $hasRealArtifacts) { Set-ItResult -Skipped -Because 'real artifacts not present locally'; return } + $offenders = foreach ($g in $realManifest.parameterGaps) { + foreach ($u in @($g.confidence.unresolvedParameters)) { + if ($u.file -and ($u.file -match '^[A-Za-z]:[\\/]' -or $u.file -match '^[\\/]{1,2}')) { + "$($g.endpoint) -$($u.parameter): $($u.file)" + } + } + } + @($offenders) | Should -BeNullOrEmpty -Because 'unresolvedParameters[].file must be repo-relative, like target.file' + } + + It 'emits no absolute path in any enriched body-property target entry' { + if (-not $hasRealArtifacts) { Set-ItResult -Skipped -Because 'real artifacts not present locally'; return } + # NOTE: `target` hangs off each ENRICHED missingBodyProperties[] entry, not off the + # gap itself. An earlier draft of this test read $g.target.file -- always $null, so + # it passed vacuously and survived the mutation that broke its two siblings. Assert + # a non-zero population so it can never silently go hollow again. + $targets = foreach ($g in $realManifest.parameterGaps) { + foreach ($p in @($g.missingBodyProperties)) { + if ($p -isnot [string] -and $p.target -and $p.target.file) { + [pscustomobject]@{ Endpoint = $g.endpoint; Field = $p.name; File = $p.target.file } + } + } + } + @($targets).Count | Should -BeGreaterThan 0 -Because 'a vacuous scan would pass this test without checking anything' + $offenders = @($targets | Where-Object { $_.File -match '^[A-Za-z]:[\\/]' -or $_.File -match '^[\\/]{1,2}' }) + $offenders | Should -BeNullOrEmpty + } + + It 'leaks no absolute path into the rendered markdown report' { + if (-not $hasRealArtifacts) { Set-ItResult -Skipped -Because 'real artifacts not present locally'; return } + $md = Get-Content $realReport -Raw + [regex]::Matches($md, '[A-Za-z]:\\{1,2}Users').Count | Should -Be 0 + [regex]::Matches($md, '/home/runner').Count | Should -Be 0 + } + } + + It 'produces a manifest against the real Public/Private tree and Reports/ + Data/ inputs' { if (-not $hasRealArtifacts) { Set-ItResult -Skipped -Because 'Data/PfbCapabilityMap.json, Reports/PfbFieldCmdletMap.json, or tools/specs/ not present locally'; return } Test-Path $realOutput | Should -BeTrue diff --git a/tools/Build-PfbApiDriftReport.ps1 b/tools/Build-PfbApiDriftReport.ps1 index ce0c5c5..6dd0e86 100644 --- a/tools/Build-PfbApiDriftReport.ps1 +++ b/tools/Build-PfbApiDriftReport.ps1 @@ -214,6 +214,30 @@ function Get-PfbCmdletFunctionAst { return $null } +function ConvertTo-PfbRepoRelativePath { + <# + .SYNOPSIS + Rewrites an absolute cmdlet path to a forward-slashed path relative to $repoRoot. + .DESCRIPTION + Every path this report emits MUST be repo-relative. These artifacts are committed, so an + absolute path bakes the generating machine's directory layout into the repository: it + leaks a local filesystem structure, and it makes the committed file depend on WHERE it was + generated -- regenerating from a git worktree instead of the main checkout rewrites every + such line, producing hundreds of lines of diff churn that bury the real changes. + + Falls back to the forward-slashed absolute path when the file genuinely is not under + $repoRoot (a test pointing -PublicDirectory at a synthetic fixture tree), rather than + throwing a Substring range error. + #> + param([string]$Path) + + if (-not $Path) { return $Path } + if ($Path.StartsWith($repoRoot, [System.StringComparison]::OrdinalIgnoreCase)) { + return ($Path.Substring($repoRoot.Length + 1)) -replace '\\', '/' + } + return $Path -replace '\\', '/' +} + function Get-PfbGapTarget { <# .SYNOPSIS @@ -243,17 +267,7 @@ function Get-PfbGapTarget { return [ordered]@{ file = $null; paramBlockLine = $null; payloadVariable = $null; assignmentStyle = $null; hasAttributes = $null } } - # Relative-to-$repoRoot when the cmdlet file is actually under it (the real Public/ - # tree, and this task's own repo-relative-path convention for `target.file`) -- - # otherwise (e.g. a test's -PublicDirectory pointed at a synthetic fixture tree - # entirely outside $repoRoot) falls back to the file's own absolute path rather than - # throwing a Substring range error. - $relativeFile = if ($file.StartsWith($repoRoot, [System.StringComparison]::OrdinalIgnoreCase)) { - ($file.Substring($repoRoot.Length + 1)) -replace '\\', '/' - } - else { - $file -replace '\\', '/' - } + $relativeFile = ConvertTo-PfbRepoRelativePath -Path $file $funcAst = Get-PfbCmdletFunctionAst -Cmdlet $primaryCmdlet if (-not $funcAst) { return [ordered]@{ file = $relativeFile; paramBlockLine = $null; payloadVariable = $null; assignmentStyle = $null; hasAttributes = $null } @@ -387,7 +401,10 @@ $parameterGaps = @($parameterGapsRaw | ForEach-Object { confidence = [ordered]@{ level = $gapRaw.Confidence.Level unresolvedParameters = @($gapRaw.Confidence.UnresolvedParameters | ForEach-Object { - [ordered]@{ parameter = $_.Parameter; surface = $_.Surface; file = $_.File; line = $_.Line } + # Repo-relative, same as target.file: these artifacts are committed, so an + # absolute path would leak the generating machine's layout and churn the + # diff whenever the report is regenerated from a different directory. + [ordered]@{ parameter = $_.Parameter; surface = $_.Surface; file = (ConvertTo-PfbRepoRelativePath -Path $_.File); line = $_.Line } }) escapeHatchOnly = @($gapRaw.Confidence.EscapeHatchOnly) caveat = $gapRaw.Confidence.Caveat