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