From 72176542f0165bf70a1f9009c3add123f4e83139 Mon Sep 17 00:00:00 2001 From: Raimund Andree Date: Thu, 22 Oct 2026 11:04:55 +0000 Subject: [PATCH] docs(memory-bank): record that rc9 is merged, tagged, and published, and that its lab acceptance runs #131 (rc9) and #132 (the Memory Bank) are merged, the tag 5.0.0-rc9 is at the merge commit of #131 (823c814, whose tree equals the validated head 696ac38), the CI run of the tag passed, and the Gallery and GitHub have the package. The identity check verified the published bytes (hashes in progress.md), and the pathological-input, ToString, and valid-shape probes give the results of the validated build on them. The lab acceptance of the published bytes runs in one detached chain since 11:00:36Z; activeContext.md says how to finish it and what the stable pull request needs. The oldest milestones of progress.md are condensed to stay within the line budget. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: AI Assistant --- .memory-bank/activeContext.md | 75 +++++++++++++----------- .memory-bank/progress.md | 105 +++++++++++++++++----------------- 2 files changed, 95 insertions(+), 85 deletions(-) diff --git a/.memory-bank/activeContext.md b/.memory-bank/activeContext.md index ba9f45c..411518f 100644 --- a/.memory-bank/activeContext.md +++ b/.memory-bank/activeContext.md @@ -9,18 +9,24 @@ source: current task evidence ## Current focus -State at 2026-10-21: 5.0.0-rc8 is published and accepted (tag `c719197`, CI run -`39408140862`, Gallery 2026-10-20 10:40:58Z, GitHub 10:41:07Z, identity check -passed; lab acceptance of the published bytes 10:38 to 11:47Z, record -`Tests/Lab/Acceptance-2026-10-20-published-rc8.md`, #128). `master` is -`d0cb57c`: the maintainer merged #128 (2026-10-21 05:48Z), the tests-only round -#129 (08:24Z), and the Memory Bank #130 (08:47Z). +State at 2026-10-22: 5.0.0-rc9 is published, the last prerelease before the +stable 5.0.0 (Decision 27). The maintainer merged #131 (`823c814`, 08:13Z; its +tree is byte-identical to the validated head `696ac38`) and the Memory Bank +#132 (`f2bcd9d`, 10:15Z), and pushed the lightweight tag `5.0.0-rc9` at +`823c814` at about 08:37Z. The CI run `39749188259` of the tag passed (Build +and test, then Release without an approval step) and the GitHub prerelease +appeared at 08:51:19Z. `Test-PublishedRelease.ps1` printed +`PUBLISHED_IDENTITY_VERIFIED` at 10:54Z and again inside the chain at 11:02Z +(the Gallery's SHA-512 matches the nupkg, the 11 module files are identical in +the nupkg and the zip, the manifest says `5.0.0-rc9`); the pathological-input, +`ToString`, and valid-shape probes give the results of the validated build on +the published bytes. The lab acceptance of the published bytes runs since +11:00:36Z in one detached chain (`Chain-Published.ps1 -Version 5.0.0-rc9 -Tag +rc9`, evidence `files\rc9\rc9-published` in the session folder, expected end +about 12:10Z, heartbeat every 10 minutes). rc8 (tag `c719197`) was accepted on +2026-10-20 (record `Tests/Lab/Acceptance-2026-10-20-published-rc8.md`, #128). -The last prerelease before the stable 5.0.0 is rc9 (Decision 27). The branch -`ai/rc9` (base `d0cb57c`, 36 commits, head `696ac38`) is complete and -validated; it is local until the maintainer pushes it, opens the pull request -(body: `C:\Temp\ntfs-rc9\final-msgs\pr-rc9-body.md`, temporary), merges it, and -tags `5.0.0-rc9`. It contains: the five piped parameters of `Add-` and +rc9 contains (36 commits over `d0cb57c`, head `696ac38`): the five piped parameters of `Add-` and `Remove-NTFSAccess` and `-NTFSAudit` are `object`, converted in the cmdlet (`ParameterConversion`), so a typo for `Deny` no longer creates an Allow entry; a list for `-AccessType` and `-AppliesTo` is rejected; the `-SecurityDescriptor` @@ -53,12 +59,10 @@ ends the host through the three flags parameters, as in rc8 (known limit). A blank, `$null`, or `DBNull` value of the other parameter group is `AmbiguousParameterSet` (documented, not restructured). -Open before the stable pull request: the pull request, merge, and tag of rc9 -(maintainer); the lab acceptance of the published rc9 (agent, about 70 -minutes, `Chain-Published.ps1`); his decision on #34 on 2026-11-02; his check of -`PSGALLERY_API_KEY`. The stable change then touches only the label, the -CHANGELOG, and `$publishedVersions` (add `5.0.0-rc9`). The Memory Bank of this -work is a separate pull request (branch `ai/memory-bank-merged`). +Open before the stable pull request: the end of the lab acceptance of the +published rc9 and its record (agent); his decision on #34 on 2026-11-02; his +check of `PSGALLERY_API_KEY`. The stable change then touches only the label, +the CHANGELOG, and `$publishedVersions` (add `5.0.0-rc9`; the list ends at rc8). 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 @@ -73,13 +77,15 @@ Decisions 22 and 24 on 2026-10-19 and decides 23 on 2026-11-02. - Evidence of rc9 is outside git, in the session folder `816cf47d-2f80-4eba-8ac9-41702c49560b\files\rc9`: the specs and review briefs, - `suite-full1` (first integration), `suite-final`, `suite-final2`, - `suite-final3`, `suite-final4`, `suite-final5`, `suite-final6-b436423`, and - `suite-final7-696ac38` (the head), the probes (`p-*.ps1`, - `fixb-probe`, `shapes-r2`, `Run-Oracle.ps1`, `Run-Pathological.ps1`), the - published rc8 (`rc8-published`), and the analyzer and surface results. The - review probes of the reviewers are in `C:\Temp\ntfs-rc9\review*-probes-*` - (temporary). The worktrees under `C:\Temp\ntfs-rc9` are temporary too. + `suite-full1` (first integration), `suite-final` to `suite-final7-696ac38` + (the head), the probes (`p-*.ps1`, `fixb-probe`, `shapes-r2`, `Run-Oracle.ps1`, + `Run-Pathological.ps1`), the published rc8 (`rc8-published`), the published + rc9 (`rc9-published-identity`: the nupkg, the zip, `Identity-5.0.0-rc9.json`; + `oracle-published-rc9`), the chain of the acceptance (`rc9-published`: log + `chain-published-rc9.log`, a stage folder and a result folder per stage), and + the analyzer and surface results. The review probes of the reviewers are in + `C:\Temp\ntfs-rc9\review*-probes-*` (temporary). The worktrees under + `C:\Temp\ntfs-rc9` are temporary too. - Milestones of earlier gates (rc6 and rc7 releases, handoff 1, the operating system matrix, handoff 5, the rc7 and rc8 acceptances) are in `progress.md` and in the records and reports under `Tests/Lab` and `Tests/Coverage`. @@ -99,17 +105,20 @@ Decisions 22 and 24 on 2026-10-19 and decides 23 on 2026-11-02. ## Next step -1. The maintainer pushes `ai/rc9`, creates the pull request, merges it after - CI, and tags `5.0.0-rc9` (commands in the reply of 2026-10-21; every release - step is his). Then run `Chain-Published.ps1 -Version 5.0.0-rc9 -Tag 5.0.0-rc9 - -Evidence ` from the session files (about 70 minutes, detached, with the - heartbeat; save the labs afterwards) and write the acceptance record - `Tests/Lab/Acceptance--published-rc9.md`. A defect that it finds needs - rc10. +1. Lab acceptance of the published rc9: the chain started 2026-10-22 11:00:36Z + (log `rc9-published\chain-published-rc9.log`; 68 minutes for rc8). When the + log ends with `chain-published-rc9-DONE`, read the stage logs and the + `Validate-LabResults.ps1` output, never the marker alone; save the machines + again (`Save-VM`; + `OSWin11E` is off after its hour); write + `Tests/Lab/Acceptance-2026-10-22-published-rc9.md` and update this file, + `progress.md`, and `deployment-notes.md` in one pull request (branch + `ai/acceptance-published-rc9`; the maintainer pushes and merges). A defect + that the chain finds needs rc10. 2. The stable pull request: no `Prerelease`, `## [5.0.0] - ` with an empty `[Unreleased]` and the links, and `5.0.0-rc9` in `$publishedVersions` (the - list ends at rc7 now; rc8 comes with the rc9 pull request). The maintainer - checks the expiry of `PSGALLERY_API_KEY` first, merges, and tags. + list ends at rc8). The maintainer checks the expiry of `PSGALLERY_API_KEY` + first, merges, and tags. Not before his decision on #34 (item 3). 3. #34 waits for a tester until 2026-11-02 (Decision 23, option 3; checklist: `Tests/Lab/Non-Windows-File-Server-Test.md`). On that date the maintainer chooses between waiting longer and accepting the untested risk with a diff --git a/.memory-bank/progress.md b/.memory-bank/progress.md index 045b56c..d3798cb 100644 --- a/.memory-bank/progress.md +++ b/.memory-bank/progress.md @@ -9,18 +9,19 @@ source: repository and validation evidence ## Current status -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 stack of #116, #120, #118, #119, and #121 -into `master` (CI green; the milestones have the details). 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; on 2026-10-21 he merged #128 -(the rc8 record), #129 (tests), and #130 (this file). The published rc7 and -rc8 passed their lab acceptance in the matrix and in the first lab. rc9 -(Decision 27) is built on the local branch `ai/rc9` and waits for his push, -pull request, merge, and tag. Stable Gallery version: 4.2.6. After 5.0.0, -archive in favor of WindowsAccessControl (Decision 18). +5.0.0-rc9 is published on the Gallery and GitHub (2026-10-22, tag at `823c814`); +rc8 (2026-10-20, tag at `c719197`) and rc7 (2026-10-10, tag at `fa0701b`) are the +ones before it. On 2026-10-10 the maintainer merged the stack of #116, #120, +#118, #119, and #121 into `master` (CI green; the milestones have the details). +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; on 2026-10-21 +he merged #128 (the rc8 record), #129 (tests), and #130 (this file); on +2026-10-22 he merged #131 (rc9) and #132 (the Memory Bank) and tagged rc9. The +published rc7 and rc8 passed their lab acceptance in the matrix and in the +first lab; the acceptance of the published rc9 runs (see `activeContext.md`). +Stable Gallery version: 4.2.6. After 5.0.0, archive in favor of +WindowsAccessControl (Decision 18). ## Recent milestones @@ -32,47 +33,34 @@ archive in favor of WindowsAccessControl (Decision 18). Gallery publication and attempt 2 succeeded (GitHub prerelease 2026-10-09 07:01:34Z); the log does not establish the earlier assumed timeout cause. Detail: git, `CHANGELOG.md`, `Docs/Version-History.md`, Decisions 1 to 22. -- 2026-10-09: the autonomous follow-up (#117, then #120, through `3442194`) and - handoff 1 (#118) took the suite from 202 cases above rc7 to 1,310 per - configuration with zero failures and 3,192/3,634 sequence points (87.84%; - 74.21% before); publication recovery verifies the exact SHA-512 identity. - Eleven defects were fixed, ten with a guard that is red before the fix (76 - rows red at the base), among them a later command's exception that cmdlets - swallowed (a `throw` made `Remove-Item2` remove the next item) and a privilege - left enabled. Lab acceptance, `83149ee` against `f11ff41`: 486 passed, 0 - failed against 338 passed, 148 failed. Report in `Tests/Coverage`; record - `Tests/Lab/Acceptance-2026-10-09-quality-gate-paths.md`. -- 2026-10-09 to 10: handoffs 2 to 4 under the maintainer's delegation (decisions - D1 to D47 in the night log of the session files). The matrix lab - `NtfsSecurityOsMatrixLab` (Server 2019, 2022, 2025, a Windows 11 Enterprise - 22H2 client, Windows 11 26H1 suite only) found three module defects, fixed in - `962887a` and `fdd7a8b`: audit inheritance by descriptor, - `Get-NTFSEffectiveAccess -ServerName ''`, and the same cmdlet for a - non-administrator on a domain member. The final candidate passes the module's - suite on every machine (24 runs), the live controller in three cells (1,374 - passed, 0 failed, 12 skipped), and the first lab with case 9 (245 passed, 0 - failed, 1 skipped per edition). The Server 2022 effective-access failures - were stale account state, not the module (the controller names the case-3 - account anew, `1dec389`). The built-in security review found no exploitable - vulnerability and two LOW items left for the maintainer. Record: +- 2026-10-09 to 10: the quality gate. The autonomous follow-up (#117, then + #120) and handoff 1 (#118) took the suite from 202 cases above rc7 to 1,310 + per configuration (3,192/3,634 sequence points, 87.84%) and fixed eleven + defects, ten with a guard that is red before the fix (a later command's + exception that cmdlets swallowed, a privilege left enabled); lab acceptance + `83149ee` against `f11ff41`: 486 passed against 338 passed, 148 failed + (record `Tests/Lab/Acceptance-2026-10-09-quality-gate-paths.md`). Handoffs 2 + to 4 (decisions D1 to D47 in the night log of the session files) built the + matrix lab `NtfsSecurityOsMatrixLab` (Server 2019, 2022, 2025, Windows 11 + 22H2; 26H1 suite only), which found three module defects, fixed in `962887a` + and `fdd7a8b` (audit inheritance by descriptor, `Get-NTFSEffectiveAccess + -ServerName ''`, the same cmdlet for a non-administrator on a domain member); + the final candidate passed the suite on every machine (24 runs), the live + controller in three cells (1,374/0/12), and the first lab (245/0/1 per + edition); the built-in security review found no exploitable vulnerability and + two LOW items for the maintainer. Record `Tests/Lab/Acceptance-2026-10-10-os-matrix.md`. - 2026-10-10: the maintainer integrated the stack. His branch deletion after the - merge of #116 (`8a6be9f`, 09:10:12Z) removed the base branch of #117, and - GitHub closed #117 unmerged three seconds later instead of retargeting it - (`cli/cli#14223` shows the same events); the earlier guidance that relied on a - retarget was wrong. Nothing was lost: #120 (`bdb9981`, 10:50Z) replaced #117, - then #118 (`03bef2c`, 11:12Z) and #119 (`fa0701b`, 11:28Z) merged after their - retargeting; CI on `master` passed at 11:40Z. Decision 15 has the rule. -- 2026-10-10: rc7 published. The maintainer tagged `fa0701b` at about 12:20Z; - the CI run of the tag passed and the Release job published without an - approval step (Gallery 12:30:57Z, GitHub 12:31:09Z). The identity check - (`Test-PublishedRelease.ps1`, 12:33Z) passed: Gallery SHA-512, nupkg and zip - identical, manifest `5.0.0-rc7`. Hashes: deployment notes. -- 2026-10-10: gate 3 on the published rc7, 14:29 to 15:30 UTC, in one detached - driver: the three matrix cells 1,374 passed, 0 failed, 12 skipped; the suite - in 24 runs on six machine classes without a failure; the first lab with case - 9 245 / 0 / 1 per edition; every end state CLEAN. The counts equal those of - the final local candidate. Record: + merge of #116 (`8a6be9f`) removed the base branch of #117, and GitHub closed + #117 unmerged instead of retargeting it (`cli/cli#14223`; Decision 15 has the + rule); #120 (`bdb9981`) replaced it, then #118 (`03bef2c`) and #119 + (`fa0701b`) merged; CI on `master` passed at 11:40Z. +- 2026-10-10: rc7 published (tag `fa0701b` at about 12:20Z, Gallery 12:30:57Z, + GitHub 12:31:09Z, no approval step; identity check passed at 12:33Z; hashes in + the deployment notes). Gate 3 on the published rc7 (14:29 to 15:30 UTC, one + detached driver): three cells 1,374/0/12, the suite in 24 runs on six machine + classes without a failure, the first lab 245/0/1 per edition, every end state + CLEAN; the counts equal those of the final local candidate. Record `Tests/Lab/Acceptance-2026-10-10-published-rc7.md`. - 2026-10-10 to 2026-10-11: Handoff 5, the coverage unknowns (branch `ai/coverage-unknowns`, merged as #125 on 2026-10-19). rc7 measured at @@ -120,7 +108,7 @@ archive in favor of WindowsAccessControl (Decision 18). chosen on 2026-10-21, and four work items started (branch `ai/rc9-before-stable`). - 2026-10-21: rc9 built and reviewed (Decision 27; branch `ai/rc9`, 36 commits - over `d0cb57c`, head `696ac38`, local until he pushes). Four implementers + over `d0cb57c`, head `696ac38`). Four implementers worked test-first in worktrees (the five piped parameters, the 17 handlers and three inconsistencies, the library items, the filter); the chains were cherry-picked in order, so every fix sits in the commit of its item. Round 1 @@ -133,6 +121,19 @@ archive in favor of WindowsAccessControl (Decision 18). `696ac38`: 2,162 cases per configuration, 0 failed in four configurations (rc8: 1,615); docs fixpoint; analyzer clean; valid shapes differ from rc8 in 9 list rows only; both reviewers: no finding. +- 2026-10-22: rc9 published. The maintainer merged #131 (`823c814`, 08:13Z; its + tree equals the validated `696ac38`; the CI of the PR ran 2,162 cases per + configuration on the runner, equal to the local run in all four + configurations) and #132 (`f2bcd9d`, 10:15Z), and tagged `823c814` at about + 08:37Z. The CI run `39749188259` of the tag passed, Release without an + approval step; GitHub 08:51:19Z. `Test-PublishedRelease.ps1`: identity + verified at 10:54Z. Published bytes: `NTFSSecurity.dll` SHA-256 + `464CAB365AD63CD22208B21012A5B7F0B8B630E819CF300019787A0172791198`, zip + `5A05BC008605D9B4B1EAB074FFC811B460FAF6D3549701D00ABA15D9208ED571`, nupkg + `72CC5E28567BEC564DB052AF34C91F237ECFC9558FA2E981E201E02E16B4F8F3`. The + published bytes give the results of the validated build in the pathological, + `ToString`, and valid-shape probes (9 list rows differ from rc8). The lab + acceptance chain started at 11:00:36Z. ## Stable capabilities