diff --git a/CHANGELOG.md b/CHANGELOG.md index 273af1f..47a95a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ Following the `0.0.15-beta` prerelease, Windows client/server, IIS, Exchange, pr ### Changed +- Reconcile current documentation after PRs #42, #43 and #44 closed issues #30, #28 and #29. Record their exact reviewed-head and merged-source evidence, preserve the published `0.0.15-beta` artifact as a distinct historical package, close stale issue #26 URL wording, and keep deferred Windows/ReFS/IIS/Exchange/profile labs and final 1.0 acceptance explicit. + - Complete issue #28's public-command directory-identity regressions for empty and populated replacements, retained-handle prevention, defensive identity refusal, deepest-first pruning, preservation boundaries, WhatIf and terminating errors. The fixture note distinguishes reachable production behavior from injected handle-loss tests; executable runtime behavior and lab gates are unchanged. - Complete issue #29's NTFS ACL regressions for both temp commands: prove denied content reads still permit authorized deletion, denied deletion reports errors and honors Stop, substitutions/disappearance are preserved, and native identity uses all 128 bits with fail-closed errors. Document the conservative sharing decision and ReFS API semantics separately from deferred ReFS runtime acceptance. diff --git a/docs/Clear-CurrentUserTemp.md b/docs/Clear-CurrentUserTemp.md index 9239fa3..07f9e8e 100644 --- a/docs/Clear-CurrentUserTemp.md +++ b/docs/Clear-CurrentUserTemp.md @@ -12,7 +12,7 @@ Clear-CurrentUserTemp [-Days ] [-RemoveEmptyDirectory] [-PassThru] [-What ## Behavior -Resolve the temporary directory using `[System.IO.Path]::GetTempPath()` on Windows. Select files of any extension whose `LastWriteTimeUtc` is at or before one UTC cutoff. `-Days` defaults to 30 and accepts positive Int16 values. Reparse points are excluded before traversal. Literal paths, ancestry, type, identity, and timestamps are revalidated before removal. The native deletion handle requests `DELETE` and `FILE_READ_ATTRIBUTES` without file-content read access and without sharing writes or deletes, so the final timestamp is read from the opened object and an active writer or rename cannot move the candidate after validation. +Resolve the temporary directory using `[System.IO.Path]::GetTempPath()` on Windows. Select files of any extension whose `LastWriteTimeUtc` is at or before one UTC cutoff. `-Days` defaults to 30 and accepts positive Int16 values. Reparse points are excluded before traversal. Literal paths, ancestry, type, identity, and timestamps are revalidated before removal. The native deletion handle requests `DELETE` and `FILE_READ_ATTRIBUTES` without file-content read access and without sharing writes or deletes, so the final timestamp is read from the opened object and an ordinary content/data writer or rename cannot move the candidate after validation. Retention and byte totals use metadata observed from the deletion handle. The same object can remain eligible after a content change if its observed timestamp is still old. Read-only sharing blocks data writers and renames, but attribute-only timestamp changes can still occur after the observation; the retention check and deletion are not atomic. See the [full retention contract and regression evidence](issue-30-retention-handle.md). diff --git a/docs/Clear-WindowsTemp.md b/docs/Clear-WindowsTemp.md index 90a509f..ed2c59c 100644 --- a/docs/Clear-WindowsTemp.md +++ b/docs/Clear-WindowsTemp.md @@ -12,7 +12,7 @@ Clear-WindowsTemp [-Days ] [-RemoveEmptyDirectory] [-PassThru] [-WhatIf] ## Behavior -Select files of any extension whose `LastWriteTimeUtc` is at or before one UTC cutoff. `-Days` defaults to 30 and accepts positive Int16 values. Reparse points are excluded before traversal. Literal paths, ancestry, type, identity, and timestamps are revalidated before removal. The native deletion handle requests `DELETE` and `FILE_READ_ATTRIBUTES` without file-content read access and without sharing writes or deletes, so the final timestamp is read from the opened object and an active writer or rename cannot move the candidate after validation. The Windows temp root is derived from the Windows special-folder API with a SystemRoot fallback, not from an environment variable alone. Run elevated for system-owned files; actual OS-root acceptance remains a 1.0 gate. +Select files of any extension whose `LastWriteTimeUtc` is at or before one UTC cutoff. `-Days` defaults to 30 and accepts positive Int16 values. Reparse points are excluded before traversal. Literal paths, ancestry, type, identity, and timestamps are revalidated before removal. The native deletion handle requests `DELETE` and `FILE_READ_ATTRIBUTES` without file-content read access and without sharing writes or deletes, so the final timestamp is read from the opened object and an ordinary content/data writer or rename cannot move the candidate after validation. The Windows temp root is derived from the Windows special-folder API with a SystemRoot fallback, not from an environment variable alone. Run elevated for system-owned files; actual OS-root acceptance remains a 1.0 gate. Retention and byte totals use metadata observed from the deletion handle. The same object can remain eligible after a content change if its observed timestamp is still old. Read-only sharing blocks data writers and renames, but attribute-only timestamp changes can still occur after the observation; the retention check and deletion are not atomic. See the [full retention contract and regression evidence](issue-30-retention-handle.md). diff --git a/docs/command-contracts.md b/docs/command-contracts.md index 1ced1be..9f45fa6 100644 --- a/docs/command-contracts.md +++ b/docs/command-contracts.md @@ -53,7 +53,7 @@ The temp commands own their mutations. They discover under an approved root, cap Retention and removed-byte accounting use the current metadata observed from the deletion handle. Discovery establishes identity and candidacy, not an immutable content snapshot. A same-object file may be removed after a content/length change if its observed last-write time still meets the cutoff. Read-only sharing blocks data writers and renames but does not block every attribute-only timestamp update; metadata validation and disposition are not atomic. The [issue #30 contract and fixtures](issue-30-retention-handle.md) define these limits. -The implementation follows the safety intent tracked in [issue #28](https://github.com/SamErde/TheCleaners/issues/28) and [issue #29](https://github.com/SamErde/TheCleaners/issues/29). Broader NTFS/ReFS and Windows client/server acceptance still requires disposable Windows environments with recorded filesystem and runtime evidence; deterministic issue fixtures do not replace those gates. +The closed [issue #28 directory-identity packet](issue-28-directory-identity.md) and [issue #29 deletion-rights packet](issue-29-delete-rights.md) record the merged deterministic evidence for this implementation. Broader NTFS/ReFS and Windows client/server acceptance still requires disposable Windows environments with recorded filesystem and runtime evidence; deterministic issue fixtures do not replace those gates. ## Preview contract diff --git a/docs/deployment-validation.md b/docs/deployment-validation.md index 8350544..15d08d8 100644 --- a/docs/deployment-validation.md +++ b/docs/deployment-validation.md @@ -1,8 +1,8 @@ # Documentation deployment gate -The canonical documentation URL is `https://day3bits.com/TheCleaners/`, including the title-case path. Configuration, source help, the manifest, generated references, and canonical links must use that casing. The Zensical migration is open in [PR #41](https://github.com/SamErde/TheCleaners/pull/41); review, merge, fresh deployment, and lowercase-path acceptance remain open under [issue #26](https://github.com/SamErde/TheCleaners/issues/26). +The canonical documentation URL is `https://day3bits.com/TheCleaners/`, including the title-case path. Configuration, source help, the manifest, generated references, and canonical links use that casing. Zensical [PR #41](https://github.com/SamErde/TheCleaners/pull/41) merged as `af330858b41335366476f0b845e3f73a3c1497d1`, and [issue #26](https://github.com/SamErde/TheCleaners/issues/26) is closed. Deployment run [35282935445](https://github.com/SamErde/TheCleaners/actions/runs/35282935445) and an independent live recheck verified its 36 canonical files and required navigation. Later deployments supersede that byte snapshot and require their own source-bound evidence. -The lowercase project-prefix request is handled by the account-root Pages site before this project's generated files are selected. Zensical's native redirects map paths within the documentation output, so they cannot repair that missing project prefix. Case-only alias directories would also collide with canonical mixed-case directories on Windows. A companion account-root redirect is the remaining hosting-level option; this repository does not add ineffective redirect maps. +The lowercase project-prefix request is handled by the separately owned account-root Pages site before this project's generated files are selected. Companion [SamErde/samerde.github.io#13](https://github.com/SamErde/samerde.github.io/pull/13) merged as `0b096e19b6058a0c60119d20b57ba7de7aa3236c`. Its account-root 404 page uses JavaScript to send the lowercase project prefix to the canonical title-case path; this is a fallback from an HTTP 404 response, not an HTTP 301/302 redirect. Zensical's native redirects map paths only within this documentation output, and case-only alias directories would collide on Windows. A documentation deployment is accepted only when the workflow proves all of the following for one source commit: @@ -78,7 +78,7 @@ The following retained baseline validates the exact deployment gate for PR #37 m | Workflow verification | Passed after three complete attempts during propagation | | Independent live verification | Passed all 71 files and five navigation routes in one attempt | -This closes exact deployed-byte and representative-navigation verification for that source commit only. The Zensical migration changes the generated site and therefore requires a fresh merged-source deployment and retained evidence before it can replace this baseline. Lowercase `/thecleaners/` acceptance also remains open in issue #26. +This closes exact deployed-byte and representative-navigation verification for that source commit only. It is a historical pre-Zensical baseline. The Zensical migration checkpoint is the 36-file verification for `af330858b41335366476f0b845e3f73a3c1497d1` above; later source changes and deployments need fresh retained evidence. Lowercase compatibility is supplied by the separately owned account-root 404/JavaScript fallback described above. Before this gate was implemented, the September 17, 2026 live check found title-case `/TheCleaners/` HTTP 200 and lowercase `/thecleaners/` HTTP 404. GitHub Pages reported the title-case site URL, and the maintainer selected that working path as canonical. @@ -92,4 +92,4 @@ The historical live check on September 16, 2026 found: | `https://day3bits.com/TheCleaners/` | HTTP 200 with the deployed MkDocs site. | | `https://day3bits.com/TheCleaners` | HTTP 301 to `/TheCleaners/`. | -The historical run above remains useful only as the pre-gate baseline. Run 35257555130 and its independently checked retained evidence establish the current exact-source deployment claim. +The historical run above remains useful only as the pre-gate baseline. Run 35257555130 established the later exact-source pre-Zensical deployment claim; the merged Zensical checkpoint and subsequent source-bound deployments supersede it. diff --git a/docs/index.md b/docs/index.md index cbd9186..7e82a22 100644 --- a/docs/index.md +++ b/docs/index.md @@ -22,4 +22,4 @@ The temp cleaners preserve directories unless `-RemoveEmptyDirectory` is supplie Read [safety and confirmation](safety-and-confirmation.md), [migration notes](migration-to-1.0.md), and the [1.0 implementation ledger](release-plan-1.0.md) before using this prerelease. The ledger distinguishes prerelease evidence from product/lab and final 1.0 acceptance. The [repository README](https://github.com/SamErde/TheCleaners#readme) distinguishes the published Gallery prerelease from a source checkout. -Canonical documentation: . The [Zensical migration](https://github.com/SamErde/TheCleaners/issues/26) is open in [PR #41](https://github.com/SamErde/TheCleaners/pull/41); review, merge, fresh deployment, and lowercase-path acceptance remain open. +Canonical documentation: . The [Zensical migration](https://github.com/SamErde/TheCleaners/issues/26) merged in [PR #41](https://github.com/SamErde/TheCleaners/pull/41), and its canonical deployment was verified. The separately owned account-root site supplies lowercase compatibility through JavaScript on its 404 page; it is not an HTTP redirect. diff --git a/docs/issue-28-directory-identity.md b/docs/issue-28-directory-identity.md index 914974b..a9ad152 100644 --- a/docs/issue-28-directory-identity.md +++ b/docs/issue-28-directory-identity.md @@ -2,9 +2,9 @@ ## Scope and result -This packet closes the remaining deterministic fixture gap in [issue #28](https://github.com/SamErde/TheCleaners/issues/28). The runtime already retains native Windows directory handles through candidate mutation and compares volume/file identity before non-recursive pruning. No runtime defect was found, so this packet adds a dedicated public-command regression suite without changing production behavior. +This packet closes the remaining deterministic fixture gap in [issue #28](https://github.com/SamErde/TheCleaners/issues/28). [PR #43](https://github.com/SamErde/TheCleaners/pull/43) merged as `0829d076ac13095ed016c54ea96c4a8b6abd8287` and closed the issue. The runtime already retains native Windows directory handles through candidate mutation and compares volume/file identity before non-recursive pruning. No runtime defect was found, so the packet adds a dedicated public-command regression suite without changing production behavior. -The initial implementation checkpoint used base commit `af330858b41335366476f0b845e3f73a3c1497d1` plus uncommitted test/documentation changes. It is retained below as historical evidence. The clean metadata-correction checkpoint records local committed fixture validation; final-head hosted CI across all supported runtimes and post-merge evidence remain separate checks. +The initial implementation checkpoint used base commit `af330858b41335366476f0b845e3f73a3c1497d1` plus uncommitted test/documentation changes. It is retained below as historical evidence. Exact reviewed head `12db558565d39e1a52c726160a6b4014b72cf5ff` and the merged-source workflow results are recorded in the [release ledger](release-plan-1.0.md); they supersede the pending language in the historical checkpoints below. ## Deterministic fixture design @@ -28,7 +28,7 @@ The second case demonstrates defense in depth when the primary handle barrier is | Preserve root, unrelated empty branches, recent files, and reparse points | The end-to-end boundary case retains the fixture root, an unrelated empty directory, a recent-file branch, a junction, and the junction target outside the cleanup root. | | Avoid path/timestamp-only identity proof | Tests use `FILE_ID_INFO` identities from the native interop. The fallback fixture explicitly matches creation time, last-write time, and attributes, then records unequal original and replacement identities while confirming the displaced original retains its planned identity. | | Keep `ShouldProcess` and error behavior | `-WhatIf` reports candidates and performs no mutation; mutation cases use explicit `-Confirm:$false`; a locked candidate with `-ErrorAction Stop` terminates with `TempFileRemovalFailed` and preserves directory ancestry. | -| Validate the supported runtime matrix | Local coverage passed on PowerShell 7.6.6 and Windows PowerShell 5.1.26100.9444 with Pester 5.7.1. Full-matrix acceptance remains pending inspection of exact final-head hosted results, including PowerShell 7.4.20 and 7.5.11. | +| Validate the supported runtime matrix | Local coverage passed on PowerShell 7.6.6 and Windows PowerShell 5.1.26100.9444 with Pester 5.7.1. Exact final-head and merged-source hosted evidence for PowerShell 7.4.20, 7.5.11, 7.6.6 and Windows PowerShell 5.1 is recorded in the release ledger. | ## Validation evidence @@ -41,7 +41,7 @@ Local fixture runs used Windows **10.0.26200.0**, PowerShell **7.6.6** and Windo | Review base `581907e7d83c283de423c0f36d02b735c7153876` plus uncommitted refinement | 14 passed, zero failed/skipped/not-run | Historical first run with matching replacement metadata; reports `pester-review-followup-ps766.xml` and `pester-review-followup-ps51.xml` in the same temporary evidence directory. | | Clean correction `2372a218d04354df100c2d9188bc30c419764151` | 18/18 passed, zero failed/skipped/not-run | Includes the metadata-matching assertions and four documentation contracts. Retained reports: `issue28-final2372-ps7.json/.xml` and `issue28-final2372-ps51.json/.xml`. Test-file SHA-256: `d6f2c31c5625cec86cabee0fb5d9f856a40ed2f43ff3e479dbe326a2a8f8a6fa`. Strict Zensical 0.0.62 passed. | -The clean correction's hosted build failed test-source analysis because two display-only `Article` parameters were unused; it did not pass the full build. Commit `da99d4ebdd0e8c76cba332eb506e06d2eda43691` removed those unused parameters and simplified the test descriptions without changing fixture logic. Its PowerShell parsers and PR-range whitespace check passed. Final-head hosted runtime reports, artifact inspection and post-merge results remain separate gates and are recorded in the PR and release ledger when verified. +The clean correction's hosted build failed test-source analysis because two display-only `Article` parameters were unused; it did not pass the full build. Commit `da99d4ebdd0e8c76cba332eb506e06d2eda43691` removed those unused parameters and simplified the test descriptions without changing fixture logic. Its PowerShell parsers and PR-range whitespace check passed. These are historical correction checkpoints; the final-head and merged-source runtime, artifact and deployment results are recorded in the PR and release ledger. ## Limitations This is deterministic local NTFS fixture evidence, not Windows client/server, ReFS, real-system-root, elevated/non-elevated, hostile-filter, or product lab acceptance. Issue #28 does not require ReFS validation, and the production help already states that the checks cannot provide an atomic defense when a filesystem or filter does not provide stable file IDs. Deferred lab gates and final 1.0 acceptance remain open. diff --git a/docs/issue-29-delete-rights.md b/docs/issue-29-delete-rights.md index e6f0aa9..c2bb416 100644 --- a/docs/issue-29-delete-rights.md +++ b/docs/issue-29-delete-rights.md @@ -6,6 +6,14 @@ exact source and test results recorded below. It does not establish Windows client/server product acceptance, actual Windows-root cleanup, or ReFS runtime acceptance; those remain TC-003/004 release gates. +[PR #44](https://github.com/SamErde/TheCleaners/pull/44) merged as +`6fd8af169da631d17579a3c7eb3fa0aa8b285be0` and closed the issue. Exact reviewed +head `abe5f4275b2d5b9a7a510aa0759413dbcf91a727` and merged source +`6fd8af169da631d17579a3c7eb3fa0aa8b285be0` passed the supported hosted +runtime/artifact matrix; merged-source analyzer and 39-file documentation +deployment verification also passed. The [release ledger](release-plan-1.0.md) +records the immutable runs, counts, digests and review boundary. + No executable runtime source changed in this packet. The base implementation already met the selected native contract; the new work supplies the missing both-command ACL, error, identity, and reconciliation evidence. @@ -95,8 +103,8 @@ Its merged source passed tests on PS5.1, with zero failures/skips/not-run. All eleven artifact wrappers, source/runtime reports and archives were independently verified. Issue #28's directory-identity packet also merged in [PR #43](https://github.com/SamErde/TheCleaners/pull/43) -as `0829d076ac13095ed016c54ea96c4a8b6abd8287`. This packet is rebased onto both -merges and will run the combined suite on its own final head before closure. +as `0829d076ac13095ed016c54ea96c4a8b6abd8287`. This packet was rebased onto both +merges before its own reviewed-head and merged-source verification. ## ReFS disposition @@ -124,8 +132,8 @@ contracts, under PowerShell **7.6.6** and Windows PowerShell JSON/XML evidence is named `issue29-rebased-ps7` and `issue29-rebased-ps51`. The test-file SHA-256 is `d439b0d1fc4edc0ab2eb4f11fca87dd6a523c5667f6411169e2105e90581c082`. -Final-head hosted validation and merged-source verification remain separate -gates; these local results do not establish either one. +These local results do not establish final-head hosted or merged-source +verification; the later exact evidence is recorded above and in the release ledger. Independent Astra high review also ran exact clean pre-rebase head `7ce8c0f6796617c47c046a4d4c90ca2ed86d4a96` in fresh processes, with the native diff --git a/docs/issue-30-retention-handle.md b/docs/issue-30-retention-handle.md index 9b9883a..c5f20ff 100644 --- a/docs/issue-30-retention-handle.md +++ b/docs/issue-30-retention-handle.md @@ -1,10 +1,10 @@ # Temp retention and deletion-handle contract This packet records the bounded deterministic fixture and contract work in -[issue #30](https://github.com/SamErde/TheCleaners/issues/30). The runtime already -uses native same-handle deletion at source base -`af330858b41335366476f0b845e3f73a3c1497d1`; this packet adds evidence and states its -concurrency limits. It does not enable stable status or replace the deferred +[issue #30](https://github.com/SamErde/TheCleaners/issues/30). [PR #42](https://github.com/SamErde/TheCleaners/pull/42) +merged as `3d07e9ccbfd441c388b1a3a69edc92fc326a4a66` and closed the issue. The runtime +already used native same-handle deletion before this packet; the merged work adds +evidence and states its concurrency limits. It does not enable stable status or replace the deferred Windows client/server, actual-root, ReFS, filesystem-filter, or hostile-driver labs. See the [release ledger](release-plan-1.0.md) for current acceptance gates. @@ -95,7 +95,7 @@ are removed as links before fixture teardown. | Sharing errors, Stop, counters and bytes | Both commands verify late writer failure with native error 32, stable error ID/category, zero removals/bytes, and Stop unwinding with a successful root rename afterward. Access-mask/ACL cases remain independently evidenced in issue #29. | | Approval and permissions boundaries | Both commands prove WhatIf never reaches acquisition. Existing Confirm tests and the native no-content-read access mask are unchanged. | -### Local checkpoint +### Historical local checkpoint Local evidence is recorded against base `af330858b41335366476f0b845e3f73a3c1497d1` plus the uncommitted new test and this document, using isolated Pester **5.7.1**. @@ -112,12 +112,13 @@ The tested new file's SHA-256 is `a8d0a1be296e8618ae7ce47174218b777506913b9711d88381529c9af887d429`. `git diff --check` and the new files' whitespace checks passed. No runtime source behavior was changed; the integration also clarifies comment-based help. This local checkpoint does not claim execution on PowerShell 7.4 or -7.5; the exact-head hosted matrix remains the integrator's next validation gate. +7.5; the later exact-head and merged-source hosted results are recorded in the +[release ledger](release-plan-1.0.md). The retained machine-readable reports are `src/Reports/issue30/ps7-final.xml`, `ps7-final.json`, `ps51-final.xml`, and `ps51-final.json` (ignored local evidence). -The integrator records exact final-commit and hosted runtime evidence in the -release ledger before issue closure or any stability decision. +The later final-head and merged-source evidence was recorded in the release +ledger. Command stability still requires the applicable product and release gates. ### Committed integration checkpoint @@ -127,4 +128,5 @@ and Windows PowerShell **5.1.26100.9444**, using Pester **5.7.1** on Windows **10.0.26200.0**. Both runs had zero failures, skips and not-run tests. The new test hash remained the value above. The strict clean Zensical **0.0.62** build and configuration validation passed. This is local exact-commit evidence; the -PR's final-head hosted matrix and merge results must be verified separately. +PR's later final-head hosted matrix and merge results are recorded in the release +ledger; this checkpoint remains local evidence only. diff --git a/docs/migration-to-1.0.md b/docs/migration-to-1.0.md index d324ff9..4bd7c05 100644 --- a/docs/migration-to-1.0.md +++ b/docs/migration-to-1.0.md @@ -45,4 +45,4 @@ No removal or persistent activation is available. `Clean-ExchangeLog` has the sa ## Documentation -The canonical URL is [day3bits.com/TheCleaners](https://day3bits.com/TheCleaners/), matching the working title-case GitHub Pages path. The old Start-Cleaning documentation page is retained as a compatibility pointer. Exact deployed-byte and representative-navigation verification passed for merged source `345f06c861b6d4074e5896e0b27a19f869dfa7e3`; later source changes require fresh evidence. The Zensical migration is open in [PR #41](https://github.com/SamErde/TheCleaners/pull/41) under [issue #26](https://github.com/SamErde/TheCleaners/issues/26). Review, merge, fresh deployment evidence, and support for both `/TheCleaners/` and `/thecleaners/` remain open outside the 1.0 critical path. +The canonical URL is [day3bits.com/TheCleaners](https://day3bits.com/TheCleaners/), matching the title-case GitHub Pages path. The old Start-Cleaning documentation page is retained as a compatibility pointer. Zensical [PR #41](https://github.com/SamErde/TheCleaners/pull/41) merged as `af330858b41335366476f0b845e3f73a3c1497d1`, closing [issue #26](https://github.com/SamErde/TheCleaners/issues/26); its 36-file canonical deployment and required navigation were independently verified. The separately owned account-root site provides lowercase compatibility through JavaScript from its 404 page, not an HTTP redirect. Later source changes and deployments require their own source-bound evidence. diff --git a/docs/next-stage-prompts.md b/docs/next-stage-prompts.md index a892c7a..0f6254d 100644 --- a/docs/next-stage-prompts.md +++ b/docs/next-stage-prompts.md @@ -1,17 +1,13 @@ -**Completed:** Non-lab delivery and protected 0.0.15-beta publication are verified. Zensical PR #41, retention PR #42 and directory-identity PR #43 are merged; issues #26, #30 and #28 are closed. PR #43 merged as 0829d076ac13095ed016c54ea96c4a8b6abd8287 after independent Terra high approval, completed hosted reviews, six resolved threads and verified final-head artifacts (347 unit plus four integration tests per PS7 lane; 351 combined on PS5.1). PR #42's exact reviewed-head and merged-source runtime/artifact results and canonical documentation bytes have been verified separately. PR #44's 12 deletion-rights cases are implemented and pass locally after rebasing onto both merges. +**Completed:** Non-lab delivery and protected `0.0.15-beta` publication are verified. Zensical PR #41 and temp-safety PRs #42, #43 and #44 are merged; issues #26, #30, #28 and #29 are closed. Their reviewed-head and available merged-source runtime, artifact, analyzer and documentation evidence is recorded in the release ledger. This change completes the final documentation-source reconciliation. -**Remaining:** Finish final independent and hosted review, exact-head validation and merge for #29 PR #44; verify #28/#29 merged-source results; then complete the final documentation sweep. TC-001 product acceptance, TC-003 through TC-007 lab acceptance and final TC-008/009 release acceptance remain open. Lab validation is deferred future work, not underway. +**Remaining:** Verify this change's ordinary PR-head and merged-source delivery evidence if it is not already recorded in the PR. After that, no further authorized non-lab follow-on is required. TC-001 product acceptance, TC-003 through TC-007 Windows/ReFS/IIS/Exchange/profile labs and final TC-008/009 product/release acceptance remain deferred future work and require later maintainer direction. -# Recovery: finish the authorized temp-issue sequence +# Recovery: close documentation delivery or await lab authorization -Continue SamErde/TheCleaners from the current release ledger. Read AGENTS.md, .github/copilot-instructions.md, docs/release-plan-1.0.md, the three issue evidence notes, and the issue/PR discussions. Refresh exact Git state, worktree ownership, open PRs, reviews, checks and paginated reviewThreads before acting; do not redo merged #41/#42/#43 or select already implemented #29 as new implementation work. +Continue SamErde/TheCleaners from the current [release ledger](release-plan-1.0.md). Read `AGENTS.md`, `.github/copilot-instructions.md`, this prompt and the ledger before acting. Refresh exact repository, branch, PR, check and paginated `reviewThreads` state. Do not redo merged PRs #41 through #44 or open another documentation-only follow-up merely to cite the final documentation PR's own future SHA. -Use the existing isolated worktrees and preserve unrelated local changes. Sol high authored #28/#29; Terra high independently approved #43, and Astra high reviews #44's ACL/native-identity scope. Sol high independently reviewed Astra high's #42 implementation. Use Sol medium for the bounded documentation sweep and Terra medium for its independent review. Keep one integrator for shared runtime, ledger and changelog writes. Use a different model for each independent review and reassess only if concrete risk warrants escalation. +If this documentation reconciliation is still under review, complete its bounded PR lifecycle: address material findings, require zero unresolved review threads, verify strict Zensical and whitespace checks at the exact reviewed head, merge only that reviewed head, and verify the merge-triggered documentation deployment and retained evidence. Record delivery acceptance in the PR evidence rather than editing this prompt again solely to add its own merge identity. -For each remaining PR, address every material finding and reply to its thread; record quota-skipped bot reviews as incomplete, not approvals. Require posted independent review, completed available hosted reviews, zero unresolved paginated review threads, passing exact-head checks and inspected source/runtime-bound reports, artifact digests and archives before a SHA-guarded merge. Rebase the later packet onto merged main and revalidate any resolution. Verify merge-triggered runs separately from PR-head evidence. +If that evidence is already complete, stop. There is no further authorized non-lab follow-on. Preserve the published `0.0.15-beta` as the distinct historical 19-file, 224,050-byte artifact from exact source `345f06c861b6d4074e5896e0b27a19f869dfa7e3`; later untagged source and its 224,558-byte archive are not that Gallery package. -Keep the documented observation contract: a deletion handle supplies identity, type, timestamp and logical length before disposition. Read-only sharing excludes ordinary data writers and renames but permits attribute-only timestamp updates; retention checking and deletion are not atomic. The #28 lost-handle test is explicit fault injection, not a reachable intact-plan race. For #29, distinguish documented 128-bit ReFS semantics and fail-closed behavior from unexecuted ReFS runtime acceptance. - -The maintainer already authorized continuous execution through all three PR merges and the final documentation sweep. Continue without repeated merge approval. Update relevant help/docs, changelog and exact evidence in each packet, then sweep current status, command contracts, support boundaries and historical wording after all three close. Every future successor prompt must begin with succinct Completed / Remaining paragraphs refreshed from the release ledger and carry this requirement forward. Save updated recovery prompts while continuing the authorized work. - -Use isolated fixtures only. Do not provision hosts/volumes, run actual-root cleanup or IIS/Exchange/profile labs, enable product deletion, create release tags, or publish to the Gallery. Final publication and credentials retain their separate approval boundaries. If no authorized non-lab work remains after the sweep, say so and leave labs deferred rather than starting them automatically. +Do not provision hosts or volumes, run actual-root cleanup or IIS/Exchange/profile labs, enable product deletion, create release tags, publish to the Gallery, or begin final 1.0 acceptance without new maintainer direction and the required approval boundaries. IIS and Exchange remain structurally preview-only and require explicit `-WhatIf`. ReFS runtime acceptance remains unexecuted. Every future successor prompt must begin with succinct **Completed / Remaining** paragraphs refreshed from the ledger and carry this requirement forward. diff --git a/docs/release-plan-1.0.md b/docs/release-plan-1.0.md index ef67117..495c2bb 100644 --- a/docs/release-plan-1.0.md +++ b/docs/release-plan-1.0.md @@ -1,11 +1,13 @@ # TheCleaners 1.0 implementation plan -Updated September 18, 2026. Non-lab delivery readiness and the approved `0.0.15-beta` prerelease publication are complete. Zensical PR #41, retention PR #42 and directory-identity PR #43 are merged; issues #26, #30 and #28 are closed. Deletion-rights PR #44 is implemented in draft and undergoing final review and hosted validation. Windows client/server, IIS, Exchange, and profile lab validation is **deferred future work, not underway**. The published prerelease and bounded issue closures remain separate from final 1.0 product and release acceptance. +Updated September 18, 2026. Non-lab delivery readiness and the approved `0.0.15-beta` prerelease publication are complete. Zensical PR #41 and temp-safety PRs #42, #43 and #44 are merged; issues #26, #30, #28 and #29 are closed. This change completes the final documentation-source reconciliation; its delivery acceptance belongs to its own PR-head and merged-source evidence. Windows client/server, IIS, Exchange, and profile lab validation is **deferred future work, not underway**. The published prerelease and bounded issue closures remain separate from final 1.0 product and release acceptance. ## Status conventions **Open** means work has not been completed. **Implemented in draft** is reserved for code in an unmerged branch or pull request. **Merged implementation** means the code is on `main`, but applicable validation may still be open. **Validated** requires passing evidence for the exact referenced commit and scope. **Release accepted** additionally requires every applicable product, artifact, deployment, metadata, and maintainer gate. +Reviews naming Astra, Sol or Terra below are independent model reviews posted as GitHub `COMMENT` reviews. Their model-approval judgments do not assert a separate human GitHub approval or replace maintainer release acceptance. + The manifest stays on the current prerelease version during this packet. No command is advertised as stable merely because it is exported. The plan is milestone/gate-driven, not a promised calendar deadline. ## Accepted decisions @@ -33,9 +35,9 @@ The manifest stays on the current prerelease version during this packet. No comm ## Current non-lab delivery sequence -**Completed:** Non-lab delivery and protected `0.0.15-beta` publication with fresh Gallery-install verification; merged Zensical PR #41 and verified canonical deployment; issue #30's retention contract in merged PR #42; and issue #28's directory-identity packet in merged PR #43. Both temp packets have independently reviewed exact-head runtime/artifact evidence. Issues #26, #30 and #28 are closed. +**Completed:** Non-lab delivery and protected `0.0.15-beta` publication with fresh Gallery-install verification; merged Zensical PR #41 and verified canonical deployment; issues #30, #28 and #29 in merged PRs #42, #43 and #44; and the final documentation-source reconciliation in this change. All three temp packets have independently reviewed exact-head runtime/artifact evidence, and their issues are closed. -**Remaining:** Complete the final independent/hosted review, exact-head checks and merge of issue #29 [PR #44](https://github.com/SamErde/TheCleaners/pull/44); verify merged-source evidence for #28/#29; then perform the final documentation sweep. PR #42 merged-source runtime, artifact and documentation evidence is verified below. PR #44's fixtures are implemented and locally validated. TC-001 product acceptance, TC-003 through TC-007 labs and final TC-008/009 release acceptance remain deferred/separate. +**Remaining:** Complete this change's ordinary PR-head and merged-source delivery verification if it is not already recorded in the PR. After that, no further non-lab follow-on is authorized or required. TC-001 product acceptance, TC-003 through TC-007 labs and final TC-008/009 product/release acceptance remain deferred future work and require a later maintainer-directed resumption. | Bundle | Bounded work and exit evidence | Current status | | --- | --- | --- | @@ -43,9 +45,9 @@ The manifest stays on the current prerelease version during this packet. No comm | 2. Prerelease preparation | Select an unused alpha/preview or beta version, reconcile release history, align manifest/version/tag/release notes, and validate the exact candidate artifact across required hosted runtimes. Describe labs as deferred and preserve preview locks. Prepare a concrete release for maintainer approval. | Validated and approved. Exact source `345f06c861b6d4074e5896e0b27a19f869dfa7e3`, version `0.0.15-beta`, tag `v0.0.15-beta`, [release notes/history](releases/0.0.15-beta.md), and archive SHA-256 `1c8e061278e68c2e1537186709f79606735c6dda2e48b5cf65a4a877699e3383` are aligned. | | 3. Optional prerelease publication and installed-artifact verification | After explicit approval, publish the exact tested artifact through the protected environment; install that exact Gallery version in fresh Windows CI environments, verify package payload and metadata, quiet import, help, aliases, exports and preview locks, and retain version/commit-bound evidence. | Validated for `0.0.15-beta` by protected run [35268852573](https://github.com/SamErde/TheCleaners/actions/runs/35268852573) and its retained fresh-install reports. This is prerelease/process evidence; final 1.0 needs its own artifact, approval, publication, installed-package evidence, and product acceptance. | | 4. Zensical migration follow-up (issue #26) | Preserve navigation and exact-byte delivery controls; keep lowercase compatibility at the account-root boundary. | PR #41 merged as `af330858b41335366476f0b845e3f73a3c1497d1`; issue #26 and companion account-root PR #13 are closed/merged. Run [35282935445](https://github.com/SamErde/TheCleaners/actions/runs/35282935445) and an independent live recheck verified all 36 canonical files and required navigation; the 404/JavaScript fallback is not an HTTP redirect. | -| 5. Bounded temp issue closure | Complete explicit deterministic acceptance criteria without substituting fixture evidence for broad OS/product labs. | Issues #30 and #28 merged in PR #42 and PR #43. PR #44 (#29) is implemented in draft; its final review, hosted checks and merge, merged-source verification and the final documentation sweep continue under maintainer authorization. | +| 5. Bounded temp issue closure | Complete explicit deterministic acceptance criteria without substituting fixture evidence for broad OS/product labs. | Issues #30, #28 and #29 merged in PR #42, PR #43 and PR #44. Their final reviewed heads passed the supported hosted runtime/artifact matrix; exact merged-source evidence is recorded below. This change completes the final documentation-source reconciliation. | -The prerelease delivery sequence, issue #26 migration and PR #42/#43 merges are complete. Continue the explicitly authorized PR #44 review and merge cycle, then reconcile all three packets in the documentation sweep. Do not select these implemented packets again as fresh work or start labs without new maintainer direction and approved disposable-host prerequisites. +The prerelease delivery sequence, issue #26 migration, PR #42/#43/#44 merges and this final documentation-source reconciliation are complete. If this change's PR-head or merged-source delivery evidence is not yet recorded in its PR, verify it there without creating another documentation-only follow-up. Do not select these implemented packets again as fresh work or start labs without new maintainer direction and approved disposable-host prerequisites. The previous next stage (DELETE-PENDING, ROOT-RACE, HANDLE-RECOVERY fixture drivers and evidence-schema regressions) is deferred with the lab work. Do not resume provisioning, actual-root acceptance, IIS/Exchange labs, or profile acceptance automatically. Preserve the runbook and case inventory for a later maintainer-directed resumption. TC-001 product acceptance, TC-003 through TC-007 acceptance, and final stable-release acceptance remain open. No IIS/Exchange removal or 1.0 Exchange `-AllowRemoval` is introduced. @@ -55,15 +57,15 @@ See [publishing controls](publishing.md) and the [copy-ready recovery prompt](ne **Merged implementation:** [PR #43](https://github.com/SamErde/TheCleaners/pull/43) merged as `0829d076ac13095ed016c54ea96c4a8b6abd8287` and closed issue #28. Its [directory-identity packet](issue-28-directory-identity.md) adds 14 cases across both public temp commands. They verify retained-handle prevention with native sharing violation 32, native identity refusal after explicitly injected handle loss with empty/populated replacements and matching metadata, normal deepest-first pruning, preservation boundaries, WhatIf and terminating errors. No executable runtime changes were required. -Exact reviewed head `12db558565d39e1a52c726160a6b4014b72cf5ff` passed [build 35336487649](https://github.com/SamErde/TheCleaners/actions/runs/35336487649): PS7.4.20/7.5.11/7.6.6 each passed 347 unit plus four integration tests; PS5.1.26100.33296 passed 351 combined tests, all with zero failures/skips/not-run. PS7 coverage was 88.05% (1,636/1,858). All eleven artifact-wrapper digests, runtime/source reports, ACL and local-feed evidence and repeated/cross-runtime archives were independently inspected; the archive digest matches PR #42 below. Terra high independently approved Sol high's implementation; Copilot and CodeRabbit completed reviews and all six review threads were resolved before the exact-head guarded merge. Merged-source verification is a separate next gate. +Exact reviewed head `12db558565d39e1a52c726160a6b4014b72cf5ff` passed [build 35336487649](https://github.com/SamErde/TheCleaners/actions/runs/35336487649): PS7.4.20/7.5.11/7.6.6 each passed 347 unit plus four integration tests; PS5.1.26100.33296 passed 351 combined tests, all with zero failures/skips/not-run. PS7 coverage was 88.05% (1,636/1,858). All eleven artifact-wrapper digests, runtime/source reports, ACL and local-feed evidence and repeated/cross-runtime archives were independently inspected; the archive digest matches PR #42 below. Terra high independently approved Sol high's implementation; Copilot and CodeRabbit completed reviews and all six review threads were resolved before the exact-head guarded merge. Merged-source build [35338162068](https://github.com/SamErde/TheCleaners/actions/runs/35338162068), analyzer [35338162047](https://github.com/SamErde/TheCleaners/actions/runs/35338162047) and documentation run [35338162004](https://github.com/SamErde/TheCleaners/actions/runs/35338162004) all passed for merge `0829d076ac13095ed016c54ea96c4a8b6abd8287`; the documentation deployment verified 38 files at tree digest `02edb319e5155a4570711a0496453525ee387163f38629d621224bdfd5467c50` and deployment commit `d139298e943cce2f0de4648c3b4debfc10014af9`. -Historical clean integration `171b4cc558b875f72ffedd68aa051d6aeac6e43e` passed 18/18 local tests before the metadata-matching refinement. Correction `2372a218d04354df100c2d9188bc30c419764151` passed 18/18 locally but its hosted build failed on two unused test-display parameters, removed in `da99d4ebdd0e8c76cba332eb506e06d2eda43691`. Final clean head `12db558565d39e1a52c726160a6b4014b72cf5ff` passed **18/18** (14 fixtures plus four documentation contracts) on PowerShell **7.6.6** and Windows PowerShell **5.1.26100.9444**, Pester **5.7.1**, Windows **10.0.26200.0**, with zero failures/skips/not-run. Strict Zensical **0.0.62**, parser and PR-range whitespace checks passed. The evidence note distinguishes each historical scope. Issue #29 remains in progress; broader TC-003/004 and product/release gates remain open. +Historical clean integration `171b4cc558b875f72ffedd68aa051d6aeac6e43e` passed 18/18 local tests before the metadata-matching refinement. Correction `2372a218d04354df100c2d9188bc30c419764151` passed 18/18 locally but its hosted build failed on two unused test-display parameters, removed in `da99d4ebdd0e8c76cba332eb506e06d2eda43691`. Final clean head `12db558565d39e1a52c726160a6b4014b72cf5ff` passed **18/18** (14 fixtures plus four documentation contracts) on PowerShell **7.6.6** and Windows PowerShell **5.1.26100.9444**, Pester **5.7.1**, Windows **10.0.26200.0**, with zero failures/skips/not-run. Strict Zensical **0.0.62**, parser and PR-range whitespace checks passed. The evidence note distinguishes each historical scope. Issue #29 later merged as recorded below; broader TC-003/004 and product/release gates remain open. ## September 18 issue #29 deletion-rights packet -**Implemented in draft:** [Issue #29's deletion-rights packet](issue-29-delete-rights.md) adds 12 cases covering both temp commands with real NTFS read-denied/delete-allowed and delete-denied ACLs, errors/Stop/reconciliation, disappearance/directory substitution, every byte of the 128-bit native identity, volume identity and invalid-handle fail-closed behavior. The suite initializes native interop independently and verifies terminating ACL setup and restoration. No executable runtime change was required. +**Merged implementation:** [PR #44](https://github.com/SamErde/TheCleaners/pull/44) merged as `6fd8af169da631d17579a3c7eb3fa0aa8b285be0` and closed issue #29. Its [deletion-rights packet](issue-29-delete-rights.md) adds 12 cases covering both temp commands with real NTFS read-denied/delete-allowed and delete-denied ACLs, errors/Stop/reconciliation, disappearance/directory substitution, every byte of the 128-bit native identity, volume identity and invalid-handle fail-closed behavior. The suite initializes native interop independently and verifies terminating ACL setup and restoration. No executable runtime change was required. -Exact clean rebased commit `a1f3b2a3e3d66c331de31c7457a17e733cab3582` passed **16/16** tests (12 new cases plus four documentation contracts) with Pester **5.7.1** under PowerShell **7.6.6** and Windows PowerShell **5.1.26100.9444** on Windows **10.0.26200.0**, zero failures/skips/not-run. Independent Astra high review of pre-rebase head `7ce8c0f6796617c47c046a4d4c90ca2ed86d4a96` also passed 12/12 standalone cases in fresh processes on both hosts with no native type initialized beforehand. Historical integration `51ef3783f8f89c15b870042579c09a6073e816f3` passed 15/15 before the all-byte and standalone refinements. Official Microsoft API documentation determines the ReFS identity design; ReFS runtime tests remain explicitly unexecuted TC-003/004 acceptance. The packet documents why the existing stricter `FILE_SHARE_READ` contract supersedes the issue comment's proposed write/delete sharing, including the attribute-only timestamp exception. Issues #30 and #28 are merged; final-head hosted validation and final review of this packet remain required before closure. Broader product/release acceptance remains separate. +Exact reviewed head `abe5f4275b2d5b9a7a510aa0759413dbcf91a727` passed [build 35339431249](https://github.com/SamErde/TheCleaners/actions/runs/35339431249): PS7.4.20/7.5.11/7.6.6 each passed 359 unit plus four integration tests; PS5.1.26100.33296 passed 363 combined tests, all with zero failures/skips/not-run. PS7 coverage was 88.05% (1,636/1,858). Independent inspection verified all eleven artifact wrappers, source/runtime reports, NUnit results, ACL and local-feed evidence, and repeated/cross-runtime archives. The archive remained 19 files and 224,558 bytes with SHA-256 `5153966aaef9f194fdf60fe8793989f4693dcd3310b10c4223d6208865d0135f`. Astra high independently approved the Sol high implementation; Copilot completed review, all five review threads were resolved, and the CodeRabbit quota-skipped review remained incomplete rather than an approval. Merged-source build [35340908362](https://github.com/SamErde/TheCleaners/actions/runs/35340908362) passed at `6fd8af169da631d17579a3c7eb3fa0aa8b285be0` with the same runtimes, counts, zero failure/skip/not-run result, 88.05% coverage and archive digest; all eleven retained artifacts were independently verified. Merged-source analyzer [35340908372](https://github.com/SamErde/TheCleaners/actions/runs/35340908372) passed. Documentation run [35340908280](https://github.com/SamErde/TheCleaners/actions/runs/35340908280) and an independent live check passed all 39 files and required navigation at deployment commit `4ccfa644f43ac0af18778a5a750cde6e9f5ea2fa` and tree digest `0e54c5549e571ace9642febaab15d8acef927f43f313346df300dccad200da41`. Official Microsoft API documentation determines the ReFS identity design; ReFS runtime tests remain explicitly unexecuted TC-003/004 acceptance. ## September 18 issue #30 retention packet @@ -74,7 +76,7 @@ Exact reviewed head `719750ce8c7fd3142b24261b8b75d09499e9f840` passed [build 353 Merged-source build [35332020558](https://github.com/SamErde/TheCleaners/actions/runs/35332020558) passed at `3d07e9ccbfd441c388b1a3a69edc92fc326a4a66`: PS7.4.20/7.5.11/7.6.6 each passed 333 unit and four integration tests, and Windows PS5.1.26100.33296 passed 337 combined tests, with zero failures/skips/not-run. Independent inspection verified all eleven artifact wrappers, exact source/runtime reports, 87.73% PS7 coverage, ACL evidence, local-feed rehearsal and repeated/cross-runtime archive equality with the same package digest above. Merged-source analyzer [35332020450](https://github.com/SamErde/TheCleaners/actions/runs/35332020450) passed. Documentation deployment [35332020512](https://github.com/SamErde/TheCleaners/actions/runs/35332020512) and an independent live check verified all 37 canonical files and required navigation against the retained site manifest. The earlier local integration checkpoint below is historical pre-merge evidence. -Exact clean integration commit `1f6a28e1da328440f1942c66648e9991ba3c5522` passed 28 new fixture cases and four documentation contracts (**32/32**) under PowerShell **7.6.6** and Windows PowerShell **5.1.26100.9444**, with Pester **5.7.1** on Windows **10.0.26200.0**. Both runs had zero failures/skips/not-run tests; strict Zensical **0.0.62** and configuration validation passed. The [issue evidence](issue-30-retention-handle.md) records the test hash and scope. This local checkpoint alone was not merge evidence; the exact final-head and merged-source results above supersede its then-outstanding hosted checks. Issue #28 is now merged and issue #29 remains in progress. TC-001 product acceptance, TC-003 through TC-007 lab acceptance, and final TC-008/009 release acceptance remain open. +Exact clean integration commit `1f6a28e1da328440f1942c66648e9991ba3c5522` passed 28 new fixture cases and four documentation contracts (**32/32**) under PowerShell **7.6.6** and Windows PowerShell **5.1.26100.9444**, with Pester **5.7.1** on Windows **10.0.26200.0**. Both runs had zero failures/skips/not-run tests; strict Zensical **0.0.62** and configuration validation passed. The [issue evidence](issue-30-retention-handle.md) records the test hash and scope. This local checkpoint alone was not merge evidence; the exact final-head and merged-source results above supersede its then-outstanding hosted checks. Issues #28 and #29 later merged. TC-001 product acceptance, TC-003 through TC-007 lab acceptance, and final TC-008/009 release acceptance remain open. ## Issue #26 Zensical migration checkpoint @@ -167,7 +169,7 @@ At the PR #36 checkpoint, no disposable host, snapshot/restore proof, ReFS volum | TC-006 | Exchange preview guard, experimental discovery, validated per-directory patterns, protected locations, and lab fixtures | Merged preview-only implementation covers the guard, IIS decoupling, fixed-root validation, per-directory filename/ETL patterns, and database/transaction-log protection. No exact-commit Exchange product/build lab or service-health evidence exists; removal stays disabled. | | TC-007 | Typed stale-profile output, unknown LastUseTime, optional size, SID resolution, and command inventory | Merged read-only implementation covers typed output, unknown-date handling, optional reparse-safe size with retained identity-checked handles, best-effort SID resolution, and orphan-helper retirement. Exact hosted fixtures passed; Windows client/server acceptance remains open. | | TC-008 | One source-layout package, exact-artifact tests/publication, reproducible build, complete runtime matrix, and CI gates | Exact `0.0.15-beta` evidence validates the runtime/archive gates, local-feed rehearsal, protected publication, and fresh Gallery installation. TC-008 remains open for the final 1.0 artifact, approval, publication, installed-package evidence, and release acceptance; native/platform/product lab variants remain assigned to TC-003 through TC-007. | -| TC-009 | Complete help/docs, canonical deployment verification, changelog/history, contributor/security policy, RC and release checks | Exact `0.0.15-beta` documentation, metadata, protected publication, and published-install evidence is complete. Support for both URL cases is deferred to issue #26. Final product and 1.0 release acceptance remain open. | +| TC-009 | Complete help/docs, canonical deployment verification, changelog/history, contributor/security policy, RC and release checks | Exact `0.0.15-beta` documentation, metadata, protected publication, and published-install evidence is complete. Issue #26 and companion account-root PR #13 are complete; lowercase compatibility uses a JavaScript fallback from the account-root 404 page rather than an HTTP redirect. Final product and 1.0 release acceptance remain open. | ### TC-003/004 completion checklist @@ -216,7 +218,7 @@ At the PR #36 checkpoint, no disposable host, snapshot/restore proof, ReFS volum - [x] Generate command references and external help from the source of truth; add drift checks and validate the documentation build strictly in CI. - [x] Update README, migration guide, changelog, support/security policy, contributing instructions, PR template, and agent instructions. - [x] Review template leftovers, remove the duplicate `.github/LICENSE`, move editor settings to the repository-root `.vscode`, and retain the existing spell-check/pre-commit configuration; analyzer roles remain explicit rather than silently removed. -- [x] Verify exact deployed bytes and navigation at canonical `https://day3bits.com/TheCleaners/`. Run 35257555130 tied 71 public files and all five required navigation routes to exact merged source `345f06c861b6d4074e5896e0b27a19f869dfa7e3`; an independent live recheck passed. Support for both URL cases is deferred to Zensical issue #26. +- [x] Verify exact deployed bytes and navigation at canonical `https://day3bits.com/TheCleaners/`. Run 35257555130 tied 71 public files and all five required navigation routes to exact merged source `345f06c861b6d4074e5896e0b27a19f869dfa7e3`; an independent live recheck passed. Zensical issue #26 later closed in PR #41, and companion account-root PR #13 added the lowercase 404/JavaScript fallback. - [x] Attach manifests and hashes to both exact hosted archive outputs and verify isolated clean installs of the tested artifacts. - [x] Verify the bounded stored-ZIP reproducibility contract on exact merged commit `345f06c861b6d4074e5896e0b27a19f869dfa7e3`: original/repeated and cross-runtime bytes match for all three supported PS7 Windows builders at 19 files, 224,050 bytes and SHA-256 `1c8e061278e68c2e1537186709f79606735c6dda2e48b5cf65a4a877699e3383`; PS5.1 consumed the canonical 7.6.6 archive. Historical archives remain labeled to their original commits. - [x] Align and approve concrete prerelease version/tag/manifest metadata, release notes and reconciled history for `0.0.15-beta`. diff --git a/docs/support-matrix.md b/docs/support-matrix.md index 6a3df89..0785e9b 100644 --- a/docs/support-matrix.md +++ b/docs/support-matrix.md @@ -2,20 +2,20 @@ **Windows client/server, IIS, Exchange, and profile lab validation is deferred future work, not underway.** Hosted fixture/package results below remain scoped to their exact tested commits and do not establish product acceptance. -The 1.0 support contract is Windows-only: Windows PowerShell 5.1 plus Microsoft-supported PowerShell 7 releases on Windows. The manifest minimum remains 5.1. Core and Desktop edition compatibility does not imply Linux or macOS support. Current exact runtime evidence is for merged commit `345f06c861b6d4074e5896e0b27a19f869dfa7e3`; it does not apply automatically to a later commit. +The 1.0 support contract is Windows-only: Windows PowerShell 5.1 plus Microsoft-supported PowerShell 7 releases on Windows. The manifest minimum remains 5.1. Core and Desktop edition compatibility does not imply Linux or macOS support. Current exact merged runtime evidence is for `6fd8af169da631d17579a3c7eb3fa0aa8b285be0`; it does not apply automatically to later commits. ## Current exact merged runtime evidence -[Build run 35257555108](https://github.com/SamErde/TheCleaners/actions/runs/35257555108) and independent artifact inspection validate the current candidate: +[Build run 35340908362](https://github.com/SamErde/TheCleaners/actions/runs/35340908362) and independent inspection of all eleven retained artifacts validate exact merged source `6fd8af169da631d17579a3c7eb3fa0aa8b285be0`: | Runtime | Exact merged evidence | | --- | --- | -| Windows PowerShell 5.1 | `5.1.26100.33296` Desktop passed 309 combined tests with zero failures, skips or not-run tests and consumed the canonical 7.6.6 artifact. | -| PowerShell 7.4 LTS | `7.4.20` passed 305 unit and 4 integration tests with zero failures, skips or not-run tests; coverage was 87.51% (1,626/1,858). | -| PowerShell 7.5 stable | `7.5.11` passed 305 unit and 4 integration tests with zero failures, skips or not-run tests; coverage was 87.51% (1,626/1,858). | -| PowerShell 7.6 LTS | `7.6.6` passed 305 unit and 4 integration tests with zero failures, skips or not-run tests; coverage was 87.51% (1,626/1,858). | +| Windows PowerShell 5.1 | `5.1.26100.33296` Desktop passed 363 combined tests with zero failures, skips or not-run tests and consumed the canonical 7.6.6 artifact. | +| PowerShell 7.4 LTS | `7.4.20` passed 359 unit and 4 integration tests with zero failures, skips or not-run tests; coverage was 88.05% (1,636/1,858). | +| PowerShell 7.5 stable | `7.5.11` passed 359 unit and 4 integration tests with zero failures, skips or not-run tests; coverage was 88.05% (1,636/1,858). | +| PowerShell 7.6 LTS | `7.6.6` passed 359 unit and 4 integration tests with zero failures, skips or not-run tests; coverage was 88.05% (1,636/1,858). | -All three PS7 producers generated identical original and repeated 19-file archives: 224,050 bytes, SHA-256 `1c8e061278e68c2e1537186709f79606735c6dda2e48b5cf65a4a877699e3383`. Protected run [35268852573](https://github.com/SamErde/TheCleaners/actions/runs/35268852573) used that archive for `0.0.15-beta` publication and fresh-install verification; independent verification matched all 15 retained artifact wrappers and four installed-package reports. The bounded PR #35 baseline review is complete, while its native, platform and product cases remain assigned to deferred labs. Final 1.0 release acceptance remains open. +All three PS7 producers generated identical original and repeated 19-file archives: 224,558 bytes, SHA-256 `5153966aaef9f194fdf60fe8793989f4693dcd3310b10c4223d6208865d0135f`. Independent inspection matched all eleven artifact wrappers, source/runtime reports, NUnit results, ACL and local-feed evidence, and repeated/cross-runtime archives. Merged-source analyzer run [35340908372](https://github.com/SamErde/TheCleaners/actions/runs/35340908372) and documentation run [35340908280](https://github.com/SamErde/TheCleaners/actions/runs/35340908280) also passed. The distinct published `0.0.15-beta` artifact remains 224,050 bytes with SHA-256 `1c8e061278e68c2e1537186709f79606735c6dda2e48b5cf65a4a877699e3383` from exact source `345f06c861b6d4074e5896e0b27a19f869dfa7e3`; current untagged source changes are not part of that Gallery package. The bounded PR #35 baseline review is complete, while its native, platform and product cases remain assigned to deferred labs. Final 1.0 release acceptance remains open. ## Historical runtime evidence diff --git a/docs/tc008-uncovered-branch-review.md b/docs/tc008-uncovered-branch-review.md index dacca42..adffbb1 100644 --- a/docs/tc008-uncovered-branch-review.md +++ b/docs/tc008-uncovered-branch-review.md @@ -49,4 +49,4 @@ These are 30 additional test cases: 16 temp, three profile, six preview traversa - **Defensive inputs:** blank path/provider and malformed private suffix inputs are rejected by upstream parameter/filename validation. Unsupported OS guards are outside the Windows support contract. No real machine roots or registry settings were changed to execute a fallback. - **Import and artifacts:** all missed instructions in this baseline are in runtime functions; loader/package and build correctness also rely on separate import, integration, deterministic archive, and Python comparator checks. Parent runtime coverage is not their acceptance measure. -The review of the baseline gaps is complete without pursuing 100% coverage. Windows client/server, elevated/non-elevated, real-root, ReFS, adversarial/concurrency, IIS, Exchange, and profile product acceptance remain open. At this review checkpoint, TC-008 still required protected publication and installed-package verification, while TC-009 retained hosting, deployment, metadata, and authorization work. Those statements are historical: the beta publication and exact title-case deployment later passed, as recorded in the [release ledger](release-plan-1.0.md). The Zensical framework migration is open in PR #41 under issue #26; review, merge, deployment, and the account-root lowercase redirect remain open. +The review of the baseline gaps is complete without pursuing 100% coverage. Windows client/server, elevated/non-elevated, real-root, ReFS, adversarial/concurrency, IIS, Exchange, and profile product acceptance remain open. At this review checkpoint, TC-008 still required protected publication and installed-package verification, while TC-009 retained hosting, deployment, metadata, and authorization work. Those statements are historical: the beta publication and exact title-case deployment later passed, as recorded in the [release ledger](release-plan-1.0.md). Zensical PR #41 and companion account-root PR #13 also later merged; the latter supplies lowercase compatibility through JavaScript from a 404 page rather than an HTTP redirect. Current deployment and release status belongs to the ledger.