7.9 KiB
Quality-gate follow-up acceptance, 2026-10-09
Further validation of NTFSSecurity before 5.0.0, on
ai/quality-gate-coverage, based on rc7 PR #116 (d25647d). This is a
local candidate, not a published release or a claim that the quality gate
is complete. Architecture and cmdlet-design choices remain with the
maintainer (Decisions 16, 21, and 22).
Candidate and artifact identity
- Module code/test baseline:
3442194; first-hidden-item fix:d610372. - Build: Release, .NET Framework 4.5.2; manifest label
5.0.0-rc7. The label has not been advanced or published by this work. - Packages produced by
.github/scripts/New-ModulePackage.ps1. All 11 files in the live-tested packaged module folder match the extractedNTFSSecurity.zipbyte-for-byte by SHA-256. - Package SHA-256 values:
| Artifact | SHA-256 |
|---|---|
NTFSSecurity.5.0.0-rc7.nupkg |
E76B80CA8CBCD4E46EB5B4C61E53BD0BFCB461881593753A69F7F90385533768 |
NTFSSecurity.zip |
ACA302594BF0B84EAF6F4E45476DC4AA096F5F9105E51B1F255FB061D57E99EC |
NTFSSecurity.dll |
4587F1B2FCF2683B02D1895CEE17D0ABF4060DA758264E09AEC0CF62536E7CAC |
Local validation
Final uninstrumented suite, 09:31 to 09:34 UTC; separate processes with the real CI elevated/basic-user wrappers. Every configuration discovered 914 cases (202 above rc7); no test failed. Every skipped test template has an executed counterpart in the four-run matrix. NUnit skipped data names were normalized, not compared positionally or as literal expanded names.
| Configuration | Passed | Failed | Skipped | Total |
|---|---|---|---|---|
| Windows PowerShell 5.1, elevated | 890 | 0 | 24 | 914 |
| Windows PowerShell 5.1, basic user | 749 | 0 | 165 | 914 |
| PowerShell 7, elevated | 860 | 0 | 54 | 914 |
| PowerShell 7, basic user | 719 | 0 | 195 | 914 |
AST parse and PSScriptAnalyzer: zero issues in all 13 changed PowerShell files. Release build, actionlint, Markdown lint, help generation/round trip, and relative documentation links passed. Existing compiler warnings were retained, not suppressed to obtain a green result.
New guards cover folder deletion, read-only/locked/junction/long-path cases, owner restoration/retry failures, all 13 permission scopes in both forms and storage modes, descendant propagation, file/folder inheritance, enumeration/filter/depth/link skipping, forced replacement, and descriptor write failure/continuation. Controlled mutations made the relevant tests fail; source was restored exactly and Release rebuilt before validation.
Reproduced product defect: Get-ChildItem2 -Hidden omitted the first
hidden item because implied Force was set after deciding whether to emit
it. The regression failed before the fix in all four configurations.
CI result paths were also fixed test-first. Publication recovery has 14
offline tests; no real upload occurred.
Coverage method and remaining inventory
AltCover 9.0.145 OpenCover report of frozen 3442194, 09:24 to 09:28 UTC:
all four configurations sequentially, no --save, copied Release PDBs,
AlphaFS and System.Management.Automation excluded. Percentages are visited
sequence/branch points divided by their respective totals, not unique
source-line coverage.
| Assembly | Sequence points | Sequence coverage | Branch points | Branch coverage |
|---|---|---|---|---|
| NTFSSecurity | 1,769/2,099 | 84.28% | 605/1,051 | 57.56% |
| Security2 | 747/1,219 | 61.28% | 330/740 | 44.59% |
| ProcessPrivileges | 113/219 | 51.60% | 35/125 | 28.00% |
| PrivilegeControl | 12/22 | 54.55% | 4/17 | 23.53% |
| Aggregate | 2,641/3,559 | 74.21% | 974/1,933 | 50.39% |
rc6 aggregate was 68.14% sequence/44.32% branch coverage. Its production
code differs, so the denominators differ. The 918 unvisited points remain
visible: 244 in classes unused by cmdlets, 112 parameter-getter points,
and 562 for finer classification/testing (unused overloads, defensive,
environment-specific, and reachable paths). This is not "everything tested
or explained" yet. For example, code intelligence finds only the definition
of MapGenericRightsToFileSystemRights, not a caller; do not test/remove an
unused helper merely to improve a percentage.
Lab and rollback evidence
WindowsAccessControlLab: F1ADC1, F1BDC1, F2DC1, F3DC1, F1AFile1 (client),
and F1AFile2 (file server), all Windows Server 2025. Before the run,
authenticated WinRM, LDAP RootDSE, Kerberos tickets, member secure channels,
and clocks passed. No VM topology or operating system was changed.
Six checkpoints named ntfs-qg-3442194-before-acceptance exist. Hyper-V
reports them as Standard. A temporary ProductionOnly request on F1AFile1
also succeeded but reported Standard; its original policy was restored.
Production classification remains unverified. No checkpoint was restored;
these are not verified Production rollback evidence.
Live results
Controller ran from 09:20 to 09:51 UTC against hash-checked published rc6
and the candidate, each version/edition in new processes. The new fixture
contains exactly one hidden file: the Delegate lists it over SMB with
-Hidden alone, and the Server verifies its content/attribute independently.
| Version | Edition | Role | Passed | Failed | Skipped |
|---|---|---|---|---|---|
| Candidate | Desktop | Delegate | 39 | 0 | 0 |
| Candidate | Desktop | ServerAdmin | 13 | 0 | 0 |
| Candidate | Desktop | Admin | 40 | 0 | 0 |
| Candidate | Desktop | Server | 73 | 0 | 1 |
| Candidate | Core | Delegate | 39 | 0 | 0 |
| Candidate | Core | ServerAdmin | 13 | 0 | 0 |
| Candidate | Core | Admin | 40 | 0 | 0 |
| Candidate | Core | Server | 73 | 0 | 1 |
| Published rc6 | Each edition | Delegate | 38 | 1 | 0 |
| Published rc6 | Each edition | ServerAdmin | 13 | 0 | 0 |
| Published rc6 | Each edition | Admin | 39 | 1 | 0 |
| Published rc6 | Each edition | Server | 73 | 0 | 1 |
Candidate aggregate: 330 passed, zero failed, two expected skips (Server does not import the module). rc6 aggregate: 326 passed, four expected failures, two skips. The only rc6 failures are Hidden and the already-known rc7 effective-access warning-text expectation, once each per edition.
The temporary host verifier initially failed because Desktop wrapped the JSON array and failure names included Describe prefixes. A corrected verifier flattened the array, checked all 16 unique version/edition/role results and exact failure names, and passed in both editions on the unchanged results. Original raw logs/exit markers were preserved.
Cleanup and review
RemoveFixture ran at 09:57 UTC. An overly broad host Error.Count check gave its wrapper a failing marker despite the controller completing. Independent read-only probes verified on all six machines: zero test OUs/users/groups, no share or fixture folders, no test local-group memberships, no test profiles. Cleanup is proved by end state, not that wrapper marker.
One independent read-only code review approved the diff with high confidence and no significant issues or confirmed exploitable vulnerability. The custom security-reviewer could not start because its configured model was unavailable; the built-in code-review agent performed the one review. No source changed after that pass; result-verifier repairs were temporary host tooling only.
Evidence and remaining release gates
Raw coverage XML, eligibility/inventory CSVs, final suite XML/logs,
mutation logs, module/package hashes, full live role results, original host
logs, corrected verification, and independent cleanup evidence are retained
in the session artifact quality-gate-3442194-20261009.
Remaining: finer uncovered-path inventory, Decision 22 review, integration and CI of this branch, publication and published-package acceptance, wider OS matrix, and non-Windows #34 feedback. All 13 deployed lab VMs remain Server 2025. Windows 11/Server 2019/2022 ISO media exists, but detected editions/OS cache and matrix scope are not yet verified. #34 has no reply since 2026-10-06. Do not release stable 5.0.0 on the strength of this record.