You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

2.7 KiB

status: current last-verified: 2026-10-10 owner: software-engineer source: Handoff 5 (the coverage unknowns): probes, red and green runs, and the independent review

Debugging insights

Recurring defect classes and how to find them. Evidence is in Tests/Coverage/Quality-Gate-Unknowns-2026-10-10.md; a fix needs a test that fails without it (Decision 16).

Culture-sensitive comparison (tr-TR)

  • With tr-TR, I and i are different letters, so a comparison that takes the culture of the thread drops or misses items: string.Equals without a comparer, a case-insensitive Regex, a WildcardPattern without CultureInvariant. Handoff 5 found two defects of this class: IdentityReference2.Equals(object) called with a name (now OrdinalIgnoreCase) and Get-ChildItem2 -Filter (index* did not list Index.txt).
  • A scan of the C# is not enough: AlphaFS 2.2 builds a culture-sensitive regex from a search pattern. Get-ChildItem2 therefore enumerates under InvariantCultureScope (around the creation of the enumerator and each MoveNext, never across a WriteObject) and its own WildcardPattern has CultureInvariant. Check any new library call that takes a user pattern.
  • PowerShell -eq, -contains, and -in do not take the thread culture; only the .NET method call failed. Probe a claim before it enters the changelog or a report (the first wording named -eq and was wrong).
  • A test sets the culture of the thread, restores it in finally, names the rows that differ (index*, *.INI), keeps a control (INDEX*), and is proved red on the previous build and green on the new one in all four configurations (Tests/ItemCmdlets.Tests.ps1, Tests/ObjectApis.Tests.ps1).

A test oracle that is wrong on a domain member

  • Get-Acl -Audit reads the SACL with the other sections and reports an item without audit entries as protected (Windows Server 2019, 2022, and 2025 domain members, Windows 11); the module and Get-NTFSInheritance read the SACL alone. Tests read the flag with .NET GetAccessControl(Audit) (Get-TestAuditAcl). A suite that is green on the host proves nothing about an oracle: run a new test on a domain member before calling it done.

A piped property and the parameter set

  • An object with a property AppliesTo, piped into Add- or Remove-NTFSAccess or -NTFSAudit with a path, binds the default PathComplex set and drops the property; with a descriptor it binds SDSimple. A test that means the Simple set names -AppliesTo and asserts the scope it gets (a probe that tells the sets uses an entry of the default scope: removing ThisFolderOnly from it leaves the InheritOnly part).