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