Files
ForgeLM/.planning/phases/05-model-source-validation/05-CONTEXT.md
T

63 lines
2.0 KiB
Markdown

# Phase 5: Model Source Validation - Context
**Gathered:** 2026-04-02
**Status:** Ready for planning
**Mode:** Auto-generated (implementation already complete)
<domain>
## Phase Boundary
Users can choose valid runtime sources, models, and storage paths without destabilizing draft safety or applying invalid combinations.
</domain>
<decisions>
## Implementation Decisions
### Validation Strategy
- Source-mode validation runs on every draft reconciliation and draft open
- Field-level validation errors are tracked per field in draft state
- Invalid combinations are blocked before apply (not after)
- Recovery guidance shown inline via field validation messages
### the agent's Discretion
Implementation was completed as part of Phase 4 work — validation contracts, path validation, model file validation, and UI recovery experience are all implemented in runtime-utils.ts, useRuntimeManager.ts, and RuntimeSettingsDrawer.tsx.
</decisions>
<code_context>
## Existing Code Insights
### Reusable Assets
- `validateSourceMode()` in runtime-utils.ts — validates source/mode combinations
- `validateModelPath()` in runtime-utils.ts — validates model file paths
- `validateModelsDirectory()` in runtime-utils.ts — async directory validation
- `validateModelFile()` in runtime-utils.ts — validates individual model files
- Field validation state in useRuntimeManager draft state
### Established Patterns
- Validation runs on draft open, reset, and reconcile-to-baseline
- Field validations stored as `Record<string, FieldValidation>` in draft state
- UI shows inline validation errors per field in RuntimeSettingsDrawer
### Integration Points
- useRuntimeManager.ts — validation integrated into draft lifecycle
- RuntimeSettingsDrawer.tsx — displays validation errors inline
- runtime-utils.ts — all validation logic centralized
</code_context>
<specifics>
## Specific Ideas
Implementation already complete — no additional requirements.
</specifics>
<deferred>
## Deferred Ideas
None — phase complete.
</deferred>