Phase 06 complete: - Namespace renamed in 62 .cs files (namespace + using directives) - AssemblyName + RootNamespace updated in csproj files - FanucProgramManager.csproj → NcProgramManager.csproj - FanucProgramManager.sln → NcProgramManager.sln - FanucProgramManager.Tests/ → NcProgramManager.Tests/ - FANUCMachine.cs deleted (dead code, zero references) Fanuc-prefixed class names kept (FanucMachine, FanucProgram, IFanucMachine) — manufacturer identifiers, not project names. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3.8 KiB
3.8 KiB
Project State
Project Reference
See: .paul/PROJECT.md (updated 2026-05-17)
Core value: Machinists transfer CNC programs to/from any controller without manual steps or internet Current focus: v0.1 complete — ready for next milestone planning
Current Position
Milestone: v0.2 NcProgramManager Phase: 1 of 4 (06-rename-cleanup) — Complete Plan: 06-01 unified Status: Phase 06 complete, ready to plan Phase 07 Last activity: 2026-05-17 — Phase 06 rename-cleanup unified
Progress:
- Milestone v0.1: [██████████] 100% (complete)
- Milestone v0.2: [██░░░░░░░░] 25%
- Phase 06: [██████████] 100%
Loop Position
Current loop state:
PLAN ──▶ APPLY ──▶ UNIFY
✓ ✓ ✓ [Loop complete — ready for next PLAN]
What Was Built (v0.1 Multi-CN Release)
Phase 1 — CNC Abstraction
- Namespace:
Fanuc_integration.Cnc.*→FanucProgramManager.Cnc.*(29 files) IFocasDialectextended:UploadStart/DownloadStartacceptshort fileTypeIFanucMachinecreated: extendsICncMachinewith tool offset + work zero R/WCncManufacturerenum: Fanuc, Heidenhain, Siemens, Mitsubishi- All 29
Cnc/**/*.csfiles added to csproj
Phase 2 — Heidenhain LSV2
HeidenhainConnectionConfig— IP, port 19000, credentials, timeoutLsv2Client— TCP framing, CRC-16/CCITT, login (SELECT+LOG_IN), ReceiveFile/SendFileHeidenhainMachine : ICncMachine— RunGuardedAsync pattern, state machine
Phase 3 — Siemens + Mitsubishi FTP
SiemensConnectionConfig/SiemensFtpClient/SiemensMachine : ICncMachineMitsubishiConnectionConfig/MitsubishiFtpClient/MitsubishiMachine : ICncMachine
Phase 4 — Wiring
CncMachineFactory— creates rightICncMachinefromInputArgsInputArgs— addedmanufacturer,username,passwordfieldsProgram.cs— full rewrite usingICncMachine; Fanuc 3-file viaIFanucMachinecast
Phase 5 — NC Validator
ValidationSeverity/ValidationError/ValidationResultmodel typesINcProgramValidator+NcProgramValidator(5 universal + per-manufacturer rules)- Validator injected into all 4 machine classes; upload blocked on Error severity
NcProgramValidatorTests— 30+ NUnit tests
Test Infrastructure
FanucProgramManager.Tests/— NUnit 3.13.3 + Moq 4.18.4, .NET 4.7.2FtpServerStub+Lsv2ServerStub— in-process TCP stubs- Unit + integration tests; Fanuc FOCAS tests
[Ignore]d (Windows-only DLL)
CLI Args (v0.1)
-manufacturer=fanuc|heidenhain|siemens|mitsubishi(default: fanuc)-username=(Heidenhain/Siemens/Mitsubishi)-password=(Heidenhain/Siemens/Mitsubishi)
Accumulated Context
Decisions
- .NET 4.7.2 locked — max compatibility
- Offline-only license check (AES, unchanged)
- Heidenhain: LSV2 port 19000, needs real hardware testing
- Siemens: FTP
/_N_MPF_DIR/, needs Sinumerik FTP option enabled on machine #= Warning in Fanuc/Mitsubishi — macro variable indicator- Constructor injection for validator: internal ctor accepts mock — testability without Windows DLL
Deferred Issues
- License system: hardcoded AES key/IV — v0.2 target (hardware fingerprint + encrypted file)
- Heidenhain:
ReadActiveProgramAsync/SelectMainProgramnot implemented - Siemens: same as Heidenhain
- Build + integration not verifiable on Linux (fwlib32 Windows-only)
Blockers/Concerns
None — code complete, pending hardware testing on real machines.
Session Continuity
Last session: 2026-05-17 Stopped at: Phase 06 complete — rename-cleanup unified Next action: /paul:plan for Phase 07 (license-core) Resume file: .paul/phases/06-rename-cleanup/06-01-SUMMARY.md
STATE.md — Updated after every significant action