Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 25 additions & 2 deletions docs/knowledgebase/managed-deployment.md
Original file line number Diff line number Diff line change
Expand Up @@ -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** (`<<kotorDirectory>>` / `<<modDirectory>>`).
- 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`,
Expand Down
12 changes: 12 additions & 0 deletions docs/knowledgebase/validation-pipeline.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 `<<kotorDirectory>>`. 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:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
Expand Down
Loading