feat: block validate/install until FOMOD archives are configured#170
feat: block validate/install until FOMOD archives are configured#170bodencrouch wants to merge 11 commits into
Conversation
Add a configured-only gate across the shared validation pipeline, CLI/GUI install paths, and wizard install start so dismissed, warned, or skipped post-download states cannot proceed without completing the FOMOD wizard.
…mod dir Wire InstallSingleComponentAsync and fail closed when the mod directory is absent; harden duplicate-Guid expansion and agent-facing recovery hints.
Distinguish enumerate failure from non-FOMOD so probe-miss cannot bypass the configured-only validate/install gate (R22).
|
PR split scrub (no force-push): Remote head for this PR remains the intended FOMOD-only tip ( Locally, paste/vision/page-0/headless commits that had been sitting ahead of this branch were not dropped — they were pointed at Full ownership table and recommended next PRs: Please keep reviewing #170 as FOMOD gate only; do not expect paste/protocol in this diff. |
…artPage Cover pipeline pass/fail, InstallationService block when unconfigured, and headless InstallStartPage ValidateAsync for configured vs unconfigured FOMOD.
DateTimeStyles.None turned ISO-8601 Z timestamps into local Kind (-05:00), breaking SerializationRoundTripTests JSON equality. Serialize/parse as UTC and leave FirstSeen unset during ModLink migration (cache owns that field).
Re-prompt dismissed FOMOD archives on Fetch Downloads, merge Mod Management wizard output into the selected mod, match nested registry basenames for prompt status, and normalize backslash paths when replacing prior FOMOD instructions.
Correct Mod Management dialog message escapes and use verbatim paths in the backslash reconfigure merger test so the project builds.
…ning managed-deploy work Progress totals no longer inflate when environment/archive stages are skipped. Refresh validation-pipeline KB for FomodConfiguration fail-closed, add stage UI coverage tests, and capture Phase 4 remaining units in plan 004.
Warn when configured lacks archive-scoped instructions; fail-closed on missing archives with prior FOMOD status; document warned skip behavior; cover dismiss→configure recovery and nested/backslash merger cases.
…gistry Stop filling empty Heading from ###/Name on markdown round-trip, skip PascalCasing URL registry keys (Https→https), rewrite ResourceRegistry as Url-entry arrays for XML, and normalize List<object> instruction paths so XML/TOML separators stay consistent.
|
❌ Code Style Check Failed This PR has code style issues that need to be fixed. Please run the code cleanup script locally: Windows: .\cleanup-code.ps1 -FixLinux/macOS: ./cleanup-code.sh --fixFor more information, see the Code Style Guidelines. |
Summary
FomodConfigurationGate— onlyconfiguredFOMOD prompt status passes;dismissed,warned, and unset all fail.InstallationServiceinstall safety net.docs/knowledgebase/fomod-support.md.Context
Follow-up to merged #169. Post-download dismiss/skip/warn paths remain for download-time flow only; validate/install now hard-block until the FOMOD wizard completes.
Test plan
FomodConfigurationGateTests(6 tests)FullyQualifiedName~Fomodtests locally (63 passed)