M2 "Machine Management UX": full N-machine management from UI plus runtime resilience. All 3 screens now live (dashboard, detail, config). Core: - PollingEngine offline detection: consecutive-fail threshold emits a synthetic Disconnected snapshot (no-spam, resets on recovery). - MachineMonitor dynamic API: AddOrUpdateMachineAsync / RemoveMachineAsync start/restart/stop a machine's polling live (no app restart); idempotent. - MachineMonitor.AvailableProtocols exposes loaded protocol ids. App: - Machine detail screen: full current snapshot, reachable from dashboard row, live-refreshing, Back nav. - Config screen: add / edit / delete machines with validation; Save upserts + reloads monitor live; Delete two-state confirm + stops polling. - Dashboard: "Add machine" button, per-row Details, reload after mutation. Repo hygiene: - Untrack stray src/Junction.App/plugins/ build artifact (real output goes to bin/*/plugins via build target); add to .gitignore. PAUL: initialized .paul/ (PROJECT/ROADMAP/STATE + paul.json) as cross-session system-of-record. v0.1 shipped, v0.2 complete, v0.3 OPC UA next. Build 0 warn/0 err (net48 + net8.0). Tests: 125 unit + 2 docker integration. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.5 KiB
Roadmap: Junction
Milestones
| Version | Name | Phases | Status | Completed |
|---|---|---|---|---|
| v0.1 | Walking Skeleton (MTConnect) | 1 | ✅ Shipped | 2026-07-21 |
| v0.2 | Machine Management UX | 2 | 🚧 Complete (commit pending) | - |
| v0.3 | OPC UA Protocol | 3 | 📋 Planned | - |
| v0.4 | Fanuc FOCAS Protocol | 4 | 📋 Planned | - |
| v0.5 | History & Trends | 5 | 📋 Planned | - |
🚧 Active Milestone: v0.2 Machine Management UX
Goal: User fully manages a fleet of N machines from the UI (add/edit/delete + detail view), with reliable online/offline state and live monitor reload. Status: Phase 2 complete (commit pending) Progress: [██████████] 100%
Phase 2: Machine Management UX
Goal: Detail screen, config CRUD, offline detection, dynamic monitor reload. Depends on: Phase 1 Research: Unlikely (internal patterns)
Plans:
- 02-A: Core — offline detection (fail-threshold → Disconnected) + dynamic monitor API (AddOrUpdate/Remove machine live)
- 02-B: App — machine detail screen (full snapshot) + dashboard row-click nav + back
- 02-C: App — config add/edit/delete screen + repo.Upsert + live monitor reload; Core AvailableProtocols
📋 Planned Milestone: v0.3 OPC UA Protocol
Goal: Second protocol plugin (OPC UA) proving the multi-protocol architecture. Prerequisite: v0.2 complete Estimated phases: 1
| Phase | Focus | Research |
|---|---|---|
| 3 | OPC UA driver plugin (endpoint/nodes → MachineSnapshot), config keys, tests | Likely (OPC UA SDK on net48) |
📋 Planned Milestone: v0.4 Fanuc FOCAS Protocol
Goal: Fanuc FOCAS plugin via native fwlib32 (P/Invoke, Windows-only). Prerequisite: v0.3 complete Estimated phases: 1
| Phase | Focus | Research |
|---|---|---|
| 4 | FOCAS P/Invoke driver, native lib lifetime/marshalling, Windows-only guard | Likely (native interop; use dotnet:dotnet-pinvoke) |
📋 Planned Milestone: v0.5 History & Trends
Goal: Persist time-series, show trends in detail page. Prerequisite: v0.4 (or parallelizable) Estimated phases: 1
| Phase | Focus | Research |
|---|---|---|
| 5 | History tables, retention, trend charts in detail view | Unlikely |
✅ Completed Milestones
v0.1 Walking Skeleton (Phase 1) — Shipped 2026-07-21
Phase 1: Walking Skeleton + MTConnect
Goal: One configured machine polled by MTConnect plugin against docker mock, last datum live on Avalonia dashboard. net48 + net8.0 build on Linux. Plans: all complete (T1–T30 + unify), 115 tests + 2 docker integration, live e2e proven.
- Solution scaffold, csproj set, Directory.Build.props, global.json
- Domain: Result, models, IProtocolDriver/Factory, IMachineRepository, PluginManifest
- Core: PollingEngine, PluginLoader (Assembly.LoadFrom), MachineMonitor, DI
- Persistence: schema, SqliteMachineRepository (Dapper), swap seam
- MTConnect: HTTP driver + namespace-version-agnostic parser (1.7 + 2.0) + plugin manifest
- App: Avalonia shell (net48;net8.0), DI+NLog, live dashboard, seed machine, start monitor
- Docker MTConnect mock; canned XML fixtures; integration test (docker-gated)
- Committed + pushed to origin/main (
507753f)
Commit: 507753f — init: scaffold Junction multi-protocol machine monitor (M1 walking skeleton)
Roadmap created: 2026-07-21 Last updated: 2026-07-21