From a9eb32ae5b98a6a12025f70079d63818969065b9 Mon Sep 17 00:00:00 2001 From: Raimund Andree Date: Sun, 4 Oct 2026 15:45:58 +0200 Subject: [PATCH] chore(memory-bank): record the move to GitHub Actions and the wiki - Decision 11: CI and the wiki run on GitHub Actions; the wiki is generated from Docs. Decision 9 no longer retires the wiki; Decisions 6 and 8 name the CI workflow instead of appveyor.yml. - techContext, systemPatterns, and projectbrief describe the workflow, the test reporting, the wiki pattern, and how to read CI runs. - progress and activeContext: PRs #94 and #95 open, the GitHub Actions package PR-ready, and the steps after the merge. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: AI Assistant --- .memory-bank/activeContext.md | 46 ++++++------ .../0006-ci-checks-docs-against-build.md | 5 +- .../decisions/0008-commit-generated-help.md | 7 +- .memory-bank/decisions/0009-docs-on-github.md | 13 ++-- .memory-bank/decisions/0011-github-actions.md | 27 +++++++ .memory-bank/progress.md | 43 +++++++---- .memory-bank/projectbrief.md | 2 +- .memory-bank/systemPatterns.md | 28 +++++--- .memory-bank/techContext.md | 71 +++++++++++-------- 9 files changed, 150 insertions(+), 92 deletions(-) create mode 100644 .memory-bank/decisions/0011-github-actions.md diff --git a/.memory-bank/activeContext.md b/.memory-bank/activeContext.md index 6afa985..c35513f 100644 --- a/.memory-bank/activeContext.md +++ b/.memory-bank/activeContext.md @@ -9,37 +9,31 @@ source: current task evidence ## Current focus -Work packages 3 and 4 are PR-ready and committed locally, not pushed: -`ai/docs-on-github` (docs on GitHub, wiki retired, Decision 9) and -`ai/manifest-version` (valid manifest, version 5.0.0, Decision 10), -stacked on it. The maintainer pushes both and opens the PRs; the PR -descriptions are in the session files. Merge the docs PR first with a -merge commit. +PRs #94 (docs on GitHub) and #95 (manifest and version 5.0.0, stacked on +PR #94) are open and build on AppVeyor. The move to GitHub Actions (CI and +a wiki generated from `Docs`, Decision 11) is PR-ready on the local branch +`ai/github-actions`, stacked on #95; the maintainer pushes it and opens the +PR. Merge order: #94, #95 (merge commits), then the GitHub Actions PR. ## Evidence -- All 256 relative links in `Docs`, `README.md`, and `CHANGELOG.md` resolve, - including 5 anchors checked against GitHub's slug rules; MarkdownLinkCheck - 0.2.0 (CI step 02) finds 0 broken links in `Docs` in Windows PowerShell - 5.1; markdownlint reports 0 issues in the changed pages. -- The documented manual install (`Unblock-File`, `Expand-Archive` into - `$env:ProgramFiles\WindowsPowerShell\Modules`) was tested with the 4.2.6 - zip in a `$env:TEMP` sandbox: the module imports under `RemoteSigned`. - `Expand-Archive` doesn't pass the download mark on; File Explorer's zip - handler does, and the import then fails. -- The wiki stopped at 4.2.4; the Gallery has 4.2.5 (2019-07-11) and 4.2.6 - (2019-07-12), whose notes were reconstructed from `4.2.4..4.2.6`. +- `Wiki.Tests.ps1` failed 25 of 25 before the exporter existed and passes + 25 of 25 in Windows PowerShell 5.1 and PowerShell 7.6.1. A negative + control (broken anchor, missing page, missing file) reports all three. +- A dry run against a clone of the live wiki adds 41 pages, changes Home + and How-to-install, and deletes the stale `Cmdlets.md` and + `Version-History.textile`; nothing was pushed. +- `Invoke-Tests.ps1`, as CI calls it, passed locally against a Release + build: Windows PowerShell 5.1 253 of 253; PowerShell 7 217 passed and 36 + skipped (`Get-Help -Online` runs only in Windows PowerShell). +- actionlint 1.7.12 reports nothing for `.github/workflows/ci.yml`. The + runner image `windows-2025` has Visual Studio 2022 MSBuild 17.14, NuGet, + the GitHub CLI, and PowerShell 7.6; `master` has no branch protection. - The local branch `ai/read-the-docs` keeps the dropped strict-build work (`886c874`, `325ec76`); delete it once it is no longer wanted. -- Work package 4 test first: against the previous build, all 10 new tests - failed for the expected reasons; after the change, the AppVeyor test - script run locally in Windows PowerShell 5.1 passed (228 of 228 Pester - tests), and the new tests pass in PowerShell 7.6.1 (10 of 10). -- The local Release build (`packages\`, `bin\`, `obj\`) is deleted after - the work; rebuild from the NuGet cache (`techContext.md`). ## Next step -After the maintainer pushes: read the AppVeyor results of both PRs through -the REST API. Work package 5 (code defects) starts only after the -maintainer's go-ahead. +After the maintainer pushes: read the AppVeyor results of #94 and #95 and +the first GitHub Actions run with `gh run view`. Work package 5 (code +defects) starts only after the maintainer's go-ahead. diff --git a/.memory-bank/decisions/0006-ci-checks-docs-against-build.md b/.memory-bank/decisions/0006-ci-checks-docs-against-build.md index 3451b82..26932fd 100644 --- a/.memory-bank/decisions/0006-ci-checks-docs-against-build.md +++ b/.memory-bank/decisions/0006-ci-checks-docs-against-build.md @@ -1,14 +1,15 @@ --- status: accepted date: 2026-10-02 -last-verified: 2026-10-02 +last-verified: 2026-10-04 owner: shared source: PR #91 (moved from systemPatterns.md) --- # Decision 6: CI checks the docs against a build of the source -- Choice: `appveyor.yml` builds `NTFSSecurity.csproj` and runs +- Choice: The CI workflow (`.github/workflows/ci.yml`, Decision 11; before + that `appveyor.yml`) builds `NTFSSecurity.csproj` and runs `Update-MarkdownHelp` against `NTFSSecurity\bin\Release`, not against the module from the PowerShell Gallery. - Rationale: Checking against the last release fails for every unreleased diff --git a/.memory-bank/decisions/0008-commit-generated-help.md b/.memory-bank/decisions/0008-commit-generated-help.md index 22c4d2c..70d5380 100644 --- a/.memory-bank/decisions/0008-commit-generated-help.md +++ b/.memory-bank/decisions/0008-commit-generated-help.md @@ -1,7 +1,7 @@ --- status: accepted date: 2026-10-02 -last-verified: 2026-10-02 +last-verified: 2026-10-04 owner: shared source: maintainer choice in work package 2 (option A) --- @@ -11,8 +11,9 @@ source: maintainer choice in work package 2 (option A) - Choice: `NTFSSecurity\en-US\NTFSSecurity.dll-Help.xml` is generated from `Docs/Cmdlets` with `New-ExternalHelp` (platyPS 0.14.2, Windows PowerShell 5.1) and committed. `NTFSSecurity.csproj` copies it to the - output as `Content`, the manifest `FileList` lists it, and `appveyor.yml` - regenerates it and fails on `git status --porcelain -- NTFSSecurity/en-US`. + output as `Content`, the manifest `FileList` lists it, and the CI workflow + (`.github/workflows/ci.yml`) regenerates it and fails on + `git status --porcelain -- NTFSSecurity/en-US`. - Rationale: Releases are built locally in Visual Studio (Debug, written to `C:\Program Files\WindowsPowerShell\Modules\NTFSSecurity`) and published by hand with `Publish-Module`. A committed file ships with every build diff --git a/.memory-bank/decisions/0009-docs-on-github.md b/.memory-bank/decisions/0009-docs-on-github.md index 58c2477..28b89c4 100644 --- a/.memory-bank/decisions/0009-docs-on-github.md +++ b/.memory-bank/decisions/0009-docs-on-github.md @@ -10,16 +10,17 @@ source: maintainer decision in work package 3 - Choice: The documentation lives in `Docs` and `README.md`, and GitHub renders it. There is no documentation site: the Read the Docs and MkDocs - configuration is removed. The GitHub wiki is retired: its version history - and installation steps moved to `Docs/Version-History.md` and - `Docs/README.md`, and the maintainer turns the wiki off. + configuration is removed. The wiki's version history and installation + steps moved to `Docs/Version-History.md` and `Docs/README.md`; the wiki + itself is now generated from `Docs` (Decision 11) instead of being turned + off. - Rationale: One source of truth that is versioned with the code, reviewed - in pull requests, and checked by AppVeyor. The Read the Docs project + in pull requests, and checked by CI. The Read the Docs project `ntfssecurity` belongs to `Sup3rlativ3` and points to a fork that no - longer exists; a wiki is edited outside pull requests and CI. + longer exists; a hand-written wiki is edited outside pull requests and CI. - Consequences: `online version` links stay on GitHub (Decision 4). Section anchors follow GitHub's rules. `Docs/index.md` became `Docs/README.md`, so that GitHub shows it when you open the `Docs` folder. - Rejected: taking over or re-importing the Read the Docs project with a strict MkDocs build (prepared on the local branch `ai/read-the-docs`, not - merged), and publishing `Docs` to the wiki. + merged). diff --git a/.memory-bank/decisions/0011-github-actions.md b/.memory-bank/decisions/0011-github-actions.md new file mode 100644 index 0000000..741309a --- /dev/null +++ b/.memory-bank/decisions/0011-github-actions.md @@ -0,0 +1,27 @@ +--- +status: accepted +date: 2026-10-04 +last-verified: 2026-10-04 +owner: shared +source: maintainer decision after work package 4 +--- + +# Decision 11: CI and the wiki run on GitHub Actions + +- Choice: `.github/workflows/ci.yml` replaces AppVeyor. On pull requests and + pushes to `master`, the `build` job (`windows-2025`) builds the module in + Release, checks the docs against the build, and runs the Pester tests in + Windows PowerShell 5.1 and PowerShell 7. The `wiki` job converts `Docs` + with `.github/scripts/Export-WikiContent.ps1` and publishes the wiki from + `master` with the built-in token; on pull requests it lists the pages that + would change. `appveyor.yml` is removed. +- Rationale: The maintainer wants a browsable wiki without a second, hand- + written copy of the docs (the 2018 wiki went stale), and one CI platform + instead of two. Public repositories get Windows runners for free, and the + checks appear on the pull request without a third-party service. +- Consequences: `Docs` stays the only source (Decision 9); the wiki is a + generated mirror, and edits made in the wiki are overwritten. Only the + `wiki` job has `contents: write`; actions are pinned by commit SHA. Test + results appear in the job summary and as the `test-results` artifact. +- Rejected: a hand-maintained wiki next to `Docs`, publishing the wiki by + hand at release time, and keeping AppVeyor for build and tests. diff --git a/.memory-bank/progress.md b/.memory-bank/progress.md index 097eb76..034bf86 100644 --- a/.memory-bank/progress.md +++ b/.memory-bank/progress.md @@ -13,8 +13,9 @@ PRs #91, #92, and #93 are merged. The documentation matches the cmdlets at `master`, and the module ships the help file generated from it (`en-US\NTFSSecurity.dll-Help.xml`). Otherwise the module source differs from the 4.2.6 release only by the `Remove-Item2 -PassThru` rename and -`CompatiblePSEditions`. Work packages 3 (`ai/docs-on-github`) and 4 -(`ai/manifest-version`, stacked on 3) are PR-ready locally. +`CompatiblePSEditions`. Open PRs: #94 (work package 3) and #95 (work package +4, stacked on #94); the move to GitHub Actions is PR-ready locally on +`ai/github-actions`, stacked on #95. ## Recent milestones @@ -46,6 +47,13 @@ from the 4.2.6 release only by the `Remove-Item2 -PassThru` rename and PowerShell 5.1, passed: no docs drift, 0 broken links, current help file, 228 of 228 Pester tests. `Test-ModuleManifest` passes in Windows PowerShell 5.1 and PowerShell 7.6.1. +- 2026-10-04: The maintainer opened #94 and #95, then chose to keep the wiki, + generated from `Docs`, and to move CI from AppVeyor to GitHub Actions in + one PR (Decision 11): committed locally on `ai/github-actions`, stacked on + #95. `Wiki.Tests.ps1` failed 25 of 25 before the exporter existed and + passes in both editions; `Invoke-Tests.ps1` passed locally in Windows + PowerShell 5.1 (253 of 253) and PowerShell 7 (217 passed, 36 skipped); + actionlint found nothing. ## Stable capabilities @@ -64,15 +72,15 @@ next package starts only after the maintainer's go-ahead. 1. Housekeeping: done (#92). 2. Ship help: done (#93). -3. Docs on GitHub (was: Read the Docs), PR-ready on `ai/docs-on-github`: - Read the Docs and MkDocs configuration removed, `Docs/index.md` renamed - to `Docs/README.md`, the wiki's version history and install steps moved - into `Docs` (with reconstructed notes for 4.2.5 and 4.2.6), contributor - guide updated. After the merge, the maintainer turns the wiki off, points - the notes of releases 4.2.4 and 4.2.6 to `Docs/Version-History.md`, and - may ask `Sup3rlativ3` to delete the Read the Docs project. -4. Manifest and version, PR-ready on `ai/manifest-version`, stacked on - `ai/docs-on-github` (merge that PR first with a merge commit). +3. Docs on GitHub (was: Read the Docs), PR #94: Read the Docs and MkDocs + configuration removed, `Docs/index.md` renamed to `Docs/README.md`, the + wiki's version history and install steps moved into `Docs` (with + reconstructed notes for 4.2.5 and 4.2.6), contributor guide updated. Keep + the wiki on: the GitHub Actions PR generates it from `Docs`, which also + keeps the release-note links to `wiki/Version-History` working. + `Sup3rlativ3` may be asked to delete the Read the Docs project. +4. Manifest and version, PR #95, stacked on #94 (merge #94 first with a + merge commit). Maintainer decisions: `PowerShellVersion` 5.1, `DotNetFrameworkVersion` 4.5.2, `RootModule`; version 5.0.0; `[Alias('PassThur')]` on `Remove-Item2 -PassThru`, listed under Deprecated; `NTFSSecurity`, @@ -84,12 +92,19 @@ next package starts only after the maintainer's go-ahead. the whole output folder (`.pdb`, `.xml`, `System.Management.Automation.dll`), and the removed `NTFSSecurity-Help.xml` would ship again. +4b. GitHub Actions for CI and the wiki (Decision 11), PR-ready on + `ai/github-actions`, stacked on #95 (merge #94 and #95 first with merge + commits). AppVeyor reports a failure on this PR because it removes + `appveyor.yml`; that's expected. After the merge: delete the AppVeyor + project `raandree/ntfssecurity` and revoke AppVeyor's GitHub access, + check the first wiki publication, and consider **Restrict editing to + collaborators only** for the wiki. 5. Code defects, listed below: `review: on`, one PR per group, regression test first. Pester 5 tests import `NTFSSecurity\bin\Release`, run in a - `$env:TEMP` sandbox and in `appveyor.yml` (pattern: + `$env:TEMP` sandbox and in the CI workflow (pattern: `Tests\Help.Tests.ps1`), and skip elevated cases when not elevated; - check whether AppVeyor runs elevated. Each fix updates its cmdlet page - and `CHANGELOG.md`. + check whether the GitHub Actions Windows runner runs elevated. Each fix + updates its cmdlet page and `CHANGELOG.md`. ### Code defects (work package 5) diff --git a/.memory-bank/projectbrief.md b/.memory-bank/projectbrief.md index e349e2b..83d42ff 100644 --- a/.memory-bank/projectbrief.md +++ b/.memory-bank/projectbrief.md @@ -38,7 +38,7 @@ Source: `README.md`, `NTFSSecurity/NTFSSecurity.psd1`. 1. Every exported cmdlet has an accurate platyPS page in `Docs/Cmdlets`. 2. `Update-MarkdownHelp` against the module produces no parameter drift - (the check in `appveyor.yml`). + (the check in `.github/workflows/ci.yml`). 3. The module imports in Windows PowerShell 5.1 and PowerShell 7 (`CompatiblePSEditions = 'Core', 'Desktop'`). 4. Further release criteria: To confirm. diff --git a/.memory-bank/systemPatterns.md b/.memory-bank/systemPatterns.md index 4394069..913773b 100644 --- a/.memory-bank/systemPatterns.md +++ b/.memory-bank/systemPatterns.md @@ -57,6 +57,7 @@ Each Decision record is a file in `decisions/`; read only the relevant ones. | 8 | [Commit the generated help file and check it in CI](decisions/0008-commit-generated-help.md) | | 9 | [Keep the documentation on GitHub](decisions/0009-docs-on-github.md) | | 10 | [One version for the manifest, assemblies, and changelog](decisions/0010-one-version.md) | +| 11 | [CI and the wiki run on GitHub Actions](decisions/0011-github-actions.md) | ## Patterns @@ -64,10 +65,16 @@ Each Decision record is a file in `decisions/`; read only the relevant ones. - Run platyPS in Windows PowerShell 5.1 against a module build; a copy of `Docs/Cmdlets` must round-trip through `Update-MarkdownHelp` unchanged. -- GitHub renders the docs (Decision 9). AppVeyor's link check covers only - relative links in `Docs` and ignores anchors, so check anchors against - GitHub's slug rules (lowercase, punctuation removed, spaces to hyphens) - and the links in `README.md` and `CHANGELOG.md` separately. +- GitHub renders the docs (Decision 9), and CI publishes them to the wiki + (Decision 11). The MarkdownLinkCheck step covers only relative links in + `Docs` and ignores anchors; `Tests\Wiki.Tests.ps1` checks every link of + the generated wiki, including anchors (GitHub's slug rules: lowercase, + punctuation removed, spaces to hyphens). Check the links in `README.md` + and `CHANGELOG.md` separately. +- The wiki is generated: edit `Docs`, never the wiki. + `Export-WikiContent.ps1` names a page after its file (`Docs/README.md` + becomes Home), rewrites links, and builds the sidebar from the cmdlet + groups of `Docs/README.md`; a cmdlet missing there fails `Wiki.Tests.ps1`. - platyPS rewrites non-ASCII punctuation such as em dashes; keep cmdlet pages ASCII-only. - In cmdlet pages, end a sentence with a link: platyPS renders a link as @@ -78,15 +85,16 @@ Each Decision record is a file in `decisions/`; read only the relevant ones. ### Testing the module - Pester 5 tests in `Tests/*.Tests.ps1` import - `NTFSSecurity\bin\Release\NTFSSecurity.psd1` and run in Windows - PowerShell 5.1 (as in AppVeyor); PowerShell 7 runs are a secondary check. + `NTFSSecurity\bin\Release\NTFSSecurity.psd1`; CI runs them in Windows + PowerShell 5.1 and in PowerShell 7 (Decision 11). - `Get-Help -Online` is tested with the internal test hook `BypassOnlineHelpRetrieval`, which returns the URI instead of opening a browser. In PowerShell 7 the hook also skips the help file, so that test - runs only in Windows PowerShell; PowerShell 7 resolves the same URI. -- Report Pester 5 results to AppVeyor through the build worker API, not as - an uploaded NUnit file: the NUnit import files each test under every - enclosing block (870 entries for 218 tests in build 54834154). + runs only in Windows PowerShell (36 skipped tests in PowerShell 7); + PowerShell 7 resolves the same URI. +- `.github/scripts/Invoke-Tests.ps1` runs Pester for CI: the counts and the + failed tests go to the job summary, the NUnit file to the `test-results` + artifact, and it fails on failed test files too (`Result -ne 'Passed'`). - `Tests\Manifest.Tests.ps1` checks the built manifest: `Test-ModuleManifest` without errors or warnings, exactly 36 cmdlets, and one version (Decision 10). Add a new cmdlet to `CmdletsToExport` and to the expected diff --git a/.memory-bank/techContext.md b/.memory-bank/techContext.md index 76459c5..07c4c9e 100644 --- a/.memory-bank/techContext.md +++ b/.memory-bank/techContext.md @@ -19,15 +19,17 @@ source: repository evidence - 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; no - documentation site and no wiki (Decision 9). Cmdlet pages are platyPS - 0.14 markdown (schema 2.0.0) in `Docs/Cmdlets`. +- 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`. - Help: `NTFSSecurity\en-US\NTFSSecurity.dll-Help.xml`, generated from `Docs/Cmdlets` and committed (Decision 8). -- Tests: Pester 5 tests in `Tests` against the Release build: - `Help.Tests.ps1` (help of every cmdlet), `Manifest.Tests.ps1` (manifest - and versions, Decision 10), and `Remove-Item2.Tests.ps1` (`-PassThur` - alias). +- 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). ## Environment @@ -79,12 +81,13 @@ source: repository evidence (`.pdb`, `AlphaFS.xml`, 7 MB `System.Management.Automation.dll`), and the published manifest differs from the tag only by `ModuleVersion` (tags carry the previous version). GitHub releases attach `NTFSSecurity.zip`. -- CI: AppVeyor project `raandree/ntfssecurity` builds branches and pull - requests. The Read the Docs project `ntfssecurity` (maintainer - `Sup3rlativ3`) and a second AppVeyor project are attached to the fork - `Sup3rlativ3/NTFSSecurity`, which no longer exists (GitHub 404, - 2026-10-04). That site still serves pages from 2020 and isn't used - (Decision 9). +- CI: GitHub Actions on pull requests and pushes to `master` (Decision 11). + The AppVeyor project `raandree/ntfssecurity` builds until the maintainer + deletes it after the GitHub Actions PR is merged. The Read the Docs + project `ntfssecurity` (maintainer `Sup3rlativ3`) and a second AppVeyor + project are attached to the fork `Sup3rlativ3/NTFSSecurity`, which no + longer exists (GitHub 404, 2026-10-04). That site still serves pages from + 2020 and isn't used (Decision 9). - `Get-FileHash2` fails in PowerShell 7; all other cmdlets passed a smoke test in PowerShell 7.6. - `CHANGELOG.md` lists user-visible changes only; CI and build-only changes @@ -102,20 +105,28 @@ source: repository evidence ## Validation -- CI (`appveyor.yml`, image Visual Studio 2022): restore `packages.config` - per project plus `Microsoft.NETFramework.ReferenceAssemblies.net452` - 1.0.3, build `NTFSSecurity.csproj` in Release with - `TargetFrameworkRootPath`/`FrameworkPathOverride`, import - `NTFSSecurity\bin\Release\NTFSSecurity.psd1`, then: 01 run - `Update-MarkdownHelp` and fail on `git diff -- Docs/Cmdlets`; 02 +- 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 `Get-MarkdownLink -BrokenOnly`; 03 regenerate the help file and fail on - `git status --porcelain -- NTFSSecurity/en-US`; 04 Pester 5.7.1 on - `Tests`, each result reported once through the build worker API - (`POST $env:APPVEYOR_API_URL/api/tests/batch`). -- AppVeyor REST API (public, no token): build + `git status --porcelain -- NTFSSecurity/en-US`; 04 `Invoke-Tests.ps1` in + Windows PowerShell 5.1 and in PowerShell 7. Job `wiki` on `ubuntu-latest` + clones the wiki (`gh auth setup-git` with the built-in token), runs + `Export-WikiContent.ps1`, lists the changed pages in the job summary, and + publishes from `master` only. Actions are pinned by commit SHA: + `actions/checkout` v7.0.1, `actions/upload-artifact` v7.0.1. +- Read CI runs with `gh run list --repo raandree/NTFSSecurity --workflow + ci.yml` and `gh run view --log-failed` (read-only). While AppVeyor + still builds: `api/projects/raandree/ntfssecurity/history`, build `api/projects/raandree/ntfssecurity/builds/`, job log - `api/buildjobs//log` (bytes; decode as UTF-8), and test list - `api/buildjobs//tests`. + `api/buildjobs//log` (public, no token). +- 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. - Run platyPS in Windows PowerShell 5.1 to avoid PowerShell 7.4+ `-ProgressAction` noise. - Placeholder check: no `{{` left in `Docs/Cmdlets/*.md`. @@ -127,8 +138,8 @@ source: repository evidence path. A run without `bin\Release\en-US` must fail. - Markdown lint: `npx markdownlint-cli2` with `MD013` limited to prose (tables, code, and headings excluded) on the conceptual pages. -- YAML: `ConvertFrom-Yaml` (powershell-yaml) on `appveyor.yml`. -- Links: AppVeyor step 02 (MarkdownLinkCheck 0.2.0) checks only relative - links in `Docs`; it strips anchors and skips absolute URLs. Check anchors - against GitHub's heading slugs, and the links in `README.md` and - `CHANGELOG.md`, with a script. +- 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.