Ai/docs alignment (#91)
* chore: initialize the memory bank
Add the canonical .memory-bank base with evidence-based project context:
purpose and scope, workflows, stack and validation commands, architecture
map, decisions, and the open work found while documenting the cmdlets.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* docs: align documentation with the cmdlet source
- Fill all 36 platyPS cmdlet pages from the C# source: synopsis,
description, parameters, defaults, examples, inputs, outputs, and
notes, including documented limitations of the current code
- Check every example against live parameter metadata and run them in a
sandbox; fix examples that did not work (CSV restore, account filter,
recursive inheritance, -AccessRights typos)
- Rewrite the home, concepts, examples, README, and contributor pages;
add a grouped cmdlet overview, module settings, privileges, long paths,
and the platyPS workflow
- Document Remove-Item2 -PassThru as renamed after 4.2.6 (#64)
- Fix mkdocs.yml navigation, edit_uri, and copyright markup; add
build.os and a pinned MkDocs version for Read the Docs
- Point online help links to the pages on GitHub; add CHANGELOG.md
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* ci: build the module and check the docs against the build
The documentation check ran Update-MarkdownHelp against the NTFSSecurity
release from the PowerShell Gallery (4.2.6), so it failed for every
unreleased parameter change. PR #91 failed because 4.2.6 still has
Remove-Item2 -PassThur while the source and the docs have -PassThru.
- Build NTFSSecurity.csproj in Release on the Visual Studio 2022 image,
using the .NET Framework 4.5.2 reference assemblies package instead of
an installed targeting pack
- Check Docs/Cmdlets against the module built from source
- Pin platyPS 0.14.2 and MarkdownLinkCheck 0.2.0, and enable TLS 1.2 so
the NuGet provider bootstrap works
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* chore: record the green PR 91 build in the memory bank
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
4 weeks ago
|
|
|
---
|
|
|
|
|
status: current
|
|
|
|
|
last-verified: 2026-10-04
|
Ai/docs alignment (#91)
* chore: initialize the memory bank
Add the canonical .memory-bank base with evidence-based project context:
purpose and scope, workflows, stack and validation commands, architecture
map, decisions, and the open work found while documenting the cmdlets.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* docs: align documentation with the cmdlet source
- Fill all 36 platyPS cmdlet pages from the C# source: synopsis,
description, parameters, defaults, examples, inputs, outputs, and
notes, including documented limitations of the current code
- Check every example against live parameter metadata and run them in a
sandbox; fix examples that did not work (CSV restore, account filter,
recursive inheritance, -AccessRights typos)
- Rewrite the home, concepts, examples, README, and contributor pages;
add a grouped cmdlet overview, module settings, privileges, long paths,
and the platyPS workflow
- Document Remove-Item2 -PassThru as renamed after 4.2.6 (#64)
- Fix mkdocs.yml navigation, edit_uri, and copyright markup; add
build.os and a pinned MkDocs version for Read the Docs
- Point online help links to the pages on GitHub; add CHANGELOG.md
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* ci: build the module and check the docs against the build
The documentation check ran Update-MarkdownHelp against the NTFSSecurity
release from the PowerShell Gallery (4.2.6), so it failed for every
unreleased parameter change. PR #91 failed because 4.2.6 still has
Remove-Item2 -PassThur while the source and the docs have -PassThru.
- Build NTFSSecurity.csproj in Release on the Visual Studio 2022 image,
using the .NET Framework 4.5.2 reference assemblies package instead of
an installed targeting pack
- Check Docs/Cmdlets against the module built from source
- Pin platyPS 0.14.2 and MarkdownLinkCheck 0.2.0, and enable TLS 1.2 so
the NuGet provider bootstrap works
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* chore: record the green PR 91 build in the memory bank
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
4 weeks ago
|
|
|
owner: active-agent
|
|
|
|
|
source: repository evidence
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
# Tech context
|
|
|
|
|
|
|
|
|
|
## Stack
|
|
|
|
|
|
|
|
|
|
- C# class libraries, old-style `.csproj`, .NET Framework 4.5.2,
|
|
|
|
|
solution `NTFSSecurity.sln` (Visual Studio 2017 format).
|
|
|
|
|
- Projects: `NTFSSecurity` (cmdlets), `Security2` (ACL object model, Win32
|
|
|
|
|
interop), `PrivilegeControl` and `ProcessPrivileges` (token privileges),
|
|
|
|
|
`Log`, `TestClient`, `NTFSSecurityTest` (MSTest, minimal coverage).
|
|
|
|
|
- NuGet (`packages.config`): AlphaFS 2.2.x for long paths;
|
|
|
|
|
`System.Management.Automation.dll` 10.0.10586.0.
|
|
|
|
|
- Module: `NTFSSecurity.psd1` loads `NTFSSecurity.psm1` (aliases `dir2`,
|
|
|
|
|
`gi2`, `rm2`, `del2`), `NTFSSecurity.Init.ps1` (Add-Type of the helper
|
|
|
|
|
assemblies, prepends `NTFSSecurity.format.ps1xml`), and `NTFSSecurity.dll`.
|
|
|
|
|
- Documentation: Markdown in `Docs` and `README.md`, rendered by GitHub and
|
|
|
|
|
published to the wiki by CI; no documentation site (Decisions 9 and 11).
|
|
|
|
|
Cmdlet pages are platyPS 0.14 markdown (schema 2.0.0) in `Docs/Cmdlets`.
|
fix(help): ship the generated help file so Get-Help works (#93)
* fix(help): ship the generated help file so Get-Help works
Get-Help showed only the syntax of the cmdlets: the module shipped a
pre-4.x MAML file for the old command names under the wrong name
(NTFSSecurity-Help.xml), while PowerShell looks for
en-US\NTFSSecurity.dll-Help.xml.
- Generate en-US\NTFSSecurity.dll-Help.xml from Docs/Cmdlets with
New-ExternalHelp and commit it. The csproj copies it to the output,
so every build ships it, including the local Debug builds that
releases are published from.
- List all runtime files, including the help file, in FileList.
- Remove the stale NTFSSecurity-Help.xml and the unused help editor
project NTFSSecurity\Help\NTFSSecurity.Help.pshproj.
- Add Tests\Help.Tests.ps1 (Pester 5): Get-Help shows the synopsis,
parameters, examples, and online link of every page, and
Get-Help -Online resolves to the GitHub page.
- Reword six sentences in five cmdlet pages so that each link ends its
sentence: platyPS drops the space after a link in the help text.
- CI regenerates the help file and fails when it differs from the
committed file, then runs the Pester tests.
- Document the regeneration step and the link rule in the contributor
guide.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* ci: report each Pester test once on AppVeyor
AppVeyor build 54834154 passed all 218 Pester tests but listed 870 on
its Tests tab: the NUnit import files a Pester 5 test under every block
that contains it (Pester, test file, Describe, and Context).
Report the results through the build worker API instead
(POST api/tests/batch): one entry per test with its outcome, duration,
and error message. Outside AppVeyor, and when no test ran, the step
sends nothing.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
4 weeks ago
|
|
|
- Help: `NTFSSecurity\en-US\NTFSSecurity.dll-Help.xml`, generated from
|
|
|
|
|
`Docs/Cmdlets` and committed (Decision 8).
|
|
|
|
|
- Tests: Pester 5 tests in `Tests`: `Help.Tests.ps1` (help of every
|
|
|
|
|
cmdlet), `Manifest.Tests.ps1` (manifest and versions, Decision 10), and
|
|
|
|
|
`Remove-Item2.Tests.ps1` (`-PassThur` alias) against the Release build;
|
|
|
|
|
`Wiki.Tests.ps1` (wiki conversion) without a build.
|
|
|
|
|
- CI: GitHub Actions, `.github/workflows/ci.yml` with the scripts in
|
|
|
|
|
`.github/scripts` (Decision 11).
|
Ai/docs alignment (#91)
* chore: initialize the memory bank
Add the canonical .memory-bank base with evidence-based project context:
purpose and scope, workflows, stack and validation commands, architecture
map, decisions, and the open work found while documenting the cmdlets.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* docs: align documentation with the cmdlet source
- Fill all 36 platyPS cmdlet pages from the C# source: synopsis,
description, parameters, defaults, examples, inputs, outputs, and
notes, including documented limitations of the current code
- Check every example against live parameter metadata and run them in a
sandbox; fix examples that did not work (CSV restore, account filter,
recursive inheritance, -AccessRights typos)
- Rewrite the home, concepts, examples, README, and contributor pages;
add a grouped cmdlet overview, module settings, privileges, long paths,
and the platyPS workflow
- Document Remove-Item2 -PassThru as renamed after 4.2.6 (#64)
- Fix mkdocs.yml navigation, edit_uri, and copyright markup; add
build.os and a pinned MkDocs version for Read the Docs
- Point online help links to the pages on GitHub; add CHANGELOG.md
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* ci: build the module and check the docs against the build
The documentation check ran Update-MarkdownHelp against the NTFSSecurity
release from the PowerShell Gallery (4.2.6), so it failed for every
unreleased parameter change. PR #91 failed because 4.2.6 still has
Remove-Item2 -PassThur while the source and the docs have -PassThru.
- Build NTFSSecurity.csproj in Release on the Visual Studio 2022 image,
using the .NET Framework 4.5.2 reference assemblies package instead of
an installed targeting pack
- Check Docs/Cmdlets against the module built from source
- Pin platyPS 0.14.2 and MarkdownLinkCheck 0.2.0, and enable TLS 1.2 so
the NuGet provider bootstrap works
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* chore: record the green PR 91 build in the memory bank
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
4 weeks ago
|
|
|
|
|
|
|
|
## Environment
|
|
|
|
|
|
|
|
|
|
- Windows only (NTFS, Win32 security APIs).
|
|
|
|
|
- The Debug build writes straight into
|
|
|
|
|
`C:\Program Files\WindowsPowerShell\Modules\NTFSSecurity\`.
|
|
|
|
|
- No Visual Studio MSBuild or .NET Framework targeting pack on the
|
|
|
|
|
workstation. A local build works with the .NET Framework MSBuild
|
|
|
|
|
(`%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe`) plus
|
|
|
|
|
`/p:CscToolPath` to the Roslyn `csc.exe` of the `Microsoft.Net.Compilers`
|
|
|
|
|
package; the legacy C# 5 compiler fails with CS0136. `dotnet msbuild`
|
|
|
|
|
fails on the binary resources in `Resources.resx` (MSB3822, MSB3823).
|
fix(help): ship the generated help file so Get-Help works (#93)
* fix(help): ship the generated help file so Get-Help works
Get-Help showed only the syntax of the cmdlets: the module shipped a
pre-4.x MAML file for the old command names under the wrong name
(NTFSSecurity-Help.xml), while PowerShell looks for
en-US\NTFSSecurity.dll-Help.xml.
- Generate en-US\NTFSSecurity.dll-Help.xml from Docs/Cmdlets with
New-ExternalHelp and commit it. The csproj copies it to the output,
so every build ships it, including the local Debug builds that
releases are published from.
- List all runtime files, including the help file, in FileList.
- Remove the stale NTFSSecurity-Help.xml and the unused help editor
project NTFSSecurity\Help\NTFSSecurity.Help.pshproj.
- Add Tests\Help.Tests.ps1 (Pester 5): Get-Help shows the synopsis,
parameters, examples, and online link of every page, and
Get-Help -Online resolves to the GitHub page.
- Reword six sentences in five cmdlet pages so that each link ends its
sentence: platyPS drops the space after a link in the help text.
- CI regenerates the help file and fails when it differs from the
committed file, then runs the Pester tests.
- Document the regeneration step and the link rule in the contributor
guide.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* ci: report each Pester test once on AppVeyor
AppVeyor build 54834154 passed all 218 Pester tests but listed 870 on
its Tests tab: the NUnit import files a Pester 5 test under every block
that contains it (Pester, test file, Describe, and Context).
Report the results through the build worker API instead
(POST api/tests/batch): one entry per test with its outcome, duration,
and error message. Outside AppVeyor, and when no test ran, the step
sends nothing.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
4 weeks ago
|
|
|
- platyPS 0.14.2, Pester 5.7.1, PSScriptAnalyzer, and powershell-yaml are
|
|
|
|
|
installed only for PowerShell 7. Windows PowerShell 5.1, started from
|
|
|
|
|
PowerShell 7, imports platyPS and Pester by full path
|
fix(help): ship the generated help file so Get-Help works (#93)
* fix(help): ship the generated help file so Get-Help works
Get-Help showed only the syntax of the cmdlets: the module shipped a
pre-4.x MAML file for the old command names under the wrong name
(NTFSSecurity-Help.xml), while PowerShell looks for
en-US\NTFSSecurity.dll-Help.xml.
- Generate en-US\NTFSSecurity.dll-Help.xml from Docs/Cmdlets with
New-ExternalHelp and commit it. The csproj copies it to the output,
so every build ships it, including the local Debug builds that
releases are published from.
- List all runtime files, including the help file, in FileList.
- Remove the stale NTFSSecurity-Help.xml and the unused help editor
project NTFSSecurity\Help\NTFSSecurity.Help.pshproj.
- Add Tests\Help.Tests.ps1 (Pester 5): Get-Help shows the synopsis,
parameters, examples, and online link of every page, and
Get-Help -Online resolves to the GitHub page.
- Reword six sentences in five cmdlet pages so that each link ends its
sentence: platyPS drops the space after a link in the help text.
- CI regenerates the help file and fails when it differs from the
committed file, then runs the Pester tests.
- Document the regeneration step and the link rule in the contributor
guide.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* ci: report each Pester test once on AppVeyor
AppVeyor build 54834154 passed all 218 Pester tests but listed 870 on
its Tests tab: the NUnit import files a Pester 5 test under every block
that contains it (Pester, test file, Describe, and Context).
Report the results through the build worker API instead
(POST api/tests/batch): one entry per test with its outcome, duration,
and error message. Outside AppVeyor, and when no test ran, the step
sends nothing.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
4 weeks ago
|
|
|
(`~\OneDrive\Documents\PowerShell\Modules\platyPS\0.14.2`,
|
|
|
|
|
`C:\Program Files\PowerShell\Modules\Pester\5.7.1`). Leave
|
|
|
|
|
`$env:PSModulePath` alone: PowerShell 7 hands the child the Windows
|
|
|
|
|
PowerShell default path, and clearing it leaves Windows PowerShell without
|
|
|
|
|
its core modules (Pester fails: `Add-Member` not found).
|
|
|
|
|
- MarkdownLinkCheck is not installed, and `Save-Module` crashed (FailFast)
|
|
|
|
|
in PowerShell 7.6 on 2026-10-04. Download the 0.2.0 package from
|
|
|
|
|
`https://www.powershellgallery.com/api/v2/package/MarkdownLinkCheck/0.2.0`
|
|
|
|
|
into `$env:TEMP`, extract it, and import it by path.
|
chore(memory-bank): record the 5.0.0-rc2 release
5.0.0-rc2 is on the PowerShell Gallery and in the GitHub releases. The
PRs #99 to #106 were merged in order with merge commits, CI on master
passed, and the tag 5.0.0-rc2 on 7ddda8d published it on the third
attempt of the release run, after GitHub's Actions outage of 2026-10-05.
The open issues got their replies, 16 were closed, and the follow-up
issues #107 to #111 track the open Minor review findings.
- Decision 14: repository hardening is optional; the outdated "pending"
text is gone.
- Decision 15: merge stacked pull requests in order with merge commits.
- Decision 16: fix only reproducible bugs (the maintainer's decision D6).
- activeContext and progress: the CI fix 629f4e7, the copied inherited
entries behind #34, the issue state, and the next step (test rc2, then
5.0.0 or rc3).
- techContext: the current versions, the second workstation, and
one-line commands for the maintainer.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
4 weeks ago
|
|
|
- The first workstation is ARM64; PowerShell 7 runs as x64 under emulation.
|
|
|
|
|
- The NuGet cache (`~\.nuget\packages`) holds every build dependency: copy
|
|
|
|
|
`alphafs\2.2.1`, `system.management.automation.dll\10.0.10586`, and
|
|
|
|
|
`microsoft.netframework.referenceassemblies.net452\1.0.3` into
|
|
|
|
|
`packages\<Id>.<Version>`, and point `CscToolPath` at
|
|
|
|
|
`microsoft.net.compilers\4.2.0\tools`.
|
chore(memory-bank): record the 5.0.0-rc2 release
5.0.0-rc2 is on the PowerShell Gallery and in the GitHub releases. The
PRs #99 to #106 were merged in order with merge commits, CI on master
passed, and the tag 5.0.0-rc2 on 7ddda8d published it on the third
attempt of the release run, after GitHub's Actions outage of 2026-10-05.
The open issues got their replies, 16 were closed, and the follow-up
issues #107 to #111 track the open Minor review findings.
- Decision 14: repository hardening is optional; the outdated "pending"
text is gone.
- Decision 15: merge stacked pull requests in order with merge commits.
- Decision 16: fix only reproducible bugs (the maintainer's decision D6).
- activeContext and progress: the CI fix 629f4e7, the copied inherited
entries behind #34, the issue state, and the next step (test rc2, then
5.0.0 or rc3).
- techContext: the current versions, the second workstation, and
one-line commands for the maintainer.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
4 weeks ago
|
|
|
- The second workstation (x64, used since 2026-10-05) runs the agent
|
|
|
|
|
session elevated, so the tests that need privileges run there as in CI.
|
|
|
|
|
It has no NuGet cache with these packages: download each from
|
|
|
|
|
`https://api.nuget.org/v3-flatcontainer/<id>/<version>/<id>.<version>.nupkg`,
|
|
|
|
|
extract the first three into `packages\<Id>.<Version>` and the compilers
|
|
|
|
|
into `$env:TEMP`; Pester 5.7.1 comes from the Gallery package API the
|
|
|
|
|
same way, its folder first on `$env:PSModulePath` of the test process.
|
|
|
|
|
The GitHub CLI is in `C:\Program Files\GitHub CLI`, outside the PATH of
|
|
|
|
|
sessions started before its installation.
|
Ai/docs alignment (#91)
* chore: initialize the memory bank
Add the canonical .memory-bank base with evidence-based project context:
purpose and scope, workflows, stack and validation commands, architecture
map, decisions, and the open work found while documenting the cmdlets.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* docs: align documentation with the cmdlet source
- Fill all 36 platyPS cmdlet pages from the C# source: synopsis,
description, parameters, defaults, examples, inputs, outputs, and
notes, including documented limitations of the current code
- Check every example against live parameter metadata and run them in a
sandbox; fix examples that did not work (CSV restore, account filter,
recursive inheritance, -AccessRights typos)
- Rewrite the home, concepts, examples, README, and contributor pages;
add a grouped cmdlet overview, module settings, privileges, long paths,
and the platyPS workflow
- Document Remove-Item2 -PassThru as renamed after 4.2.6 (#64)
- Fix mkdocs.yml navigation, edit_uri, and copyright markup; add
build.os and a pinned MkDocs version for Read the Docs
- Point online help links to the pages on GitHub; add CHANGELOG.md
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* ci: build the module and check the docs against the build
The documentation check ran Update-MarkdownHelp against the NTFSSecurity
release from the PowerShell Gallery (4.2.6), so it failed for every
unreleased parameter change. PR #91 failed because 4.2.6 still has
Remove-Item2 -PassThur while the source and the docs have -PassThru.
- Build NTFSSecurity.csproj in Release on the Visual Studio 2022 image,
using the .NET Framework 4.5.2 reference assemblies package instead of
an installed targeting pack
- Check Docs/Cmdlets against the module built from source
- Pin platyPS 0.14.2 and MarkdownLinkCheck 0.2.0, and enable TLS 1.2 so
the NuGet provider bootstrap works
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* chore: record the green PR 91 build in the memory bank
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
4 weeks ago
|
|
|
|
|
|
|
|
## Constraints
|
|
|
|
|
|
|
|
|
|
- `ModuleVersion` on `master` is `5.0.0` with the prerelease label `rc3`.
|
chore(memory-bank): record the 5.0.0-rc2 release
5.0.0-rc2 is on the PowerShell Gallery and in the GitHub releases. The
PRs #99 to #106 were merged in order with merge commits, CI on master
passed, and the tag 5.0.0-rc2 on 7ddda8d published it on the third
attempt of the release run, after GitHub's Actions outage of 2026-10-05.
The open issues got their replies, 16 were closed, and the follow-up
issues #107 to #111 track the open Minor review findings.
- Decision 14: repository hardening is optional; the outdated "pending"
text is gone.
- Decision 15: merge stacked pull requests in order with merge commits.
- Decision 16: fix only reproducible bugs (the maintainer's decision D6).
- activeContext and progress: the CI fix 629f4e7, the copied inherited
entries behind #34, the issue state, and the next step (test rc2, then
5.0.0 or rc3).
- techContext: the current versions, the second workstation, and
one-line commands for the maintainer.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
4 weeks ago
|
|
|
The latest stable tag and Gallery release is `4.2.6`. The manifest
|
|
|
|
|
requires PowerShell 5.1 and .NET Framework 4.5.2, uses `RootModule`, and
|
|
|
|
|
lists exactly 36 cmdlets; `Test-ModuleManifest` passes in Windows
|
|
|
|
|
PowerShell 5.1 and PowerShell 7.6.
|
|
|
|
|
- The module source at `master` differs from tag `4.2.6` by the changes
|
|
|
|
|
that `CHANGELOG.md` lists under `[Unreleased]`, the release notes of each
|
|
|
|
|
5.0.0 prerelease.
|
|
|
|
|
- PowerShell Gallery versions (publish dates): 4.0.0 (2015-08-19), 4.2.2
|
|
|
|
|
(2016-05-18), 4.2.3 (2016-05-19), 4.2.4 (2018-08-13), 4.2.5 (2019-07-11),
|
|
|
|
|
4.2.6 (2019-07-12), none with release notes; 5.0.0-rc1 (2026-10-04),
|
|
|
|
|
5.0.0-rc2 (2026-10-05), and 5.0.0-rc3 (2026-10-06), published by CI.
|
|
|
|
|
Older versions were released on CodePlex only, and their dates are lost.
|
|
|
|
|
The git history starts on 2016-10-10, when the project moved from
|
|
|
|
|
CodePlex.
|
|
|
|
|
- Releases up to 4.2.6 were Debug builds published by hand, with the whole
|
|
|
|
|
output folder; their tags carry the previous version. From 5.0.0 on, CI
|
|
|
|
|
publishes on a version tag (Decision 12). GitHub releases attach
|
|
|
|
|
`NTFSSecurity.zip`.
|
|
|
|
|
- CI: GitHub Actions on pull requests and pushes to `master` (Decision 11).
|
|
|
|
|
AppVeyor no longer reports on `master`. The Read the Docs project
|
|
|
|
|
`ntfssecurity` and a second AppVeyor project belong to the deleted fork
|
|
|
|
|
`Sup3rlativ3/NTFSSecurity` and aren't used (Decision 9).
|
|
|
|
|
- `CHANGELOG.md` lists user-visible changes only; CI and build-only changes
|
|
|
|
|
get no entry
|
|
|
|
|
([Decision 7](decisions/0007-changelog-user-visible-only.md)).
|
|
|
|
|
- Remote mutations are the maintainer's: the user-level preToolUse hook
|
|
|
|
|
`Block-RemoteMutation.ps1` denies `git push` and mutating `gh` commands
|
|
|
|
|
(`pr create`, `pr close`, and others) from the agent session, even after
|
|
|
|
|
an explicit request. Its override, `COPILOT_ATELIER_ALLOW_REMOTE=1`, is
|
|
|
|
|
read from the environment that VS Code starts the hook with; setting it
|
|
|
|
|
inside an agent command has no effect (verified 2026-10-04). The hook
|
|
|
|
|
matches the whole command text, so a commit message that quotes such a
|
|
|
|
|
command is blocked too. Prepare the commands and descriptions; the
|
|
|
|
|
maintainer runs them. Hand over each command as its own fenced code block
|
|
|
|
|
at the end of the reply, which the chat shows with a copy button, and end
|
|
|
|
|
the turn there; the maintainer reports back in the chat. The question
|
|
|
|
|
dialog joins the lines of its text, has no copy button, and covers the
|
|
|
|
|
reply before it (maintainer, 2026-10-06). A pull request description
|
|
|
|
|
names an issue without a closing keyword (fixes, closes, resolves) unless
|
|
|
|
|
the merge should close it: "fixes #34" in #112 closed #34. Simulated `gh`
|
chore(memory-bank): record the 5.0.0-rc2 release
5.0.0-rc2 is on the PowerShell Gallery and in the GitHub releases. The
PRs #99 to #106 were merged in order with merge commits, CI on master
passed, and the tag 5.0.0-rc2 on 7ddda8d published it on the third
attempt of the release run, after GitHub's Actions outage of 2026-10-05.
The open issues got their replies, 16 were closed, and the follow-up
issues #107 to #111 track the open Minor review findings.
- Decision 14: repository hardening is optional; the outdated "pending"
text is gone.
- Decision 15: merge stacked pull requests in order with merge commits.
- Decision 16: fix only reproducible bugs (the maintainer's decision D6).
- activeContext and progress: the CI fix 629f4e7, the copied inherited
entries behind #34, the issue state, and the next step (test rc2, then
5.0.0 or rc3).
- techContext: the current versions, the second workstation, and
one-line commands for the maintainer.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
4 weeks ago
|
|
|
commands in offline tests must print what the real ones print, such as
|
|
|
|
|
the URL of a new comment.
|
Ai/docs alignment (#91)
* chore: initialize the memory bank
Add the canonical .memory-bank base with evidence-based project context:
purpose and scope, workflows, stack and validation commands, architecture
map, decisions, and the open work found while documenting the cmdlets.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* docs: align documentation with the cmdlet source
- Fill all 36 platyPS cmdlet pages from the C# source: synopsis,
description, parameters, defaults, examples, inputs, outputs, and
notes, including documented limitations of the current code
- Check every example against live parameter metadata and run them in a
sandbox; fix examples that did not work (CSV restore, account filter,
recursive inheritance, -AccessRights typos)
- Rewrite the home, concepts, examples, README, and contributor pages;
add a grouped cmdlet overview, module settings, privileges, long paths,
and the platyPS workflow
- Document Remove-Item2 -PassThru as renamed after 4.2.6 (#64)
- Fix mkdocs.yml navigation, edit_uri, and copyright markup; add
build.os and a pinned MkDocs version for Read the Docs
- Point online help links to the pages on GitHub; add CHANGELOG.md
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* ci: build the module and check the docs against the build
The documentation check ran Update-MarkdownHelp against the NTFSSecurity
release from the PowerShell Gallery (4.2.6), so it failed for every
unreleased parameter change. PR #91 failed because 4.2.6 still has
Remove-Item2 -PassThur while the source and the docs have -PassThru.
- Build NTFSSecurity.csproj in Release on the Visual Studio 2022 image,
using the .NET Framework 4.5.2 reference assemblies package instead of
an installed targeting pack
- Check Docs/Cmdlets against the module built from source
- Pin platyPS 0.14.2 and MarkdownLinkCheck 0.2.0, and enable TLS 1.2 so
the NuGet provider bootstrap works
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* chore: record the green PR 91 build in the memory bank
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
4 weeks ago
|
|
|
|
|
|
|
|
## Validation
|
|
|
|
|
|
|
|
|
|
- CI (`.github/workflows/ci.yml`): job `build` on `windows-2025` installs
|
|
|
|
|
platyPS 0.14.2, MarkdownLinkCheck 0.2.0, and Pester 5.7.1 for all users,
|
|
|
|
|
restores `packages.config` per project plus
|
|
|
|
|
`Microsoft.NETFramework.ReferenceAssemblies.net452` 1.0.3, builds
|
|
|
|
|
`NTFSSecurity.csproj` in Release with the MSBuild that `vswhere` finds,
|
|
|
|
|
then: 01 `Update-MarkdownHelp` and fail on `git diff -- Docs/Cmdlets`; 02
|
fix(help): ship the generated help file so Get-Help works (#93)
* fix(help): ship the generated help file so Get-Help works
Get-Help showed only the syntax of the cmdlets: the module shipped a
pre-4.x MAML file for the old command names under the wrong name
(NTFSSecurity-Help.xml), while PowerShell looks for
en-US\NTFSSecurity.dll-Help.xml.
- Generate en-US\NTFSSecurity.dll-Help.xml from Docs/Cmdlets with
New-ExternalHelp and commit it. The csproj copies it to the output,
so every build ships it, including the local Debug builds that
releases are published from.
- List all runtime files, including the help file, in FileList.
- Remove the stale NTFSSecurity-Help.xml and the unused help editor
project NTFSSecurity\Help\NTFSSecurity.Help.pshproj.
- Add Tests\Help.Tests.ps1 (Pester 5): Get-Help shows the synopsis,
parameters, examples, and online link of every page, and
Get-Help -Online resolves to the GitHub page.
- Reword six sentences in five cmdlet pages so that each link ends its
sentence: platyPS drops the space after a link in the help text.
- CI regenerates the help file and fails when it differs from the
committed file, then runs the Pester tests.
- Document the regeneration step and the link rule in the contributor
guide.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* ci: report each Pester test once on AppVeyor
AppVeyor build 54834154 passed all 218 Pester tests but listed 870 on
its Tests tab: the NUnit import files a Pester 5 test under every block
that contains it (Pester, test file, Describe, and Context).
Report the results through the build worker API instead
(POST api/tests/batch): one entry per test with its outcome, duration,
and error message. Outside AppVeyor, and when no test ran, the step
sends nothing.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
4 weeks ago
|
|
|
`Get-MarkdownLink -BrokenOnly`; 03 regenerate the help file and fail on
|
|
|
|
|
`git status --porcelain -- NTFSSecurity/en-US`; 04 `Invoke-Tests.ps1` in
|
|
|
|
|
Windows PowerShell 5.1 and in PowerShell 7. Job `wiki` on `ubuntu-latest`
|
|
|
|
|
(read-only) clones the wiki (`gh auth setup-git` with the built-in token),
|
|
|
|
|
runs `Export-WikiContent.ps1`, and lists the changed pages in the job
|
|
|
|
|
summary; job `publish-wiki` (`contents: write`) repeats that and publishes,
|
|
|
|
|
for `master` only. After the tests, `build` runs
|
|
|
|
|
`New-ModulePackage.ps1` and uploads the artifact `packages` (nupkg and
|
|
|
|
|
`NTFSSecurity.zip`). Job `release` runs only for tags matching
|
|
|
|
|
`[0-9]+.[0-9]+.[0-9]+` or `[0-9]+.[0-9]+.[0-9]+-*`, in the environment
|
|
|
|
|
`powershell-gallery` (secret `PSGALLERY_API_KEY`); see Decision 12.
|
|
|
|
|
Actions are pinned by commit SHA: `actions/checkout` v7.0.1,
|
|
|
|
|
`actions/upload-artifact` v7.0.1, `actions/download-artifact` v8.0.1;
|
|
|
|
|
Dependabot proposes updates weekly, one week after a release.
|
|
|
|
|
- Packaging needs PSResourceGet (`Compress-PSResource`, PowerShell 7.4 or
|
|
|
|
|
later); its tests skip in Windows PowerShell. Dry run locally: run
|
|
|
|
|
`New-ModulePackage.ps1` against `NTFSSecurity\bin\Release` into
|
|
|
|
|
`$env:TEMP`, then extract the nupkg into a folder and import it there.
|
|
|
|
|
- Read CI runs with `gh run list --repo raandree/NTFSSecurity --workflow
|
|
|
|
|
ci.yml`, `gh pr checks <number>`, and `gh run view <id> --log-failed`
|
|
|
|
|
(read-only).
|
|
|
|
|
- Workflow lint: actionlint (download the release zip into `$env:TEMP` and
|
|
|
|
|
check its SHA-256 against the checksum file); PowerShell steps check
|
|
|
|
|
`$LASTEXITCODE` after every native command, because GitHub checks only
|
|
|
|
|
the last one.
|
Ai/docs alignment (#91)
* chore: initialize the memory bank
Add the canonical .memory-bank base with evidence-based project context:
purpose and scope, workflows, stack and validation commands, architecture
map, decisions, and the open work found while documenting the cmdlets.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* docs: align documentation with the cmdlet source
- Fill all 36 platyPS cmdlet pages from the C# source: synopsis,
description, parameters, defaults, examples, inputs, outputs, and
notes, including documented limitations of the current code
- Check every example against live parameter metadata and run them in a
sandbox; fix examples that did not work (CSV restore, account filter,
recursive inheritance, -AccessRights typos)
- Rewrite the home, concepts, examples, README, and contributor pages;
add a grouped cmdlet overview, module settings, privileges, long paths,
and the platyPS workflow
- Document Remove-Item2 -PassThru as renamed after 4.2.6 (#64)
- Fix mkdocs.yml navigation, edit_uri, and copyright markup; add
build.os and a pinned MkDocs version for Read the Docs
- Point online help links to the pages on GitHub; add CHANGELOG.md
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* ci: build the module and check the docs against the build
The documentation check ran Update-MarkdownHelp against the NTFSSecurity
release from the PowerShell Gallery (4.2.6), so it failed for every
unreleased parameter change. PR #91 failed because 4.2.6 still has
Remove-Item2 -PassThur while the source and the docs have -PassThru.
- Build NTFSSecurity.csproj in Release on the Visual Studio 2022 image,
using the .NET Framework 4.5.2 reference assemblies package instead of
an installed targeting pack
- Check Docs/Cmdlets against the module built from source
- Pin platyPS 0.14.2 and MarkdownLinkCheck 0.2.0, and enable TLS 1.2 so
the NuGet provider bootstrap works
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* chore: record the green PR 91 build in the memory bank
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
4 weeks ago
|
|
|
- Run platyPS in Windows PowerShell 5.1 to avoid PowerShell 7.4+
|
|
|
|
|
`-ProgressAction` noise.
|
|
|
|
|
- Placeholder check: no `{{` left in `Docs/Cmdlets/*.md`.
|
fix(help): ship the generated help file so Get-Help works (#93)
* fix(help): ship the generated help file so Get-Help works
Get-Help showed only the syntax of the cmdlets: the module shipped a
pre-4.x MAML file for the old command names under the wrong name
(NTFSSecurity-Help.xml), while PowerShell looks for
en-US\NTFSSecurity.dll-Help.xml.
- Generate en-US\NTFSSecurity.dll-Help.xml from Docs/Cmdlets with
New-ExternalHelp and commit it. The csproj copies it to the output,
so every build ships it, including the local Debug builds that
releases are published from.
- List all runtime files, including the help file, in FileList.
- Remove the stale NTFSSecurity-Help.xml and the unused help editor
project NTFSSecurity\Help\NTFSSecurity.Help.pshproj.
- Add Tests\Help.Tests.ps1 (Pester 5): Get-Help shows the synopsis,
parameters, examples, and online link of every page, and
Get-Help -Online resolves to the GitHub page.
- Reword six sentences in five cmdlet pages so that each link ends its
sentence: platyPS drops the space after a link in the help text.
- CI regenerates the help file and fails when it differs from the
committed file, then runs the Pester tests.
- Document the regeneration step and the link rule in the contributor
guide.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* ci: report each Pester test once on AppVeyor
AppVeyor build 54834154 passed all 218 Pester tests but listed 870 on
its Tests tab: the NUnit import files a Pester 5 test under every block
that contains it (Pester, test file, Describe, and Context).
Report the results through the build worker API instead
(POST api/tests/batch): one entry per test with its outcome, duration,
and error message. Outside AppVeyor, and when no test ran, the step
sends nothing.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
4 weeks ago
|
|
|
- Help file: `New-ExternalHelp -Path .\Docs\Cmdlets -OutputPath
|
|
|
|
|
.\NTFSSecurity\en-US -Force` must leave `git status` unchanged.
|
|
|
|
|
- Pester: run detached (`Start-DetachedPowerShell.ps1`) in Windows
|
|
|
|
|
PowerShell 5.1: the launcher starts `pwsh`, and its payload runs
|
|
|
|
|
`powershell.exe -NoProfile -EncodedCommand` with Pester imported by full
|
|
|
|
|
path. A run without `bin\Release\en-US` must fail.
|
|
|
|
|
- Tests that run only without a privilege skip in CI and in an elevated
|
|
|
|
|
session. Run them as a basic user with `runas /trustlevel:0x20000`, and
|
|
|
|
|
give Windows PowerShell its own `PSModulePath`; that token holds one
|
|
|
|
|
privilege, so the `Enable-Privileges -PassThru` count test fails there.
|
Ai/docs alignment (#91)
* chore: initialize the memory bank
Add the canonical .memory-bank base with evidence-based project context:
purpose and scope, workflows, stack and validation commands, architecture
map, decisions, and the open work found while documenting the cmdlets.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* docs: align documentation with the cmdlet source
- Fill all 36 platyPS cmdlet pages from the C# source: synopsis,
description, parameters, defaults, examples, inputs, outputs, and
notes, including documented limitations of the current code
- Check every example against live parameter metadata and run them in a
sandbox; fix examples that did not work (CSV restore, account filter,
recursive inheritance, -AccessRights typos)
- Rewrite the home, concepts, examples, README, and contributor pages;
add a grouped cmdlet overview, module settings, privileges, long paths,
and the platyPS workflow
- Document Remove-Item2 -PassThru as renamed after 4.2.6 (#64)
- Fix mkdocs.yml navigation, edit_uri, and copyright markup; add
build.os and a pinned MkDocs version for Read the Docs
- Point online help links to the pages on GitHub; add CHANGELOG.md
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* ci: build the module and check the docs against the build
The documentation check ran Update-MarkdownHelp against the NTFSSecurity
release from the PowerShell Gallery (4.2.6), so it failed for every
unreleased parameter change. PR #91 failed because 4.2.6 still has
Remove-Item2 -PassThur while the source and the docs have -PassThru.
- Build NTFSSecurity.csproj in Release on the Visual Studio 2022 image,
using the .NET Framework 4.5.2 reference assemblies package instead of
an installed targeting pack
- Check Docs/Cmdlets against the module built from source
- Pin platyPS 0.14.2 and MarkdownLinkCheck 0.2.0, and enable TLS 1.2 so
the NuGet provider bootstrap works
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
* chore: record the green PR 91 build in the memory bank
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: AI Assistant <ai@example.com>
4 weeks ago
|
|
|
- Markdown lint: `npx markdownlint-cli2` with `MD013` limited to prose
|
|
|
|
|
(tables, code, and headings excluded) on the conceptual pages; for
|
|
|
|
|
`CHANGELOG.md` also `MD024` with `siblings_only: true`, because every
|
|
|
|
|
version repeats the category headings.
|
|
|
|
|
- Gallery packages: download
|
|
|
|
|
`https://www.powershellgallery.com/api/v2/package/NTFSSecurity/<version>`
|
|
|
|
|
into `$env:TEMP` and extract it; dates come from the OData endpoint
|
|
|
|
|
`api/v2/FindPackagesById()?id='NTFSSecurity'`. Import each version in its
|
|
|
|
|
own process: every version's `NTFSSecurity.dll` has assembly version
|
|
|
|
|
4.2.1.0, so a second version in the same process reuses the first DLL.
|
|
|
|
|
- YAML: `ConvertFrom-Yaml` (powershell-yaml) on `.github/workflows/ci.yml`.
|
|
|
|
|
- Links: the CI step 02 (MarkdownLinkCheck 0.2.0) checks only relative
|
|
|
|
|
links in `Docs`; it strips anchors and skips absolute URLs.
|
|
|
|
|
`Wiki.Tests.ps1` checks the wiki links with their anchors; check the
|
|
|
|
|
links in `README.md` and `CHANGELOG.md` with a script.
|