From b558c4ebdc1df8913c8659437537251333f478f2 Mon Sep 17 00:00:00 2001 From: Raimund Andree Date: Mon, 5 Oct 2026 03:27:14 +0200 Subject: [PATCH] chore(release): address the review of the release preparation Keep the details of the pending repository settings out of the Memory Bank, which is public. Replace the test for the one published version with a list of the versions that the PowerShell Gallery has, which the release guide now asks to maintain, and name the description test after its assertion. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: AI Assistant --- .memory-bank/activeContext.md | 16 +++++++---- .memory-bank/progress.md | 45 +++++++++++++++++-------------- Docs/Contributing/05-Releasing.md | 4 ++- Tests/Repository.Tests.ps1 | 15 ++++++----- 4 files changed, 48 insertions(+), 32 deletions(-) diff --git a/.memory-bank/activeContext.md b/.memory-bank/activeContext.md index 8cce90e..2323c66 100644 --- a/.memory-bank/activeContext.md +++ b/.memory-bank/activeContext.md @@ -31,19 +31,25 @@ reply for each issue, and the open questions. - D7: Dependabot for `github-actions` only; AlphaFS 2.2.1 everywhere. - D8: the manifest `Description` and a version-neutral README. - D9: merged local branches deleted after the run. +- 2026-10-05: the report's recommendations accepted. #5 and #82 ship in + 5.0.0 as breaking changes; #34 for rc3 if a file server is available; + #41 and #90 after 5.0.0; Minor findings become issues; the `pwsh` crash + is watched in CI. ## Evidence - Every branch tip: Release build without new warnings (296 at the top, 305 at the baseline), docs checks clean, package dry run passed. -- Tests at the top branch: Windows PowerShell 405 passed, 26 skipped; - PowerShell 7 376 passed, 55 skipped (431). The baseline had 268 tests. +- Tests at the top branch: Windows PowerShell 423 passed, 26 skipped; + PowerShell 7 394 passed, 55 skipped (449). The baseline had 268 tests. - Tests that need privileges skip on the workstation and run in CI only; the PR descriptions list them. - Reviews: one security review per PR; the Major findings were fixed in - the PR that had them (PR 1: 1, PR 2: 5, PR 4: 2, PR 6: 1). + the PR that had them (PR 1: 1, PR 2: 5, PR 4: 2, PR 6: 1, PR 7: 3, + PR 8: 2). ## Next step -The maintainer reads the report, pushes the branches, opens and merges the -PRs, tags `5.0.0-rc2`, and decides #5 (`Get-ChildItem2 -Attributes`). +The maintainer applies the repository settings, pushes the eight branches, +opens and merges the PRs in order, and tags `5.0.0-rc2` once CI on +`master` is green. diff --git a/.memory-bank/progress.md b/.memory-bank/progress.md index 84e4c0f..5cf0f32 100644 --- a/.memory-bank/progress.md +++ b/.memory-bank/progress.md @@ -31,11 +31,16 @@ version is still 4.2.6. package 5 fixed with regression tests, plus what the reviews found: a failed retry after taking ownership left the owner changed, and `-PassThru` wrote objects after a failed change or under `-WhatIf`. - Maintainer decisions D2 to D5 (Decision 13), the issues #3, #4, #74, #86, - and #88 fixed, the 37 open issues triaged, `Docs/FAQ.md`, Dependabot for + Maintainer decisions D2 to D5 (Decision 13), the issues #3, #4, #17, #74, + #86, and #88 fixed, the 37 open issues triaged, `Docs/FAQ.md`, Dependabot for the actions, and the prerelease label `rc2`. One security review per PR; - every Major finding fixed. Tests at the top branch: Windows PowerShell - 405 passed, 26 skipped; PowerShell 7 376 passed, 55 skipped (431). + every Major finding fixed. +- 2026-10-05, morning: the maintainer accepted the report's + recommendations. #5 (`Get-ChildItem2 -Attributes` matches any listed + attribute; an empty value is an error) and #82 (no `Size` alias) ship in + 5.0.0 as breaking changes on `ai/issue-fixes`. Tests at the top branch: + Windows PowerShell 423 passed, 26 skipped; PowerShell 7 394 passed, 55 + skipped (449). ## Stable capabilities @@ -58,22 +63,22 @@ version is still 4.2.6. label, date `[Unreleased]` as `[5.0.0]`, tag `5.0.0` (steps in `Docs/Contributing/05-Releasing.md`; CI warns when the changelog date isn't the release day). -3. Repository settings, proposed on 2026-10-04 (not yet agreed): the - `powershell-gallery` environment has no protection rules and no - deployment policy, so a workflow on any branch can use - `PSGALLERY_API_KEY` (`nyanhp` also has write access); `master` has no - protection or ruleset; head branches aren't deleted on merge; the - remote branches `fix/#34` and `test/transfer` aren't merged. -4. Open bugs from the triage: #5 (`Get-ChildItem2 -Attributes` matches all - attributes, `Get-ChildItem` any; needs a decision), #17 (an ACE with - `GenericAll` can't be removed), #34 and #67 (the write includes owner - and group; `fix/#34` swallows every error), #41 (a drive root reads the - device object), #82 (a `Size` member of other type data blocks the - import), #90 (a trailing space in a folder name). Enhancements: #22, - #49, #68, #77, #87. -5. Minor review findings that the PRs list but don't fix, for example +3. Repository settings: the hardening proposed on 2026-10-04 isn't applied + yet (checked 2026-10-05); the maintainer applies it before pushing the + stack. The details are with the maintainer, not in the repository. +4. Open bugs from the triage: #34 and #67 (the write includes owner and + group; `fix/#34` swallows every error) for rc3 if a file server to test + against is available; #41 (a drive root reads the device object) and #90 + (a trailing space in a folder name) after 5.0.0. Enhancements: #22, #49, + #68, #77, #87. +5. `pwsh` 7.6.1 crashed three times during test runs on the ARM64 + workstation (x64 emulation) with an access violation in `coreclr.dll` or + `System.Management.Automation.dll`, without module frames; not + reproducible on demand. Check whether CI on native x64 shows it. +6. Minor review findings that the PRs list but don't fix, for example `Copy-Item2 -WhatIf` reporting a destination conflict as an error, and - relative path forms that the `*-Item2` cmdlets resolve themselves. -6. Optional for the maintainer: delete the AppVeyor project and revoke its + relative path forms that the `*-Item2` cmdlets resolve themselves; the + maintainer tracks the useful ones as issues. +7. Optional for the maintainer: delete the AppVeyor project and revoke its GitHub authorization, restrict wiki editing to collaborators, and ask `Sup3rlativ3` to delete the Read the Docs project. diff --git a/Docs/Contributing/05-Releasing.md b/Docs/Contributing/05-Releasing.md index 713dc55..116c7d7 100644 --- a/Docs/Contributing/05-Releasing.md +++ b/Docs/Contributing/05-Releasing.md @@ -45,7 +45,9 @@ release notes for the version of the module manifest. 1. Set the version and the `Prerelease` label, such as `rc1`, and make sure that the `[Unreleased]` section of `CHANGELOG.md` describes the changes. - Merge the change into `master`. + Add the version that the Gallery has now to `$publishedVersions` in + `Tests/Repository.Tests.ps1`, so that a test catches a version that is + reused. Merge the change into `master`. 2. Tag the commit on `master` with the version and push the tag: ```powershell diff --git a/Tests/Repository.Tests.ps1 b/Tests/Repository.Tests.ps1 index a26a526..bf5c3b1 100644 --- a/Tests/Repository.Tests.ps1 +++ b/Tests/Repository.Tests.ps1 @@ -87,18 +87,21 @@ Describe 'Release metadata' { } } - # Before 5.0.0-rc2, the description named Windows PowerShell, although the module supports PowerShell 7 as well. - It 'Should describe the module without naming one PowerShell edition' { + # Before 5.0.0-rc2, the description said "Windows PowerShell Module", although the module supports PowerShell 7. + It 'Should have the description that the PowerShell Gallery shows for the module' { $manifest.Description | Should -BeExactly 'PowerShell module for managing file and folder security on NTFS volumes' } - # The PowerShell Gallery doesn't accept a version twice, and CI published 5.0.0-rc1 on 2026-10-04. - It 'Should not reuse the published version 5.0.0-rc1' { - $version | Should -Not -Be '5.0.0-rc1' + # The PowerShell Gallery doesn't accept a version twice. Add every published version to this list + # (Docs/Contributing/05-Releasing.md). + It 'Should not reuse a version that the PowerShell Gallery already has' { + $publishedVersions = '4.0', '4.2.2', '4.2.3', '4.2.4', '4.2.5', '4.2.6', '5.0.0-rc1' + + $publishedVersions | Should -Not -Contain $version } It 'Should not name a prerelease version in the README, which outlives the release' { Get-Content -LiteralPath (Join-Path -Path $repositoryPath -ChildPath 'Docs\README.md') -Raw | Should -Not -Match '\d+\.\d+\.\d+-[A-Za-z]' } -} \ No newline at end of file +}