Operator-facing README covering CLI args, license setup, supported controllers, and NC validation. PAUL phase 10 complete. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
194 lines
7.7 KiB
Markdown
194 lines
7.7 KiB
Markdown
---
|
|
phase: 10-readme-docs
|
|
plan: 01
|
|
type: execute
|
|
wave: 1
|
|
depends_on: []
|
|
files_modified:
|
|
- README.md
|
|
- ~/Documents/mine/c#/LicenseGenerator/README.md
|
|
autonomous: true
|
|
---
|
|
|
|
<objective>
|
|
## 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/`)
|
|
</objective>
|
|
|
|
<context>
|
|
## Project Context
|
|
@.paul/PROJECT.md
|
|
@.paul/STATE.md
|
|
|
|
## Source Files
|
|
@Licensing/LicenseValidator.cs
|
|
@Program.cs
|
|
@InputArgs.cs
|
|
</context>
|
|
|
|
<acceptance_criteria>
|
|
|
|
## 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)
|
|
```
|
|
|
|
</acceptance_criteria>
|
|
|
|
<tasks>
|
|
|
|
<task type="auto">
|
|
<name>Task 1: Write NcProgramManager README in Italian</name>
|
|
<files>README.md</files>
|
|
<action>
|
|
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.
|
|
</action>
|
|
<verify>
|
|
`cat README.md` — file exists, has all sections, Italian prose, CLI table present.
|
|
`grep "\-manufacturer" README.md` → match found.
|
|
</verify>
|
|
<done>AC-1 and AC-3 satisfied: README covers CLI args, license setup, all in Italian.</done>
|
|
</task>
|
|
|
|
<task type="auto">
|
|
<name>Task 2: Write LicenseGenerator README in Italian</name>
|
|
<files>~/Documents/mine/c#/LicenseGenerator/README.md</files>
|
|
<action>
|
|
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=<testo-cliente> -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=<file> -fingerprint=<fp> [-out=<file.lic>]` | 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.
|
|
</action>
|
|
<verify>
|
|
`cat ~/Documents/mine/c#/LicenseGenerator/README.md` — exists, has all sections.
|
|
`grep "fingerprint" ~/Documents/mine/c#/LicenseGenerator/README.md` → match found.
|
|
</verify>
|
|
<done>AC-2 and AC-3 satisfied: README covers keygen, fingerprint, sign workflow, all in Italian.</done>
|
|
</task>
|
|
|
|
</tasks>
|
|
|
|
<boundaries>
|
|
|
|
## 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)
|
|
|
|
</boundaries>
|
|
|
|
<verification>
|
|
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`
|
|
</verification>
|
|
|
|
<success_criteria>
|
|
- 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
|
|
</success_criteria>
|
|
|
|
<output>
|
|
After completion, create `.paul/phases/10-readme-docs/10-01-SUMMARY.md`
|
|
</output>
|