# 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.
