From 928a840bac1a0f1a161712e617bc48bfb7e22dd8 Mon Sep 17 00:00:00 2001 From: Copilot Date: Fri, 17 Jul 2026 02:01:48 -0500 Subject: [PATCH] docs(kb): record managed validation decision B (parity U4) Document that DryRun stays classic-path; managed installs rely on install-time staging/manifests rather than VFS staging redirect. --- docs/knowledgebase/managed-deployment.md | 27 +++++++++++++++++-- docs/knowledgebase/validation-pipeline.md | 12 +++++++++ ...-three-project-parity-architecture-plan.md | 4 +-- 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/docs/knowledgebase/managed-deployment.md b/docs/knowledgebase/managed-deployment.md index cc40c1e0..140a97de 100644 --- a/docs/knowledgebase/managed-deployment.md +++ b/docs/knowledgebase/managed-deployment.md @@ -36,8 +36,31 @@ Classic remains default when the toggle is off. Session entry: editing `settings.json`. Fail-closed when managed is on without a resolvable profile. Documented in [core-cli-reference.md](core-cli-reference.md). -`[OPEN]` Still deferred: patcher provenance (ImmutableCheckpoint), per-component -uninstall GUI polish, managed dry-run/VFS validation parity. Follow-up plan: +`[REPO]` Uninstall / purge GUI (parity U5 / [#179](https://github.com/oldrepublicwizard/ModSync/pull/179)): +Tools menu **Managed Deployment Status** and **Purge Managed Deployments**; mod-list +**Deployed** badge; context menu **Uninstall Managed Deployment** when a manifest +exists. Purge/uninstall are blocked while `ManagedInstallSession.Current` is set. + +## Validation vs managed installs (parity U4 decision B) + +`[REPO]` **Decision (2026-07-17):** keep classic VFS DryRun as-is; do **not** redirect +DryRun through managed staging in this release. When `managedDeploymentEnabled` is on: + +- Pre-install validation (wizard `ValidatePage`, CLI `validate`, `install` pre-check) + still runs the shared `InstallationValidationPipeline` against **game + mod + directories as classic paths** (`<>` / `<>`). +- DryRun therefore answers “what would classic direct-to-game instructions do?”, + **not** “what lands in profile staging before hardlink deploy.” +- Agents and humans should treat DryRun as a **classic-path sanity check**. Trust + managed correctness to: FOMOD gate, archive presence, install-time staging + + `DeploymentService` manifests, then post-install Status / Deployed badge / + uninstall. + +Full managed DryRun/VFS staging parity remains an optional future unit (plan option +A). See [validation-pipeline.md](validation-pipeline.md#managed-deployment-caveat). + +`[OPEN]` Still deferred: patcher provenance (ImmutableCheckpoint), optional managed +VFS DryRun redirect (U4 option A). Follow-up plan: [docs/plans/2026-07-13-004-managed-deployment-validation-plan.md](../plans/2026-07-13-004-managed-deployment-validation-plan.md). Tests: `DeploymentServiceTests`, `ManagedInstallSessionTests`, `ModSyncSettingsTests`, diff --git a/docs/knowledgebase/validation-pipeline.md b/docs/knowledgebase/validation-pipeline.md index 2fd9f311..4bdb9b18 100644 --- a/docs/knowledgebase/validation-pipeline.md +++ b/docs/knowledgebase/validation-pipeline.md @@ -31,6 +31,18 @@ If **FullValidation** is off, Environment/Conflicts/InstallOrder are skipped; Co Do not use `RealFileSystemProvider` when answering “what would install do?” — use validation with `--dry-run`. +### Managed deployment caveat + +`[REPO]` **Parity U4 decision B (2026-07-17):** DryRun models **classic** destination paths under `<>`. It does **not** simulate profile staging roots or hardlink deploy used when managed deployment is enabled. + +When validating a managed install setup: + +1. Still run the normal pipeline (Environment → … → DryRun) — catches missing archives, FOMOD gate failures, instruction path errors against the game tree. +2. Do **not** treat a green DryRun as proof that managed staging/deploy will match byte-for-byte; confirm after install via Managed Deployment Status / Deployed badges / manifests. +3. Optional future work (decision A): redirect DryRun destinations under managed staging — not shipped. + +Details: [managed-deployment.md](managed-deployment.md#validation-vs-managed-installs-parity-u4-decision-b). + ## Options presets `ValidationPipelineOptions` maps to CLI and wizard behavior: diff --git a/docs/plans/2026-07-16-001-three-project-parity-architecture-plan.md b/docs/plans/2026-07-16-001-three-project-parity-architecture-plan.md index 41475542..6d4b1f90 100644 --- a/docs/plans/2026-07-16-001-three-project-parity-architecture-plan.md +++ b/docs/plans/2026-07-16-001-three-project-parity-architecture-plan.md @@ -355,8 +355,8 @@ Gate itself remains **U7 / #170** until that PR lands — do not bypass it when | Unit | Status | |------|--------| | U3 CLI `--profile` + shared session polish | In PR (CLI `--managed`/`--no-managed`/`--profile`) | -| U4 Managed VFS / validation parity | Deferred | -| U5 Uninstall / purge GUI | In PR (context uninstall + Deployed badge; purge menu already shipped) | +| U4 Managed VFS / validation parity | Done (decision B — document classic DryRun caveat; option A deferred) | +| U5 Uninstall / purge GUI | Done ([#179](https://github.com/oldrepublicwizard/ModSync/pull/179)) | | U6 Patcher provenance (ImmutableCheckpoint) | Deferred | | U7 FOMOD gate (#170) + living-plan sync | Deferred (open PR) | | U8 `modsync://` Phase 2 OS consume | Deferred |