--- phase: 10-readme-docs plan: 01 type: execute wave: 1 depends_on: [] files_modified: - README.md - ~/Documents/mine/c#/LicenseGenerator/README.md autonomous: true --- ## Goal Write Italian-language README for both repos: NcProgramManager (operator-facing — what it does, CLI args, license setup) and LicenseGenerator (vendor-facing — key pair generation, license issuance workflow). ## Purpose Operators and integrators need setup and usage docs in Italian. The license workflow spans both tools, so each README must describe its role in the full chain. ## Output - `README.md` in NcProgramManager repo root - `README.md` in LicenseGenerator repo root (`~/Documents/mine/c#/LicenseGenerator/`) ## Project Context @.paul/PROJECT.md @.paul/STATE.md ## Source Files @Licensing/LicenseValidator.cs @Program.cs @InputArgs.cs ## AC-1: NcProgramManager README covers all CLI args and license setup ```gherkin Given an operator reading NcProgramManager/README.md When they follow the instructions Then they can place license.lic next to the EXE and run the tool with correct args for their CNC manufacturer ``` ## AC-2: LicenseGenerator README covers full vendor license issuance workflow ```gherkin Given a vendor reading LicenseGenerator/README.md When they follow the instructions Then they can run keygen once, get fingerprint from customer machine, sign and deliver license.lic ``` ## AC-3: Both READMEs written in Italian ```gherkin Given either README When read by an Italian-speaking user Then all prose, section headers, and instructions are in Italian (technical terms and CLI args remain in English) ``` Task 1: Write NcProgramManager README in Italian README.md Create `README.md` at NcProgramManager repo root. Italian prose throughout. Keep CLI args, file names, and code blocks in English. **Sections:** **# NcProgramManager** One-paragraph description: software per trasferire programmi CNC da/verso controller (Fanuc FOCAS, Heidenhain LSV2, Siemens Sinumerik, Mitsubishi FTP). Console EXE Windows, funziona offline. **## Requisiti** - Windows (qualsiasi versione che supporti .NET 4.7.2) - .NET Framework 4.7.2 installato - File `license.lic` valido (rilasciato dal fornitore) **## Licenza** Explain: place `license.lic` in same folder as `NcProgramManager.exe`. Without it, software refuses to start. To obtain license: contact vendor with machine fingerprint (obtained via LicenseGenerator fingerprint command). **## Utilizzo** Show CLI arg table: | Parametro | Valori | Descrizione | | `-manufacturer=` | `fanuc` / `heidenhain` / `siemens` / `mitsubishi` | Tipo di controller (default: fanuc) | | `-azione=` | `Scarica` / `Invia` / ... | Azione da eseguire | | `-ip=` | indirizzo IP | IP del controller CNC | | `-porta=` | numero porta | Porta di connessione | | `-username=` | nome utente | Solo per Heidenhain/Siemens/Mitsubishi | | `-password=` | password | Solo per Heidenhain/Siemens/Mitsubishi | **## Esempi** Show 2-3 concrete examples with real-looking args for Fanuc and Heidenhain. **## Controller supportati** Brief table: Fanuc (FOCAS, 32-bit DLL), Heidenhain (LSV2, porta 19000), Siemens Sinumerik (FTP, `/_N_MPF_DIR/`), Mitsubishi (FTP, porta 21, `/PRG/`). **## Validazione programma NC** One paragraph: before upload, NcProgramManager validates the NC program. Errors block the transfer. Warnings are logged but don't block. Avoid: mentioning internal class names, test infrastructure, or implementation details. `cat README.md` — file exists, has all sections, Italian prose, CLI table present. `grep "\-manufacturer" README.md` → match found. AC-1 and AC-3 satisfied: README covers CLI args, license setup, all in Italian. Task 2: Write LicenseGenerator README in Italian ~/Documents/mine/c#/LicenseGenerator/README.md Create `README.md` at LicenseGenerator repo root. Vendor-facing — assumes technical user. Italian prose. Keep commands and file names in English. **Sections:** **# LicenseGenerator** One-paragraph description: strumento per il fornitore per generare coppie di chiavi RSA e firmare le licenze per NcProgramManager. Non va distribuito ai clienti. **## Requisiti** - `keygen` e `sign`: .NET 4.7.2 (Windows) o Mono 6+ (Linux/Mac) - `fingerprint`: Windows obbligatorio (usa WMI) **## Primo avvio — Generazione della coppia di chiavi** Step-by-step: 1. Run `LicenseGenerator.exe keygen` 2. Saves `private.key.xml` in current dir — **mantenere segreto, non condividere mai** 3. Prints public key XML to stdout — copy and paste into `LicenseValidator.cs` (field `PublicKeyXml`) and recompile NcProgramManager Warn clearly: if private.key.xml is lost, must generate a new key pair and re-ship NcProgramManager with new public key. **## Workflow per emettere una licenza** Numbered steps: 1. Il cliente esegue `LicenseGenerator.exe fingerprint` sulla macchina di destinazione (Windows) e invia il testo stampato al fornitore 2. Il fornitore esegue: `LicenseGenerator.exe sign -key=private.key.xml -fingerprint= -out=license.lic` 3. Il fornitore invia `license.lic` al cliente 4. Il cliente copia `license.lic` nella stessa cartella di `NcProgramManager.exe` **## Comandi** Table: | Comando | Descrizione | | `LicenseGenerator.exe keygen` | Genera coppia RSA 2048-bit. Salva `private.key.xml`, stampa chiave pubblica XML | | `LicenseGenerator.exe fingerprint` | Legge l'impronta hardware della macchina (solo Windows) | | `LicenseGenerator.exe sign -key= -fingerprint= [-out=]` | Firma l'impronta e scrive il file licenza | **## Sicurezza** Short section: `private.key.xml` must never be committed to git (already in .gitignore), never shared with customers, stored securely. Anyone with the private key can forge licenses. Avoid: mentioning internal C# class names, RSA algorithm details, or test setup. `cat ~/Documents/mine/c#/LicenseGenerator/README.md` — exists, has all sections. `grep "fingerprint" ~/Documents/mine/c#/LicenseGenerator/README.md` → match found. AC-2 and AC-3 satisfied: README covers keygen, fingerprint, sign workflow, all in Italian. ## DO NOT CHANGE - Any `.cs` source files in either repo - `.paul/` directory contents (except this plan's phase files) - `NcProgramManager.sln`, `LicenseGenerator.sln`, any `.csproj` ## SCOPE LIMITS - Italian prose only — no English prose outside of technical terms, CLI args, code blocks - No code changes in either repo - Do not add build instructions (not relevant for end users — binary is distributed) Before declaring plan complete: - [ ] `README.md` exists at NcProgramManager repo root - [ ] `~/Documents/mine/c#/LicenseGenerator/README.md` exists - [ ] Both files contain Italian prose - [ ] NcProgramManager README has CLI arg table with all 6 args - [ ] LicenseGenerator README has numbered license issuance workflow - [ ] Both READMEs mention `license.lic` - Both READMEs written and saved - Italian throughout (technical terms/commands in English) - Operator can follow NcProgramManager README to set up and run the tool - Vendor can follow LicenseGenerator README to issue a license After completion, create `.paul/phases/10-readme-docs/10-01-SUMMARY.md`