# Phase 16-02 — Fagor Fixup (Post-Review) ## Origine Code review post-implementazione v0.6 Fagor Support ha identificato: **Critical:** 1. `NcProgramValidator` case Fagor rifiuta `.` nel nome → default `ProgramExtension = ".nc"` contraddice regola validator 2. (Pre-existing, deferito) `Program.Invia` accoppia `FanucProgram` parsing a tutti i produttori **Major:** 1. (Deferito) `ResolvePath` NRE su null folder 2. (Deferito) Validator riceve `path` se `program.Name` null 3. `CncMachineFactoryTests` manca case Fagor 4. Behavior change Heidenhain/Siemens (esenzione check generic) non lockato in test 5. Letterali `ñ` in `NcProgramValidator.cs` rischio codepage Windows non-UTF8 ## Scope Fix immediato per: - Critical #1 — bug introdotto v0.6 - Major #3 — test mancante - Major #4 — lock comportamento con test - Major #5 — escape `ñ` → `ñ` Deferiti a ISS: - Critical #2 → ISS-013 - Major #1 → ISS-014 - Major #2 → ISS-016 ## Tasks 1. Riscrittura case Fagor in `ValidateName`: split stem/extension, whitelist su stem 2. Escape `'ñ'` → `'ñ'` (codice + messaggio errore) 3. 4 nuovi test Fagor coverage estensioni 4. 6 nuovi test lock Siemens/Heidenhain 5. `Create_Fagor_ReturnsFagorMachine` in `CncMachineFactoryTests` 6. ISSUES.md updated con ISS-012..ISS-017 ## Files modificati - `Cnc/NcProgramValidator.cs` - `NcProgramManager.Tests/Unit/NcProgramValidatorTests.cs` - `NcProgramManager.Tests/Unit/CncMachineFactoryTests.cs` - `.paul/ISSUES.md` - `.paul/STATE.md` - `.paul/ROADMAP.md` - `.paul/paul.json` - `.paul/phases/16-fagor-ftp/16-02-PLAN.md` (questo file) - `.paul/phases/16-fagor-ftp/16-02-SUMMARY.md` ## Vincoli - Nessuna modifica `.csproj` (file già listati in v0.6 16-01) - Pattern Siemens preservato come reference (no cross-impact) - Tests esistenti pre-refactor preservati o migrati esplicitamente