# Phase 16-02 — Summary **Status:** Complete **Completed:** 2026-05-25 ## Risultato Critical bug Fagor name validator vs `.nc` extension risolto. `ñ` literal escapato. Behavior change Siemens/Heidenhain lockato con 6 test nuovi. Factory test Fagor aggiunto. ## Issue identificati ma deferiti (ISS-012..ISS-017) | ID | Tema | Effort | |----|------|--------| | ISS-012 | Fagor `ReadActiveProgramAsync`/`SelectMainProgram` non implementate | Substantial | | ISS-013 | `Program.Invia` accoppia `FanucProgram` a tutti i produttori | Medium 1-2h | | ISS-014 | `ResolvePath` null-folder NRE pattern condiviso | Quick 10min | | ISS-015 | Source file encoding rischio codepage Windows | Medium | | ISS-016 | Validator riceve `path` se `program.Name` null | Quick | | ISS-017 | `FagorFtpClient.Ping` swallow senza log | Quick | ## Test coverage v0.6 finale - 12 unit test `FagorMachine` (10 mock + 2 validator reale) - 6 integration test Fagor (5 stub + 1 hardware skip) - 12 nuovi unit test `NcProgramValidator` Fagor (8 originali + 4 fixup) - 6 nuovi unit test lock Siemens/Heidenhain - 1 test factory Fagor - 3 test pre-existing migrati Siemens→Fanuc (16-01) ## Build verification Non eseguita in ambiente Linux (no dotnet toolchain). Compilazione e run test richiede ambiente Windows con MSBuild/VS o `dotnet build`. Sintassi C# 7.3 verificata manualmente. ## Decisioni chiave 1. Nome Fagor: stem alphanumerico + estensione separata. Default `.nc` compatibile. 2. `ñ` escape su tutti i sorgenti per `ñ` (codice + test + messaggi) 3. Behavior change validator gating Siemens/Heidenhain confermato come voluto. Lockato con 6 test esplicit. 4. CLI bug Fanuc-parsing (Critical #2) deferito a ISS-013 — pre-existing, non Fagor-specific, fix in phase separata.