|
| 1 | +ModSanity Comment-Derived Roadmap (Verification-First) |
| 2 | +How Codex should respond (required format) |
| 3 | + |
| 4 | +For every bullet below, Codex should output: |
| 5 | + |
| 6 | +Status: Implemented | Partial | Not Implemented |
| 7 | + |
| 8 | +Evidence: file paths + symbols (functions/structs/modules/commands) |
| 9 | + |
| 10 | +How to reproduce: exact CLI command(s) |
| 11 | + |
| 12 | +Gaps: what still fails / missing UX / missing docs / missing edge case |
| 13 | + |
| 14 | +Tests: test name(s) or “none” |
| 15 | + |
| 16 | +Phase 0 — Baseline Inventory & Truth Pass |
| 17 | + |
| 18 | +Goal: establish what exists before implementing anything. |
| 19 | + |
| 20 | +0.1 CLI Capability Map |
| 21 | + |
| 22 | +Q: Is there a single command that prints all supported operations and their flags (e.g., modsanity --help plus subcommand help)? |
| 23 | + |
| 24 | +Q: Is there a modsanity doctor or modsanity diagnose command that audits system state (Steam/GOG detection, game paths, tool runtimes, permissions, proton availability)? |
| 25 | + |
| 26 | +Q: Is there a “first run” state persisted anywhere (config + initialization marker)? |
| 27 | + |
| 28 | +0.2 Config Surface Area |
| 29 | + |
| 30 | +Q: Is there a single .toml (or config) source-of-truth with documented keys? |
| 31 | + |
| 32 | +Q: Are config keys validated, with defaults, and clear error messages on invalid paths? |
| 33 | + |
| 34 | +Deliverable: docs/verification/phase0_inventory.md containing: |
| 35 | + |
| 36 | +command list |
| 37 | + |
| 38 | +config keys |
| 39 | + |
| 40 | +folder layout |
| 41 | + |
| 42 | +tool detection logic list |
| 43 | + |
| 44 | +Phase 1 — Installation & Onboarding (Linux Newbie Friction) |
| 45 | + |
| 46 | +Driven by: “ran install.sh, don’t know what to do next”, scan not working. |
| 47 | + |
| 48 | +1.1 Guided First-Run |
| 49 | + |
| 50 | +Q: Does modsanity init exist? |
| 51 | + |
| 52 | +Q: Does it guide the user through: |
| 53 | + |
| 54 | +selecting game source (Steam, GOG, Manual) |
| 55 | + |
| 56 | +detecting game install path |
| 57 | + |
| 58 | +confirming writable mod staging paths |
| 59 | + |
| 60 | +saving config |
| 61 | + |
| 62 | +Q: Does it print “next commands to run” at the end? |
| 63 | + |
| 64 | +1.2 Game Scan Reliability |
| 65 | + |
| 66 | +Q: Does modsanity scan exist and succeed without requiring the user to memorize bash lines? |
| 67 | + |
| 68 | +Q: If scan fails, does it provide actionable next steps (paths searched, permissions, expected directories)? |
| 69 | + |
| 70 | +1.3 Documentation for Day-1 Users |
| 71 | + |
| 72 | +Q: Is there a minimal quickstart that matches current CLI exactly? |
| 73 | + |
| 74 | +Q: Are install + first run instructions validated against the actual code paths? |
| 75 | + |
| 76 | +Deliverable: docs/quickstart.md + a smoke test script (optional). |
| 77 | + |
| 78 | +Phase 2 — Path Flexibility & Non-Data Installs (SKSE-class) |
| 79 | + |
| 80 | +Driven by: move mods folder from ~/.local, and mods that install outside Data/. |
| 81 | + |
| 82 | +2.1 Mods Folder Relocation |
| 83 | + |
| 84 | +Q: Is the mods folder location configurable via .toml (e.g., mods_dir)? |
| 85 | + |
| 86 | +Q: Is there a CLI override flag (e.g., --mods-dir)? |
| 87 | + |
| 88 | +Q: Does the tool migrate/handle existing content safely if the path changes? |
| 89 | + |
| 90 | +2.2 Non-Data Deployment Classes |
| 91 | + |
| 92 | +Q: Is there a concept of “install target” (Data dir vs game root vs other)? |
| 93 | + |
| 94 | +Q: Are SKSE-like mods supported as first-class installs (not “manual required”)? |
| 95 | + |
| 96 | +Q: Are there rules/manifest logic to place files correctly? |
| 97 | + |
| 98 | +Deliverable: Install target model documented (even if minimal): |
| 99 | + |
| 100 | +data/ |
| 101 | + |
| 102 | +game root |
| 103 | + |
| 104 | +specific subpaths (SKSE plugins, ENB, etc.) |
| 105 | + |
| 106 | +Phase 3 — Toolchain Support (The Big One) |
| 107 | + |
| 108 | +Driven by repeated asks: xEdit, Bodyslide, Synthesis, Nemesis/Pandora, Skypatcher. |
| 109 | + |
| 110 | +3A — Tool Runner Architecture (Foundation) |
| 111 | + |
| 112 | +Q: Is there a unified tool runner subsystem (registry + launcher)? |
| 113 | + |
| 114 | +Q: Can tools be defined declaratively (config) + invoked consistently (CLI)? |
| 115 | + |
| 116 | +Q: Is runtime selection supported (Native vs Proton/Wine)? |
| 117 | + |
| 118 | +Q: Are environment variables + working directory + load order context injected? |
| 119 | + |
| 120 | +3B — Specific Tool Integrations |
| 121 | + |
| 122 | +Each tool below must answer: “can I run it from ModSanity and it sees the correct mod environment?” |
| 123 | + |
| 124 | +xEdit / SSEEdit |
| 125 | + |
| 126 | +Q: Does modsanity tools run xedit exist (or equivalent)? |
| 127 | + |
| 128 | +Q: Does it work under Proton/Wine with required runtimes present? |
| 129 | + |
| 130 | +Q: Are xEdit arguments configurable? |
| 131 | + |
| 132 | +Bodyslide |
| 133 | + |
| 134 | +Q: Is Bodyslide supported with correct output paths? |
| 135 | + |
| 136 | +Q: Does it respect profiles / mod staging? |
| 137 | + |
| 138 | +Synthesis |
| 139 | + |
| 140 | +Q: Is Synthesis supported either natively (dotnet) or via Proton? |
| 141 | + |
| 142 | +Q: Are the “root cert / dotnet restore” proton issues handled via helper script or doctor flow? |
| 143 | + |
| 144 | +Q: Does ModSanity provide the “mods installed environment” Synthesis expects? |
| 145 | + |
| 146 | +Nemesis / Pandora / animation tools |
| 147 | + |
| 148 | +Q: Is there an integration path to run these tools with correct mod list + outputs? |
| 149 | + |
| 150 | +Q: Are outputs placed correctly and tracked? |
| 151 | + |
| 152 | +Skypatcher / patchers |
| 153 | + |
| 154 | +Q: Is there a general “patcher” framework, or is each patcher bespoke? |
| 155 | + |
| 156 | +Q: Are patch outputs tracked and reversible? |
| 157 | + |
| 158 | +Deliverables: |
| 159 | + |
| 160 | +modsanity tools list |
| 161 | + |
| 162 | +modsanity tools run <tool> |
| 163 | + |
| 164 | +modsanity doctor checks: proton prefix, dotnet, wine deps, certificates |
| 165 | + |
| 166 | +Phase 4 — MO2 Interoperability & Migration |
| 167 | + |
| 168 | +Driven by: import load order, handling VFS, migration blockers. |
| 169 | + |
| 170 | +4.1 Import Load Order / Profile |
| 171 | + |
| 172 | +Q: Can ModSanity import: |
| 173 | + |
| 174 | +mod list (enabled/disabled) |
| 175 | + |
| 176 | +plugin load order |
| 177 | + |
| 178 | +profile-specific settings |
| 179 | + |
| 180 | +Q: Does it support a read-only “preview import” mode? |
| 181 | + |
| 182 | +4.2 VFS Explanation & Bridging |
| 183 | + |
| 184 | +Q: Does ModSanity clearly define its model vs MO2 VFS? |
| 185 | + |
| 186 | +Q: Is there any bridging mode to reduce migration pain (even if limited)? |
| 187 | + |
| 188 | +Q: Are there docs that specifically answer: “How do you handle VFS?” |
| 189 | + |
| 190 | +Deliverable: |
| 191 | + |
| 192 | +docs/migration/mo2.md including “what transfers” and “what doesn’t”. |
| 193 | + |
| 194 | +Phase 5 — Platform Coverage: GOG & Non-Steam |
| 195 | + |
| 196 | +Driven by multiple users asking about GOG. |
| 197 | + |
| 198 | +5.1 GOG Detection & Pathing |
| 199 | + |
| 200 | +Q: Is GOG explicitly supported (not just “might work”)? |
| 201 | + |
| 202 | +Q: Can the user select platform in config and have consistent folder/compatdata handling? |
| 203 | + |
| 204 | +5.2 Manual Install Support (Fallback) |
| 205 | + |
| 206 | +Q: Can a user provide a game path and have everything work without Steam metadata? |
| 207 | + |
| 208 | +Deliverable: |
| 209 | + |
| 210 | +modsanity init supports Steam/GOG/Manual |
| 211 | + |
| 212 | +modsanity doctor reports platform status |
| 213 | + |
| 214 | +Phase 6 — Packaging & Distribution (Arch / AUR) |
| 215 | + |
| 216 | +Driven by repeated Arch+AUR asks. |
| 217 | + |
| 218 | +6.1 AUR Packaging Readiness |
| 219 | + |
| 220 | +Q: Is there an AUR-ready PKGBUILD (or release artifacts) maintained? |
| 221 | + |
| 222 | +Q: Are versioning and releases consistent and reproducible? |
| 223 | + |
| 224 | +Deliverable: |
| 225 | + |
| 226 | +/packaging/arch/PKGBUILD (or community docs) |
| 227 | + |
| 228 | +Phase 7 — UX Accessibility without Abandoning TUI |
| 229 | + |
| 230 | +Driven by “terminal is a big no”, migraine/contrast concerns, while others love TUI. |
| 231 | + |
| 232 | +7.1 Theme / Color Handling |
| 233 | + |
| 234 | +Q: Are colors strictly terminal-driven (no hardcoding), and documented? |
| 235 | + |
| 236 | +Q: Is there an optional “minimal color” mode? |
| 237 | + |
| 238 | +7.2 Windows Refugee Mitigation (Without GUI) |
| 239 | + |
| 240 | +Q: Does the tool provide discoverability: |
| 241 | + |
| 242 | +modsanity help getting-started |
| 243 | + |
| 244 | +“suggested next command” hints |
| 245 | + |
| 246 | +Q: Are error messages “human first”? |
| 247 | + |
| 248 | +Deliverable: |
| 249 | + |
| 250 | +docs/ui/accessibility.md |
| 251 | + |
| 252 | +Phase 8 — Scale Confidence: Huge Mod Lists |
| 253 | + |
| 254 | +Driven by fear of testing on main list, “huge and confuse”. |
| 255 | + |
| 256 | +8.1 Dry-Run / Audit Mode |
| 257 | + |
| 258 | +Q: Is there a no-write analysis mode (dry-run)? |
| 259 | + |
| 260 | +Q: Does it summarize: |
| 261 | + |
| 262 | +number of mods/plugins found |
| 263 | + |
| 264 | +missing masters / dependency issues |
| 265 | + |
| 266 | +conflicts detected (even basic) |
| 267 | + |
| 268 | +8.2 Safe Experiment Support |
| 269 | + |
| 270 | +Q: Is there support for “profiles” (separate mod lists under one profile)? |
| 271 | + |
| 272 | +(You already mentioned this is being worked on / needed.) |
| 273 | + |
| 274 | +Deliverable: |
| 275 | + |
| 276 | +modsanity audit --dry-run |
| 277 | + |
| 278 | +profile/list isolation validation |
| 279 | + |
| 280 | +Output Format for Codex 5.3 (paste this directly) |
| 281 | + |
| 282 | +Use this exact structure so you can diff results between versions: |
| 283 | + |
| 284 | +PHASE X.Y — <Title> |
| 285 | +Item: <exact question> |
| 286 | +Status: Implemented | Partial | Not Implemented |
| 287 | +Evidence: |
| 288 | +- <file_path>:<line or symbol> |
| 289 | +- <module::type::function> |
| 290 | +Reproduce: |
| 291 | +- <command> |
| 292 | +Notes: |
| 293 | +- <what works> |
| 294 | +- <what fails> |
| 295 | +Gaps: |
| 296 | +- <missing behavior> |
| 297 | +Tests: |
| 298 | +- <test name(s)> | none |
| 299 | + |
| 300 | +Minimal “What to check first” order (fastest truth pass) |
| 301 | + |
| 302 | +Phase 0 (inventory) |
| 303 | + |
| 304 | +Phase 2 (paths + SKSE class) |
| 305 | + |
| 306 | +Phase 3 (tool runner foundation) |
| 307 | + |
| 308 | +Phase 4 (MO2 import + VFS answer) |
| 309 | + |
| 310 | +Phase 5 (GOG) |
0 commit comments