From 3b89661be47776c7bd43f5cd0a05eb7d488efbd0 Mon Sep 17 00:00:00 2001 From: Raimund Andree Date: Tue, 20 Oct 2026 12:50:23 +0000 Subject: [PATCH] docs(memory-bank): record the published rc8, its acceptance, and the stable path rc8 is published (tag c719197, Gallery 2026-10-20 10:40:58Z) and accepted: the identity check, three matrix cells 1,374/0/12, the suite in 24 runs, the first lab 245/0/1 per edition, every end state CLEAN. The Memory Bank now says so in the active context, the progress log, Decision 21, and the deployment notes (with the published hashes, the chain script that ran the acceptance in 68 minutes, and the lesson that the saved lab machines restore cleanly in two waves). The tech context points to where the helpers live, because TEMP was cleaned once, and says that the list of published versions ends at rc7. The debugging insights get the pattern of a swallowed initialization error, its seam-free trigger (a computer name of 32,718 characters), and the warning that came before the error. The older state paragraphs of the active context shrink to make room. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: AI Assistant --- .memory-bank/activeContext.md | 118 +++++++++--------- .memory-bank/debugging-insights.md | 29 ++++- .../0021-quality-gate-before-5.0.0.md | 18 ++- .memory-bank/deployment-notes.md | 85 +++++++------ .memory-bank/progress.md | 51 +++++--- .memory-bank/techContext.md | 19 +-- 6 files changed, 192 insertions(+), 128 deletions(-) diff --git a/.memory-bank/activeContext.md b/.memory-bank/activeContext.md index d5351dd..c0ca8f4 100644 --- a/.memory-bank/activeContext.md +++ b/.memory-bank/activeContext.md @@ -1,6 +1,6 @@ --- status: current -last-verified: 2026-10-19 +last-verified: 2026-10-20 owner: active-agent source: current task evidence --- @@ -9,41 +9,33 @@ source: current task evidence ## Current focus -State at 2026-10-19 12:30 UTC: Handoff 5 is integrated. The maintainer merged -pull request #125 (`ai/coverage-unknowns`, `17729d7`) and #124 (Dependabot: the -pinned `upload-artifact` and `download-artifact` actions, `354ce04`) into -`master`; CI is green on both. rc7 (`fa0701b`) is still the newest release and -the manifest still says `rc7`, but `master` is ahead of it by seven product -files (the culture comparisons of an identity and of `Get-ChildItem2 -Filter`, -and the piped `AppliesTo`, Decision 26). The stable build is accepted through -the last prerelease, so rc8 is mandatory. On 2026-10-19 the maintainer decided -the path to stable (Decision 21, "Closing the gate"): rc8 carries the fix of -the false "no access" of `Get-NTFSEffectiveAccess`; the hard-link names stay a -known limit in the release notes; the plain test gaps are closed in a -tests-only round until 2026-11-02; #34 waits for a tester until 2026-11-02; -Decisions 22 and 24 are accepted (23: option 3). His #34 follow-up went up on -2026-10-19 at 12:09 UTC; nobody has replied. Next: the fix and the test round. +State at 2026-10-20 12:40 UTC: 5.0.0-rc8 is published and accepted. The +maintainer merged #126 (the decisions of 2026-10-19) and #127 (`c719197`: the +fix of the false "no access" of `Get-NTFSEffectiveAccess`, the known limit of +the hard-link cmdlets in the pages and the CHANGELOG, and the label `rc8`) and +tagged `5.0.0-rc8` at about 10:28Z. The CI run `39408140862` passed, and the +Gallery has rc8 since 10:40:58Z, GitHub since 10:41:07Z. The identity check +passed. The lab acceptance of the published bytes passed in one detached driver +(68 minutes, 10:38 to 11:47Z): three cells 1,374/0/12, the suite in 24 runs on +six machine classes, the first lab 245/0/1 per edition, every end state CLEAN +(record `Tests/Lab/Acceptance-2026-10-20-published-rc8.md`, #128). The boundary +of the new error, a computer name of 32,718 characters, holds on Server 2019, +2022, 2025, and Windows 11 26H1. Open before the stable pull request: the +tests-only round for the plain gaps (until 2026-11-02), the maintainer's #34 +decision on that date (no reply to his follow-up of 2026-10-19), and his check +of `PSGALLERY_API_KEY`. The stable build is new bytes that no lab has run; the +procedure accepts the last prerelease, so the stable change touches only the +label, the CHANGELOG, and `$publishedVersions`. Any other product change needs +rc9 and the same acceptance, about 70 minutes with the chain script. -State at 2026-10-10 15:45 UTC: the maintainer integrated the release-gate stack -into `master` (`6dd799f`, CI green): #116 (rc7, `8a6be9f`), #120 -(`bdb9981`; it replaced #117, which GitHub closed unmerged when the branch -deletion after #116 removed its base, see Decision 15), #118 (`03bef2c`, -handoff 1, the paths), #119 (`fa0701b`, handoff 2, the operating-system -matrix), and #121 (the Memory Bank). He tagged `fa0701b` as `5.0.0-rc7` at about -12:20Z, and rc7 is published (Gallery 12:30:57Z, GitHub 12:31:09Z); 4.2.6 stays -the stable Gallery version. rc7 contains the Phase 2 behavior changes, the path -tests and fixes, and the three module fixes of the matrix (`962887a`, -`fdd7a8b`). The published rc7 passed its lab acceptance (gate 3) on the same -day, in the matrix and in the first lab, with the counts of the final local -candidate (record `Tests/Lab/Acceptance-2026-10-10-published-rc7.md`). Stable -5.0.0 stays gated (Decision 21). - -The maintainer asked on 2026-10-09 at 21:21 UTC to continue with the -release-gate handoffs and to decide and report later. The agent's decisions are -D1 to D47 in `decisions-night-2026-10-09.md` of the session files. Decisions -22 (Phase 2), 23 (the #34 dossier), and 24 (the matrix) are proposed: the agent -confirmed Decision 22 under the delegation, and neither that nor any risk -acceptance is the maintainer's. +State at 2026-10-10: the maintainer integrated the release-gate stack into +`master` (#116, #120, #118, #119, #121; `fa0701b`, CI green; GitHub closed #117 +unmerged when the branch deletion removed its base, Decision 15) and tagged rc7 +(Gallery 12:30:57Z). The published rc7 passed its lab acceptance the same day +(record `Tests/Lab/Acceptance-2026-10-10-published-rc7.md`). The agent's +delegated decisions of 2026-10-09 and 10 are D1 to D47 in +`decisions-night-2026-10-09.md` of the session files; the maintainer accepted +Decisions 22 and 24 on 2026-10-19 and decides 23 on 2026-11-02. ## Evidence @@ -141,6 +133,15 @@ acceptance is the maintainer's. cells did nothing: a `powershell.exe` that PowerShell 7 starts inherits its `PSModulePath` (lab README). Server Core, ARM64, a localized system, and non-Windows servers are out of scope (Decision 25). +- rc8, 2026-10-20: fix (b) test-first on `ai/fix-effective-access-init-errors`. + A `-ServerName` of 40,000 characters gave `Synchronize` and no error before + and gives an error now; two tests were red and are green in four + configurations, and the suite has 1,494 cases per configuration, 0 failed. + The independent review (`code-review`) found one Minor, the warning "based on + this computer" before the error (fixed, with tests), and three Nits. The + acceptance evidence is `rc8-published` in the session folder + `816cf47d-2f80-4eba-8ac9-41702c49560b\files\qg-unknowns` (430 files, with a + manifest); the published hashes are in the deployment notes. - Raw evidence is outside git: the session folder `4b12e2f4-d4c7-4a5d-883a-ddb7421c4848\files` (`qg-paths`, the matrix runs, the night log) and @@ -148,19 +149,17 @@ acceptance is the maintainer's. ## Next step -1. Gate 3 is done for the published rc7 (the record above). rc8 needs the same - acceptance (the matrix cells, the first lab, the suite on the file servers - and the client); the release procedure accepts the last prerelease for the - stable build (Decision 21, "Closing the gate"). - Open: keep or replace the matrix VMs (about 60 GB) and the evaluation client - (it shuts down every hour; `OSWin11E` is off), and a domain cell for Windows - 11 26H1, whose client loses the secure channel to the Server 2025 domain - controller. A kit script for the whole sequence would make the repetition - one command (the driver is `Run-Gate3.ps1` in the evidence; not in the kit). -2. The rc8 pull request adds `5.0.0-rc7` to `$publishedVersions` (the list ends - at rc6; adding it earlier fails the reuse test, deployment notes), and the - stable pull request adds `5.0.0-rc8`. Every release step is the - maintainer's. +1. Gate 3 is done for the published rc7 and rc8 (the records). The stable build + is accepted through rc8 (Decision 21, "Closing the gate"). Open: keep or + replace the matrix VMs (about 60 GB, saved between runs) and the evaluation + client (it shuts down every hour; `OSWin11E` is off), and a domain cell for + Windows 11 26H1, whose client loses the secure channel to the Server 2025 + domain controller. `Chain-Published.ps1` in the session files runs the whole + sequence (not in the kit; deployment notes). +2. The stable pull request: no `Prerelease`, `## [5.0.0] - ` with an empty + `[Unreleased]` and the links, and `5.0.0-rc8` in `$publishedVersions` (the + list ends at rc7 now). The maintainer checks the expiry of + `PSGALLERY_API_KEY` first, merges, and tags. Every release step is his. 3. He decides the other open items of the paths report: `FileSecurity` conversions, `RemoveAll` account filters, lazy path overloads, abandoned `PrivilegeEnabler`, dot patterns of `Get-ChildItem2 -Filter`, the 17 @@ -172,20 +171,21 @@ acceptance is the maintainer's. chooses between waiting longer and accepting the untested risk with a release-note caveat. No agent can accept it. 5. Of the two LOW findings of the security review (record, Limits), the - swallowed initialization errors of `GetEffectiveAccess` (a false "no - access" instead of an error on an OS that refuses at initialization) are - fixed in rc8 (decided 2026-10-19): record the exceptions in - `authzException`, with a regression test and a check of "the error stays" in - the help and CHANGELOG. He still decides the other: the ACL of the stage + swallowed initialization errors of `GetEffectiveAccess` are fixed in rc8 + (`25fe775`, #127): an error instead of a false "no access", and the warning + only with a result. He still decides the other: the ACL of the stage folders under `C:\` in the lab kit (they inherit Authenticated Users: Modify; protecting them is a design change of the controller and needs a new acceptance). The help could also say that a local standard user who asks about a domain account still gets "Access is denied". 6. Handoff 5 is done and merged (Evidence). Decided on 2026-10-19 (Decision - 21): the hard-link names under another root (a defect with a reproduction) - stay a known limit that the release notes list; the plain test items (68 - `budget` mentions in the 57 sets that are not closed) are closed in a - tests-only round until 2026-11-02. Still his: the silent default scope for a - piped `AppliesTo` that PowerShell cannot convert (a design change), the 8 - getters of pipeline parameters, and the audit paths. + 21): the hard-link names under another root stay a known limit; the pages + and the CHANGELOG say so since rc8. The plain test items (68 `budget` + mentions in the 57 sets that are not closed) are closed in a tests-only + round until 2026-11-02: four implementers, one per `ParameterSets.*` test + file, work in worktrees from `master`; their commits go into one branch + with the report and the ParameterSets table updated, and what is left is + listed. A defect that a test finds needs his decision and rc9. Still his: the + silent default scope for a piped `AppliesTo` that PowerShell cannot convert + (a design change), the 8 getters of pipeline parameters, and the audit paths. 7. Do not release stable 5.0.0 or equate a percentage with gate closure. diff --git a/.memory-bank/debugging-insights.md b/.memory-bank/debugging-insights.md index eab0c73..8fa93c5 100644 --- a/.memory-bank/debugging-insights.md +++ b/.memory-bank/debugging-insights.md @@ -1,8 +1,8 @@ --- status: current -last-verified: 2026-10-10 +last-verified: 2026-10-20 owner: software-engineer -source: Handoff 5 (the coverage unknowns): probes, red and green runs, and the independent review +source: Handoff 5 (the coverage unknowns) and the rc8 fix: probes, red and green runs, and the independent reviews --- # Debugging insights @@ -90,3 +90,28 @@ fails without it (Decision 16). `AppliesTo` was optional; `4b1abc9` made it mandatory in the Simple sets, so the default no longer decided a named call. Build a model of the parameter sets before you change an attribute, and test the real cmdlet afterwards. + +## A swallowed initialization error (`catch { }`) + +- `Win32.GetEffectiveAccess` ran the start of the authorization manager inside + an outer `catch { }`. A refusal there gave no exception and no rights, so the + cmdlet wrote an entry with `Synchronize` only (.NET adds it to every allow + rule) and no error: a false "no access". The security review of the matrix + found it (LOW); rc8 fixed it (`25fe775`) with one `try`/`catch` that records + every exception in `authzException`. +- A trigger without a test seam: `Get-NTFSEffectiveAccess -ServerName ('a' * + 40000)`. `AuthzInitializeRemoteResourceManager` fails with error 14 for a name + of 32,718 characters or more, and with 1722 (RPC server unavailable, which + keeps the documented fallback and its warning) for a shorter one. Server + 2019, 2022, 2025, and Windows 11 26H1 agree (a probe in the rc8 record). Bisect + the length of an input before you add a seam. +- The test accepts both outcomes (an error, or the result of this computer) and + fails for no access without an error: the red run said `Expected FullControl, + but got Synchronize`. A system-dependent boundary must not fail the test where + a system answers like for a short name. +- The review found a second flaw in the same output: the warning "the result is + based on this computer" came before an error that left no result. A warning + that qualifies a result belongs with the result (`!FromRemote && + !OperationFailed`); the tests assert its absence next to the error. +- A word in the CHANGELOG is a claim: "an overlong name" suggested 256 + characters, where 1722 still falls back. The entry names the probed length. diff --git a/.memory-bank/decisions/0021-quality-gate-before-5.0.0.md b/.memory-bank/decisions/0021-quality-gate-before-5.0.0.md index caa7106..5897cc8 100644 --- a/.memory-bank/decisions/0021-quality-gate-before-5.0.0.md +++ b/.memory-bank/decisions/0021-quality-gate-before-5.0.0.md @@ -1,9 +1,9 @@ --- status: accepted date: 2026-10-08 -last-verified: 2026-10-19 +last-verified: 2026-10-20 owner: shared -source: maintainer decision of 2026-10-08; closing choices of 2026-10-19 +source: maintainer decision of 2026-10-08; closing choices of 2026-10-19; status of 2026-10-20 --- # Decision 21: A quality gate before 5.0.0 @@ -69,3 +69,17 @@ maintainer answered five questions, each time with the recommended option: `$publishedVersions`), the tag. The maintainer checks the expiry of `PSGALLERY_API_KEY` before the stable tag. After 5.0.0 the repository is archived (Decision 18), so what ships stays. + +### Status on 2026-10-20 + +rc8 is published (tag `c719197`, Gallery 10:40:58Z) and accepted: the identity +check, three matrix cells 1,374/0/12, the suite in 24 runs, the first lab +245/0/1 per edition, every end state CLEAN (record +`Tests/Lab/Acceptance-2026-10-20-published-rc8.md`). The fix of the swallowed +initialization errors went in with a review (one Minor, the warning before the +error, fixed), and the hard-link known limit is in the pages and the +CHANGELOG. The exit criterion "matrix on published bytes" is met for rc8; open +are the tests-only round (until 2026-11-02), #34 (2026-11-02), and the key +check. The stable build is new bytes: the stable change may touch only the +label, the CHANGELOG, and `$publishedVersions`; any other product change needs +rc9 and the same acceptance. diff --git a/.memory-bank/deployment-notes.md b/.memory-bank/deployment-notes.md index a3cb7aa..dbb202e 100644 --- a/.memory-bank/deployment-notes.md +++ b/.memory-bank/deployment-notes.md @@ -1,32 +1,36 @@ --- status: current -last-verified: 2026-10-10 +last-verified: 2026-10-20 owner: software-engineer source: release gates of 5.0.0 (lab acceptance, OS matrix, publication plan), repository evidence --- # Deployment notes -## Publish the next prerelease (rc7 is published) +## Publish the next prerelease (rc8 is published) -State on 2026-10-10 at 12:40 UTC: rc7 is published. The whole stack is merged -into `master` (`fa0701b`, the tree of `2b8643f`): #116 (rc7, `8a6be9f`, 09:10Z), -#120 (`bdb9981`, 10:50Z), #118 (`03bef2c`, 11:12Z), and #119 (`fa0701b`, -11:28Z). #117 had been closed without a merge at 09:10:16Z, when the branch -deletion after the merge of #116 removed its base branch (Decision 15, -operating rule); #120, a new pull request from its head `f11ff41`, replaced -it. The CI run on `master` at `fa0701b` passed at 11:40Z. The maintainer pushed -the lightweight tag `5.0.0-rc7` at `fa0701b` at about 12:20Z. The CI run -`38051611526` of the tag passed: Build and test, then Release at 12:31:34Z -without an approval step, because the `powershell-gallery` environment has no -required reviewer. The Gallery has rc7 since 12:30:57Z, GitHub since 12:31:09Z. +State on 2026-10-20 at 12:40 UTC: rc8 is published. #127 (`c719197`, 10:27:39Z: +the fix of `Get-NTFSEffectiveAccess`, the hard-link known limit, the label +`rc8`) and #126 are merged. The maintainer pushed the lightweight tag +`5.0.0-rc8` at `c719197` at about 10:28Z. The CI run `39408140862` of the tag +passed: Build and test, then Release without an approval step, because the +`powershell-gallery` environment has no required reviewer. The Gallery has rc8 +since 10:40:58Z, GitHub since 10:41:07Z, 13 minutes after the tag. +`Test-PublishedRelease.ps1 -Version 5.0.0-rc8` verified the identity at 10:42Z: +the tag commit is on `master`, the Gallery's SHA-512 matches the downloaded +nupkg, the 11 module files are byte-identical in the nupkg and the GitHub zip, +and the manifest says `5.0.0-rc8`. The published bytes of rc8: -`Test-PublishedRelease.ps1 -Version 5.0.0-rc7` verified the published identity -at 12:33Z: the tag commit is `fa0701b` on `master`, the Gallery's SHA-512 -matches the downloaded nupkg, the 11 module files are byte-identical in the -nupkg and the GitHub zip, and the manifest says `5.0.0-rc7`. The evidence is -outside git, in `published-rc7` of the session folder -`4b12e2f4-d4c7-4a5d-883a-ddb7421c4848\files`. The published bytes: +- `NTFSSecurity.dll` SHA-256 + `D8CB4015BF25379C77A645F82EEECA54F86219F228A5029E32E4D52FBD016E79` +- `NTFSSecurity.zip` SHA-256 + `288152E20F8CFB1B029BAC055345339970C65BD57C8BA814C2616C32D9F812BC` +- nupkg SHA-256 + `EA90E16F2152016E97BFB3D2413D29F8944704E9D4FBD5101D0A263841BC0510` + +rc7 was published on 2026-10-10 (tag `fa0701b`, CI run `38051611526`, Gallery +12:30:57Z, no approval step after the same stack of merges, see `progress.md`). +Its bytes: - `NTFSSecurity.dll` SHA-256 `D3B7CBE362C37D1016559669CB2EFF5034A6945CA1B03DDB49F1361363D203A7` @@ -38,23 +42,16 @@ outside git, in `published-rc7` of the session folder The release notes of a prerelease are the `[Unreleased]` section of `CHANGELOG.md`. -rc7 contains everything that is merged: the behavior changes of Phase 2 -(#116), the quality-gate paths (#120, #118), and the three module fixes of -the matrix (#119, in two commits: `962887a` holds two, `fdd7a8b` one; they -don't revert separately, because they conflict in `Security2/Win32/Lib.cs` and -`CHANGELOG.md`), with the kit, the controller changes, and the record of the -operating-system matrix (Decision 24). - -1. Accept the published package (next section): done for rc7 on 2026-10-10, - with the identity check, the three cells, the suite on six machine classes, - and the first lab (record - `Tests/Lab/Acceptance-2026-10-10-published-rc7.md`). - A changed binary (rc8, or the build of 5.0.0) needs the same cells again. -2. Add `5.0.0-rc7` to `$publishedVersions` in `Tests/Repository.Tests.ps1` - only in the change that sets the next version (rc8 or 5.0.0), as +1. Accept the published package (next section): done for rc7 (2026-10-10) and + rc8 (2026-10-20); the records are `Tests/Lab/Acceptance-2026-10-10-published-rc7.md` + and `Tests/Lab/Acceptance-2026-10-20-published-rc8.md`. A changed binary (rc9, + or a build of 5.0.0 that differs by more than the label) needs the same + cells again. +2. The stable change adds `5.0.0-rc8` to `$publishedVersions` in + `Tests/Repository.Tests.ps1` (the list ends at rc7), as `Docs/Contributing/05-Releasing.md` says. The test "Should not reuse a version that the PowerShell Gallery already has" fails when the list holds - the version of the manifest, which still says rc7. + the version of the manifest. ## Accept a published package @@ -79,15 +76,22 @@ Local `-ModulePath` runs are validation; the gate needs the published bytes. the final local candidate through the same stages (readiness, controller, `Validate-LabResults.ps1`, snapshot, `-RemoveFixture`, `Test-MatrixCleanup.ps1` with the four domain controllers and both machines) in one detached driver. - The published rc7 ran in one detached driver in this order (61 minutes, - 14:29 to 15:30Z, `OSWin11E` started 14:25:49Z): the cells, then + Published rc7 and rc8 ran in one detached driver each: the cells, then `Run-MatrixLocalSuite.ps1 -ModulePath \NTFSSecurity of the identity check> -Mode Elevated,Basic` on the host and five machines (one every 75 seconds: AutomatedLab imports one lab at a time), then `Test-MatrixCleanup.ps1 -Mode Verify` (CLEAN at the first check, so the cells first and the suites after them leave nothing to repair), then the - first lab. The driver is `Run-Gate3.ps1` in the evidence folder `gate3-rc7` - of the session files; it only calls these scripts and isn't in the kit. + first lab. rc8 used `Chain-Published.ps1 -Version 5.0.0-rc8 -Tag rc8 + -Evidence ` (session files `qg-unknowns\scripts`, not in the kit; + 68 minutes, 10:38 to 11:47Z). It restores the saved machines of both labs + (`Start-LabMachines.ps1`: domain controllers first, a minute for the + directory services), waits for the version on the Gallery, freezes the files + of the tag in a worktree, runs the identity check and the readiness checks, + starts `OSWin11E` right before the cells, and ends with the first lab + (`Run-LiveAcceptancePublished.ps1`, `-Version` per edition) and a read-only + check of both labs. Launch it after the tag, arm a heartbeat, and save the + machines again when it is done. rc7 ran the older `Run-Gate3.ps1`. 3. Remove the fixture and check the end state independently with `Test-MatrixCleanup.ps1`, which takes the lab name and the machine names (`-LabName WindowsAccessControlLab -DomainController F1ADC1, F1BDC1, F2DC1, @@ -181,3 +185,8 @@ Local `-ModulePath` runs are validation; the gate needs the published bytes. - Restart the evaluation client (`OSWin11E`) right before a sequence or a suite, not before several: it shuts down an hour after each start. The restart takes about two and a half minutes and may need the repair of the secure channel. +- The lab VMs stay saved (`Save-VM`) between runs. After nine days, a restore in + two waves (the domain controllers, a minute for the directory services, then + the other machines) passed the readiness checks of both labs at the first + attempt, about five minutes after the start. `Start-LabMachines.ps1` restores + them, and `Save-VM` puts them back after the run. diff --git a/.memory-bank/progress.md b/.memory-bank/progress.md index 965126b..a2791fc 100644 --- a/.memory-bank/progress.md +++ b/.memory-bank/progress.md @@ -1,6 +1,6 @@ --- status: current -last-verified: 2026-10-19 +last-verified: 2026-10-20 owner: active-agent source: repository and validation evidence --- @@ -9,16 +9,17 @@ source: repository and validation evidence ## Current status -5.0.0-rc7 is published on the Gallery and GitHub (2026-10-10, tag at -`fa0701b`); rc6 is the one before it. On 2026-10-10 the maintainer merged the -whole stack into `master` (CI green): #116 (rc7), #120 (it replaced -#117, which GitHub closed unmerged when the branch deletion after #116 removed -its base), #118 (the quality-gate paths), #119 (the operating-system matrix -with three module fixes, Decision 24), and #121 (the Memory Bank). The -published rc7 passed its lab acceptance (gate 3) in the matrix and in the first -lab. On 2026-10-19 he merged #125 (Handoff 5) and #124 (Dependabot), and decided -the path to stable (Decision 21, "Closing the gate"). Stable Gallery version: -4.2.6. +5.0.0-rc8 is published on the Gallery and GitHub (2026-10-20, tag at +`c719197`); rc7 (2026-10-10, tag at `fa0701b`) is the one before it. On +2026-10-10 the maintainer merged the whole stack into `master` (CI green): #116 +(rc7), #120 (it replaced #117, which GitHub closed unmerged when the branch +deletion after #116 removed its base), #118 (the quality-gate paths), #119 (the +operating-system matrix with three module fixes, Decision 24), and #121 (the +Memory Bank). On 2026-10-19 he merged #125 (Handoff 5) and #124 (Dependabot) and +decided the path to stable (Decision 21, "Closing the gate"); on 2026-10-20 he +merged #126 (the decisions) and #127 (the rc8 fix and label) and tagged rc8. +The published rc7 and rc8 passed their lab acceptance in the matrix and in the +first lab. Stable Gallery version: 4.2.6. After 5.0.0, archive in favor of WindowsAccessControl (Decision 18). ## Recent milestones @@ -117,6 +118,19 @@ After 5.0.0, archive in favor of WindowsAccessControl (Decision 18). accepted, 23 option 3 with the decision date 2026-11-02 (the #34 follow-up went up at 12:09 UTC), rc8 with the fix of `GetEffectiveAccess`, and a tests-only round for the plain test gaps until 2026-11-02. +- 2026-10-20: rc8. The maintainer merged #126 and #127 (`c719197`: the fix of + the swallowed initialization errors of `GetEffectiveAccess`, the known limit + of the hard-link cmdlets in the pages and the CHANGELOG, label `rc8`) and + tagged `5.0.0-rc8` at about 10:28Z; Gallery 10:40:58Z, GitHub 10:41:07Z, no + approval step. The identity check passed (10:42Z). The lab acceptance of the + published bytes ran in one detached chain (68 minutes, 10:38 to 11:47Z, the + saved machines restored first): three cells 1,374 passed, 0 failed, 12 + skipped; the suite in 24 runs without a failure (1,191 cases per + configuration); the first lab 245/0/1 per edition; every end state CLEAN. A + probe on four operating systems showed the boundary of the new error (a name + of 32,718 characters). Record + `Tests/Lab/Acceptance-2026-10-20-published-rc8.md` (#128). The tests-only + round for the plain gaps started the same day. ## Stable capabilities @@ -129,12 +143,12 @@ After 5.0.0, archive in favor of WindowsAccessControl (Decision 18). ## Open work -1. Decision 21 gate: the published rc7 is accepted in the matrix and the first - lab (record); rc8 needs the same acceptance, and stable follows it - (Decision 21, "Closing the gate"). Do not release 5.0.0 until the other - gates close. Release steps: +1. Decision 21 gate: the published rc7 and rc8 are accepted in the matrix and + the first lab (records); stable follows rc8 (Decision 21, "Closing the + gate"). Do not release 5.0.0 until the other gates close: the tests-only + round, #34 on 2026-11-02, and the key check. Release steps: `Docs/Contributing/05-Releasing.md`; remove the prerelease label, date - `[5.0.0]`, add the last prerelease to `$publishedVersions` (never the + `[5.0.0]`, add the last prerelease (rc8) to `$publishedVersions` (never the version of the manifest), tag through CI. 2. Issues: #110's seven items were addressed by rc6, but #115 deliberately used no closing keyword. #34 stays open for non-Windows owner feedback @@ -170,8 +184,9 @@ After 5.0.0, archive in favor of WindowsAccessControl (Decision 18). missing, different, or unverifiable outcomes. The agent published nothing, so the recovery has never run against the Gallery. 9. Operating-system matrix (Decision 24, accepted 2026-10-19): the lab and the - cells exist and the published rc7 passes them (record). #34: the follow-up - went up on 2026-10-19, no reply yet; the decision date is 2026-11-02. + cells exist and the published rc7 and rc8 pass them (records). #34: the + follow-up went up on 2026-10-19, no reply yet; the decision date is + 2026-11-02. 10. Lab rollback evidence: new checkpoints report Standard even after a successful temporary ProductionOnly probe; original VM policy restored, no checkpoint restored. Don't represent them as verified Production snapshots. diff --git a/.memory-bank/techContext.md b/.memory-bank/techContext.md index 71585a6..46ec278 100644 --- a/.memory-bank/techContext.md +++ b/.memory-bank/techContext.md @@ -1,6 +1,6 @@ --- status: current -last-verified: 2026-10-10 +last-verified: 2026-10-20 owner: active-agent source: repository and executable evidence --- @@ -42,9 +42,9 @@ source: repository and executable evidence ## Constraints -- Manifest: ModuleVersion 5.0.0, prerelease rc7, published 2026-10-10 (tag at - `fa0701b`). Latest stable 4.2.6. The reuse test fails if `$publishedVersions` - holds the manifest's version: add rc7 in the change that sets the next one. +- Manifest: ModuleVersion 5.0.0, prerelease rc8, published 2026-10-20 (tag at + `c719197`). Latest stable 4.2.6. `$publishedVersions` ends at rc7; the reuse + test fails if it holds the manifest's version, so the stable change adds rc8. - Changed-section writes preserve unchanged owner/group/DACL/SACL (19). Roots use root-folder APIs, not AlphaFS device security (#41). - CHANGELOG contains user-visible changes only (7); tests and CI-only fixes @@ -67,11 +67,12 @@ source: repository and executable evidence `Start-DetachedPowerShell.ps1`; use unique TEMP logs/result paths and an explicit-PID watcher. No foreground sleep/poll loop. Long payloads use a script file: nested Base64 encoding can exceed Windows command limits. -- Focused helper: TEMP `ntfs-focused\Start-FocusedRuns.ps1`; detach that - driver too because its internal wait loop must not block the agent shell. -- TEMP `ntfs-docs-tools\Invoke-ChangeChecks.ps1 -File ` - performs AST/analyzer/lint/help checks. Absolute input paths misroute - cmdlet pages. Check actual analyzer/lint output, not just helper exit. +- Helpers live in the session folder `qg-unknowns\scripts`, not in TEMP (TEMP was + cleaned once): `Invoke-Build.ps1`, `Start-FocusedRuns.ps1` (four + configurations), `Run-FullSuite.ps1` (the CI test steps), `Check-Docs.ps1`. + Restore the pinned compiler (Microsoft.Net.Compilers 4.2.0 from NuGet) into + TEMP `ntfs-build` and platyPS 0.14.2 and MarkdownLinkCheck 0.2.0 (`Save-Module` + in Windows PowerShell) into TEMP `ntfs-docs-tools\modules`. - actionlint 1.7.12 checks the workflow. Script changes use AST parse and PSScriptAnalyzer; prose Markdown uses MD013 and changelog siblings-only repeated-heading allowance. Native error codes must be checked explicitly.